[
Key.new("grammar.mode", type: :symbol, default: :default, owner: :grammar_contract, policy: :fixed,
allowed_values: %i[default extended], cli_option: :mode),
Key.new("parser.algorithm", type: :symbol, default: :lalr, owner: :grammar_contract, policy: :fixed,
allowed_values: %i[slr lalr ielr lr1], cli_option: :algorithm),
Key.new("parser.entries", type: :symbol, default: :shared, owner: :grammar_contract, policy: :fixed,
allowed_values: %i[shared isolated], cli_option: :entry_isolation),
Key.new("cst.trivia", type: :symbol, default: :leading, owner: :grammar_contract, policy: :fixed,
allowed_values: %i[leading balanced drop], cli_option: :cst_trivia),
Key.new("parser.superclass", type: :optional_string, default: nil, owner: :grammar_contract, policy: :fixed,
cli_option: :superclass),
Key.new("actions.omit_calls", type: :optional_boolean, default: nil, owner: :grammar_contract,
policy: :fixed, cli_option: :omit_actions),
Key.new("table.representation", type: :symbol, default: :compact, owner: :project_build, policy: :build,
allowed_values: %i[plain compact], cli_option: :table),
Key.new("runtime.embedded", type: :boolean, default: false, owner: :project_build, policy: :build,
cli_option: :embedded),
Key.new("build.debug", type: :boolean, default: false, owner: :project_build, policy: :build,
cli_option: :debug),
Key.new("source.line_mapping", type: :symbol, default: :actions, owner: :project_build, policy: :build,
allowed_values: %i[actions all none], cli_option: :line_convert),
Key.new("build.frozen_strings", type: :boolean, default: false, owner: :project_build, policy: :build,
cli_option: :frozen),
Key.new("build.executable", type: :optional_string, default: nil, owner: :project_build, policy: :build,
cli_option: :executable)
].freeze