Controls & camera

PC console

pc-console · an adoption of Control options, version 1

Tests included

Use in your game

Opens the authoring tool with these answers and settings already filled in. You still add your game's own rules and tuning.

What is in the ZIP

The ZIP holds the adoption and its acceptance tests. In the authoring tool, choose Add contract and pick this ZIP. If you keep your design as files, put them in contracts/.

The contract behind it

Covers which physical inputs produce each action on every platform. It also covers complete input methods, named control presets, remapping, press styles, simpler alternatives, and device-motion inputs. Action prompts, input timing help, shared-action choice, and event order stay elsewhere.

Read the full Control options contract →

Questions

The supplied answer is marked on each question. Pick other answers to see what changes. Nothing is saved here: the ZIP and the authoring tool use the supplied answers.

How can players normally change the controls?

Asked when
the platform control sets list has at least one row.
If not asked
With no platform control set, this adoption makes no game-wide remapping promise.
Choices for How can players normally change the controls?
The controls cannot be changed in the game. A puzzle game always keeps rotate on the space bar.

No player-facing setting changes an action's physical input or press style.

Existing controls can only exchange actions. A platformer can swap jump and dash, but an unused button cannot receive either action.

A supported binding can exchange its current action with another supported binding; no action can move independently to an otherwise unused input.

Players can choose only from named control sets. An action game offers Default and Alternate layouts without individual button changes.

The player may select a complete declared preset but cannot change one binding independently inside that preset. The platform offers at least two presets whose availability is starting-and-selectable or player-selectable.

Supplied answer Any action can move to any supported input. A strategy game can move end turn from Enter to an unused mouse button.

Every covered action can be assigned independently to any supported remappable input, including an otherwise unassigned input; conflicts are resolved visibly before use.

Both the input and the press style can change. An adventure game can move interact to another button and change a hold into one press.

Every covered action can change to a supported input and to any press style that its cited platform rule offers for that action.

Why this is asked

A platform may offer fixed controls, named layouts, or free changes. This answer supplies the ordinary choice before a platform states another one.

What normally happens when an action needs a difficult press?

Asked when
the platform control sets list has at least one row.
If not asked
With no platform control set, this adoption makes no game-wide demanding-input promise.
Choices for What normally happens when an action needs a difficult press?
Supplied answer No action needs a demanding press. A card game plays a selected card with one ordinary activation.

No covered binding requires timed, held, rapid, repeated, double, simultaneous, directional-sequence, or device-motion input as its only route to the action.

Every demanding press has a distinct simpler route with no setting change. A repair game offers a separate tap button beside its hold-to-repair control.

Every covered demanding binding has a declared alternative that performs the same action without configuration.

A setting can make the press easier. A racing game can change a held pit command into one ordinary press.

A player-facing setting replaces each covered demanding press with a declared easier press style before play uses the binding.

The demanding press remains required. A rhythm special still needs two buttons together and has no simpler route from this contract.

The covered demanding binding has no simpler alternative or press-style setting promised by this adoption.

Why this is asked

Holds, rapid presses, double presses, and button combinations can block an otherwise known action. This answer supplies the ordinary choice.

Numbersno numbers

This contract has no numbers to set.

Rules1 rule

A rule is a check between the numbers. Validation reports a rule that fails.

  • Controls that let players change a press style cannot also require every demanding press exactly as written.

    Forbidden when Remapping default is Action and press style, and Demanding input default is Required as written.

Lists4 lists

Each list holds the rows this adoption supplies. A list can be empty.

Platform control sets

platform-control-sets

IdPlatform declared inMethods declared inInput method coverageRemappingSettings rule declared in
pcplatforms.pccontrols.keyboardone-method-covers-alluse-game-defaultcontrols.pc-remap-menu
console-gamepadplatforms.consolecontrols.gamepadone-method-covers-allpresets-onlycontrols.console-preset-menu

Control presets

control-presets

IdPlatform control setLabelAvailabilitySelection rule declared in
keyboard-startpcKeyboard Startstarting-and-selectablecontrols.keyboard-start
gamepad-defaultconsole-gamepadDefault Layoutstarting-and-selectablecontrols.gamepad-default
gamepad-alternateconsole-gamepadAlternate Layoutplayer-selectablecontrols.gamepad-alternate

Action bindings

action-bindings

IdPlatform control setPresetContext declared inAction declared inPhysical input declared inAction inputPress styleMotion useDemanding input
pc-jump-spacepckeyboard-startmovement.jumpcontrols.spacepressno-motionuse-game-default
pc-interact-epckeyboard-startworld.interactcontrols.e-keypressno-motionuse-game-default
default-jump-southconsole-gamepadgamepad-defaultmovement.jumpcontrols.south-buttonpressno-motionuse-game-default
default-interact-westconsole-gamepadgamepad-defaultworld.interactcontrols.west-buttonpressno-motionuse-game-default
alternate-jump-westconsole-gamepadgamepad-alternatemovement.jumpcontrols.west-buttonpressno-motionuse-game-default
alternate-interact-southconsole-gamepadgamepad-alternateworld.interactcontrols.south-buttonpressno-motionuse-game-default

Simpler inputs

simpler-inputs

This adoption declares no simpler inputs.

Test inputsscope and seeds

Some tests need a scope or seeds from the adoption before they can run.

This adoption supplies none; every test uses its defaults.

Acceptance tests102 tests apply

The contract comes with 64 tests. A test that runs once per row is counted once for each row. Tests that do not apply to these answers are still listed, with the reason.

control-options-vocabulary

control options uses control sets, presets, bindings, action inputs, and demanding inputs

scenarioonce

Applies to pc-console.

A control set is the complete current mapping for one platform and input method. A preset is an immutable named source set that can become current. A binding joins one physical input and press style to one candidate action. One physical activation emits one action input carrying every matched binding's action. A demanding input is a timed, held, rapid, repeated, double, simultaneous, input-sequence, or required-device-motion input.

Test steps and diagnostics
Given

the pc-console adoption and its cited control rules

When
  • the control path is identified from platform selection through physical activation
Then
  • a control set is the complete current mapping for one platform and input method
  • a preset is an immutable named source set that can become current
  • a binding joins one physical input and press style to one candidate action
  • one physical activation emits one action input carrying every matched binding's action
  • a demanding input is a timed, held, rapid, repeated, double, simultaneous, input-sequence, or required-device-motion input
Diagnostics
  • pc-console-current-set
  • pc-console-action-input-log

platform-row-selects-exactly-when-cited · pc

pc is selected exactly for its cited platform and devices

scenarioper platform-control-sets row

Applies to the pc row.

Platform row pc is the one selected row exactly on the platform, edition, and supported devices at platforms.pc. It is not selected where that citation excludes it. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

platform-control-set row pc and the Fixed platform rule at platforms.pc

When
  • the game runs on each cited platform, edition, and supported device combination and on the nearest combination the citation excludes
Then
  • pc is the one selected row for every combination the citation covers
  • pc is not selected for a combination the citation excludes
  • the test leaves the covered combinations to platforms.pc and restates nothing from it
Diagnostics
  • pc-console-platform-selection

platform-row-selects-exactly-when-cited · console-gamepad

console-gamepad is selected exactly for its cited platform and devices

scenarioper platform-control-sets row

Applies to the console-gamepad row.

Platform row console-gamepad is the one selected row exactly on the platform, edition, and supported devices at platforms.console. It is not selected where that citation excludes it. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

platform-control-set row console-gamepad and the Fixed platform rule at platforms.console

When
  • the game runs on each cited platform, edition, and supported device combination and on the nearest combination the citation excludes
Then
  • console-gamepad is the one selected row for every combination the citation covers
  • console-gamepad is not selected for a combination the citation excludes
  • the test leaves the covered combinations to platforms.console and restates nothing from it
Diagnostics
  • pc-console-platform-selection

starting-control-set-follows-platform-rule · pc

pc starts with the control set chosen by its cited rule

scenarioper platform-control-sets row

Applies to the pc row.

On first play for pc, the complete starting control set comes from controls.pc-remap-menu, and every first binding lookup reads it as current. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

a first play on platform row pc and the Fixed settings rule at controls.pc-remap-menu

When
  • the current set is first established
Then
  • the complete starting control set is the one selected through controls.pc-remap-menu
  • every first binding lookup reads that current set
  • the test restates nothing from the cited rule
Diagnostics
  • pc-console-current-set

starting-control-set-follows-platform-rule · console-gamepad

console-gamepad starts with the control set chosen by its cited rule

scenarioper platform-control-sets row

Applies to the console-gamepad row.

On first play for console-gamepad, the complete starting control set comes from controls.console-preset-menu, and every first binding lookup reads it as current. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

a first play on platform row console-gamepad and the Fixed settings rule at controls.console-preset-menu

When
  • the current set is first established
Then
  • the complete starting control set is the one selected through controls.console-preset-menu
  • every first binding lookup reads that current set
  • the test restates nothing from the cited rule
Diagnostics
  • pc-console-current-set

preset-selection-copies-complete-set · keyboard-start

preset keyboard-start becomes current through its cited route

scenarioper control-presets row

Applies to the keyboard-start row.

Preset keyboard-start, labeled Keyboard Start, belongs to pc. Through controls.keyboard-start, it is current on first play and remains selectable afterward. Selection copies every matching binding into one complete current set and leaves the source preset unchanged. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

preset keyboard-start labeled Keyboard Start for platform row pc and the Fixed route at controls.keyboard-start

When
  • the cited route is used and the current set is inspected before and after selection
Then
  • keyboard-start is current on first play and remains selectable afterward
  • selection copies every matching action-binding row into one complete current set
  • the source preset remains unchanged
  • the test restates nothing from controls.keyboard-start
Diagnostics
  • pc-console-current-set
  • pc-console-change-log

preset-selection-copies-complete-set · gamepad-default

preset gamepad-default becomes current through its cited route

scenarioper control-presets row

Applies to the gamepad-default row.

Preset gamepad-default, labeled Default Layout, belongs to console-gamepad. Through controls.gamepad-default, it is current on first play and remains selectable afterward. Selection copies every matching binding into one complete current set and leaves the source preset unchanged. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

preset gamepad-default labeled Default Layout for platform row console-gamepad and the Fixed route at controls.gamepad-default

When
  • the cited route is used and the current set is inspected before and after selection
Then
  • gamepad-default is current on first play and remains selectable afterward
  • selection copies every matching action-binding row into one complete current set
  • the source preset remains unchanged
  • the test restates nothing from controls.gamepad-default
Diagnostics
  • pc-console-current-set
  • pc-console-change-log

preset-selection-copies-complete-set · gamepad-alternate

preset gamepad-alternate becomes current through its cited route

scenarioper control-presets row

Applies to the gamepad-alternate row.

Preset gamepad-alternate, labeled Alternate Layout, belongs to console-gamepad. Through controls.gamepad-alternate, it does not become current before selection and becomes current when the player selects it. Selection copies every matching binding into one complete current set and leaves the source preset unchanged. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

preset gamepad-alternate labeled Alternate Layout for platform row console-gamepad and the Fixed route at controls.gamepad-alternate

When
  • the cited route is used and the current set is inspected before and after selection
Then
  • gamepad-alternate does not become current before selection and becomes current when the player selects it
  • selection copies every matching action-binding row into one complete current set
  • the source preset remains unchanged
  • the test restates nothing from controls.gamepad-alternate
Diagnostics
  • pc-console-current-set
  • pc-console-change-log

input-method-coverage-holds · pc

pc input methods cover its actions as promised

scenarioper platform-control-sets row

Applies to the pc row.

Audit class: observer-judged. An observer, not the running game, judges this in each preset-derived current set pc can make current. For every action bound on the platform, under the complete methods and any required switch at controls.keyboard: the one complete method named by the citation performs every action bound on the platform without another method. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

platform row pc, every action bound on that platform, and the complete methods and any required switch at controls.keyboard

When
  • in each preset-derived current set the platform can make current, an observer performs every action bound on the platform using the named method or methods
Then
  • the one complete method named by the citation performs every action bound on the platform without another method
  • an observer, not the running game, judges this
  • the test restates nothing from the cited rule
Diagnostics
  • pc-console-pc-observer-result

input-method-coverage-holds · console-gamepad

console-gamepad input methods cover its actions as promised

scenarioper platform-control-sets row

Applies to the console-gamepad row.

Audit class: observer-judged. An observer, not the running game, judges this in each preset-derived current set console-gamepad can make current. For every action bound on the platform, under the complete methods and any required switch at controls.gamepad: the one complete method named by the citation performs every action bound on the platform without another method. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

platform row console-gamepad, every action bound on that platform, and the complete methods and any required switch at controls.gamepad

When
  • in each preset-derived current set the platform can make current, an observer performs every action bound on the platform using the named method or methods
Then
  • the one complete method named by the citation performs every action bound on the platform without another method
  • an observer, not the running game, judges this
  • the test restates nothing from the cited rule
Diagnostics
  • pc-console-console-gamepad-observer-result

remapping-fixed-override

Row.id keeps fixed bindings by its row answer

scenarioper platform-control-sets row

Does not apply to pc-console: no row in platform-control-sets matches remapping fixed bindings.

remapping-fixed-default

Row.id keeps fixed bindings by the game default

scenarioper platform-control-sets row

Does not apply to pc-console: remapping default is any action any input, not fixed bindings.

remapping-swap-override

Row.id permits only exchanges by its row answer

scenarioper platform-control-sets row

Does not apply to pc-console: no row in platform-control-sets matches remapping swap only.

remapping-swap-default

Row.id permits only exchanges by the game default

scenarioper platform-control-sets row

Does not apply to pc-console: remapping default is any action any input, not swap only.

remapping-presets-override · console-gamepad

console-gamepad permits only preset selection by its row answer

scenarioper platform-control-sets row

Applies to the console-gamepad row.

Audit class: observer-judged. An observer, not the running game, judges this. The row overrides the game default: selecting another starting-and-selectable or player-selectable preset through controls.console-preset-menu is accepted, its complete copy becomes current, its new binding performs the action, and the old binding does not. An individual binding change through that route is refused. Every later lookup reads the new current set. A mode-selected preset is entered through its cited mode and asserts nothing in this selection trial. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

two complete selectable declared presets for console-gamepad and the settings route at controls.console-preset-menu

When
  • an observer selects another starting-and-selectable or player-selectable preset through the settings route, performs an action whose binding differs, and then tries to change one binding through that route
Then
  • preset selection is accepted and its complete copy becomes current
  • the new binding performs the action and the old binding does not
  • the individual binding change is refused and leaves the current set unchanged
  • every later binding lookup reads the new current set
  • a mode-selected preset is entered through its cited mode and asserts nothing in this selection trial
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-console-gamepad-observer-result
  • pc-console-change-log
  • pc-console-current-set
  • pc-console-action-input-log

remapping-presets-default

Row.id permits only preset selection by the game default

scenarioper platform-control-sets row

Does not apply to pc-console: remapping default is any action any input, not presets only.

remapping-free-override

Row.id permits free assignment by its row answer

scenarioper platform-control-sets row

Does not apply to pc-console: no row in platform-control-sets matches remapping any action any input.

remapping-free-default · pc

pc permits free assignment by the game default

scenarioper platform-control-sets row

Applies to the pc row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: every covered action can move independently to every supported remappable input, including an unused one; conflicts resolve visibly before use; the new binding performs the action and the old one does not. After an accepted change, the contract makes each binding row's promises follow its action to the input the current set assigns. An unsupported assignment is refused. Each accepted complete result becomes current for every later lookup. The route is at controls.pc-remap-menu; the test restates nothing from it.

Test steps and diagnostics
Given

each covered action, each supported remappable input including an unused one, and controls.pc-remap-menu for pc

When
  • an observer independently assigns an action to each supported input, resolves a conflicting assignment, performs the action, and attempts one unsupported assignment
Then
  • every supported independent assignment is accepted, including assignment to the unused input
  • a conflict is resolved visibly before use
  • the new binding performs the action and the old binding does not
  • after an accepted change, each binding row's promises follow its action to the input the current set assigns
  • the unsupported assignment is refused and leaves the current set unchanged
  • every accepted complete result becomes current for every later lookup
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-pc-observer-result
  • pc-console-change-log
  • pc-console-current-set
  • pc-console-action-input-log

remapping-press-style-override

Row.id permits input and press-style changes by its row answer

scenarioper platform-control-sets row

Does not apply to pc-console: no row in platform-control-sets matches remapping action and press style.

remapping-press-style-default

Row.id permits input and press-style changes by the game default

scenarioper platform-control-sets row

Does not apply to pc-console: remapping default is any action any input, not action and press style.

binding-scope-follows-current-set · pc-jump-space

pc-jump-space exists in its declared control-set scope

scenarioper action-bindings row

Applies to the pc-jump-space row.

Binding pc-jump-space belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to pc's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding pc-jump-space on platform row pc

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-scope-follows-current-set · pc-interact-e

pc-interact-e exists in its declared control-set scope

scenarioper action-bindings row

Applies to the pc-interact-e row.

Binding pc-interact-e belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to pc's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding pc-interact-e on platform row pc

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-scope-follows-current-set · default-jump-south

default-jump-south exists in its declared control-set scope

scenarioper action-bindings row

Applies to the default-jump-south row.

Binding default-jump-south belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to console-gamepad's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding default-jump-south on platform row console-gamepad

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-scope-follows-current-set · default-interact-west

default-interact-west exists in its declared control-set scope

scenarioper action-bindings row

Applies to the default-interact-west row.

Binding default-interact-west belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to console-gamepad's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding default-interact-west on platform row console-gamepad

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-scope-follows-current-set · alternate-jump-west

alternate-jump-west exists in its declared control-set scope

scenarioper action-bindings row

Applies to the alternate-jump-west row.

Binding alternate-jump-west belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to console-gamepad's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding alternate-jump-west on platform row console-gamepad

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-scope-follows-current-set · alternate-interact-south

alternate-interact-south exists in its declared control-set scope

scenarioper action-bindings row

Applies to the alternate-interact-south row.

Binding alternate-interact-south belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to console-gamepad's base or freely remappable set. It exists throughout the selected control set, or only in the cited context where the row names one. A preset or context the row does not name asserts nothing.

Test steps and diagnostics
Given

binding alternate-interact-south on platform row console-gamepad

When
  • the current set is inspected across its reachable control-set and play contexts
Then
  • the binding belongs to its named preset while that preset is current, where the row names one; otherwise it belongs to the platform's base or freely remappable set
  • the binding exists throughout the selected control set, or only in the cited context where the row names one
  • a preset or context the row does not name asserts nothing
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-matches-cited-performance · pc-jump-space

pc-jump-space matches only its cited press performance

scenarioper action-bindings row

Applies to the pc-jump-space row.

For pc-jump-space, when the cited input is pressed under controls.space, one action input carries the action at movement.jump. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding pc-jump-space, action movement.jump, and the physical input, device, and performance at controls.space

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at movement.jump
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.space and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-matches-cited-performance · pc-interact-e

pc-interact-e matches only its cited press performance

scenarioper action-bindings row

Applies to the pc-interact-e row.

For pc-interact-e, when the cited input is pressed under controls.e-key, one action input carries the action at world.interact. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding pc-interact-e, action world.interact, and the physical input, device, and performance at controls.e-key

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at world.interact
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.e-key and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-matches-cited-performance · default-jump-south

default-jump-south matches only its cited press performance

scenarioper action-bindings row

Applies to the default-jump-south row.

For default-jump-south, when the cited input is pressed under controls.south-button, one action input carries the action at movement.jump. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding default-jump-south, action movement.jump, and the physical input, device, and performance at controls.south-button

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at movement.jump
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.south-button and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-matches-cited-performance · default-interact-west

default-interact-west matches only its cited press performance

scenarioper action-bindings row

Applies to the default-interact-west row.

For default-interact-west, when the cited input is pressed under controls.west-button, one action input carries the action at world.interact. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding default-interact-west, action world.interact, and the physical input, device, and performance at controls.west-button

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at world.interact
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.west-button and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-matches-cited-performance · alternate-jump-west

alternate-jump-west matches only its cited press performance

scenarioper action-bindings row

Applies to the alternate-jump-west row.

For alternate-jump-west, when the cited input is pressed under controls.west-button, one action input carries the action at movement.jump. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding alternate-jump-west, action movement.jump, and the physical input, device, and performance at controls.west-button

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at movement.jump
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.west-button and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-matches-cited-performance · alternate-interact-south

alternate-interact-south matches only its cited press performance

scenarioper action-bindings row

Applies to the alternate-interact-south row.

For alternate-interact-south, when the cited input is pressed under controls.south-button, one action input carries the action at world.interact. The nearest non-matching performance emits nothing from this binding. The test names both addresses and restates nothing from them.

Test steps and diagnostics
Given

binding alternate-interact-south, action world.interact, and the physical input, device, and performance at controls.south-button

When
  • the cited input is pressed in the current platform, device, method, and set, then the nearest non-matching performance is attempted
Then
  • the matching performance emits one action input carrying the action at world.interact
  • the non-matching performance emits nothing from this binding
  • the test leaves the physical details to controls.south-button and restates nothing from it
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

binding-context-settles-at-accepted-moment

Row.id settles its context at the accepted moment

scenarioper action-bindings row

Does not apply to pc-console: no matching row in action-bindings has every field this test uses (context-declared-in).

binding-preset-is-current · pc-jump-space

pc-jump-space exists only while preset keyboard-start is current

scenarioper action-bindings row

Applies to the pc-jump-space row.

Under the contract, preset keyboard-start is the starting source set for binding pc-jump-space. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding pc-jump-space assigned to preset keyboard-start

When
  • its cited physical performance occurs while a set derived from keyboard-start is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • pc-jump-space can match while a set derived from keyboard-start is current
  • an accepted change on that current copy does not remove the binding
  • pc-jump-space cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-preset-is-current · pc-interact-e

pc-interact-e exists only while preset keyboard-start is current

scenarioper action-bindings row

Applies to the pc-interact-e row.

Under the contract, preset keyboard-start is the starting source set for binding pc-interact-e. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding pc-interact-e assigned to preset keyboard-start

When
  • its cited physical performance occurs while a set derived from keyboard-start is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • pc-interact-e can match while a set derived from keyboard-start is current
  • an accepted change on that current copy does not remove the binding
  • pc-interact-e cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-preset-is-current · default-jump-south

default-jump-south exists only while preset gamepad-default is current

scenarioper action-bindings row

Applies to the default-jump-south row.

Under the contract, preset gamepad-default is the starting source set for binding default-jump-south. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding default-jump-south assigned to preset gamepad-default

When
  • its cited physical performance occurs while a set derived from gamepad-default is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • default-jump-south can match while a set derived from gamepad-default is current
  • an accepted change on that current copy does not remove the binding
  • default-jump-south cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-preset-is-current · default-interact-west

default-interact-west exists only while preset gamepad-default is current

scenarioper action-bindings row

Applies to the default-interact-west row.

Under the contract, preset gamepad-default is the starting source set for binding default-interact-west. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding default-interact-west assigned to preset gamepad-default

When
  • its cited physical performance occurs while a set derived from gamepad-default is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • default-interact-west can match while a set derived from gamepad-default is current
  • an accepted change on that current copy does not remove the binding
  • default-interact-west cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-preset-is-current · alternate-jump-west

alternate-jump-west exists only while preset gamepad-alternate is current

scenarioper action-bindings row

Applies to the alternate-jump-west row.

Under the contract, preset gamepad-alternate is the starting source set for binding alternate-jump-west. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding alternate-jump-west assigned to preset gamepad-alternate

When
  • its cited physical performance occurs while a set derived from gamepad-alternate is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • alternate-jump-west can match while a set derived from gamepad-alternate is current
  • an accepted change on that current copy does not remove the binding
  • alternate-jump-west cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

binding-preset-is-current · alternate-interact-south

alternate-interact-south exists only while preset gamepad-alternate is current

scenarioper action-bindings row

Applies to the alternate-interact-south row.

Under the contract, preset gamepad-alternate is the starting source set for binding alternate-interact-south. Its cited performance can match through a current set derived from that preset, and an accepted change on the current copy does not remove the binding. It cannot match through this row while a set derived from another preset is current.

Test steps and diagnostics
Given

binding alternate-interact-south assigned to preset gamepad-alternate

When
  • its cited physical performance occurs while a set derived from gamepad-alternate is current, after an accepted change to that current copy, and while a set derived from another preset is current
Then
  • alternate-interact-south can match while a set derived from gamepad-alternate is current
  • an accepted change on that current copy does not remove the binding
  • alternate-interact-south cannot match through this row while a set derived from another preset is current
Diagnostics
  • pc-console-current-set
  • pc-console-match-trace

shared-physical-activation-stays-one-input

Row.id shares action input Bind action input consistently

scenarioper action-bindings row

Does not apply to pc-console: no matching row in action-bindings has every field this test uses (action-input).

simpler-input-matches-named-binding

Row.id matches as binding Row.action binding

scenarioper simpler-inputs row

Does not apply to pc-console: simpler-inputs has no rows.

demanding-none-override

Row.id has an ordinary route by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input no demanding presses.

demanding-none-default · pc-jump-space

pc-jump-space has an ordinary route by the game default

scenarioper action-bindings row

Applies to the pc-jump-space row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for pc-jump-space has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding pc-jump-space and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at movement.jump
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-pc-jump-space-observer-result
  • pc-console-action-input-log

demanding-none-default · pc-interact-e

pc-interact-e has an ordinary route by the game default

scenarioper action-bindings row

Applies to the pc-interact-e row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for pc-interact-e has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding pc-interact-e and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at world.interact
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-pc-interact-e-observer-result
  • pc-console-action-input-log

demanding-none-default · default-jump-south

default-jump-south has an ordinary route by the game default

scenarioper action-bindings row

Applies to the default-jump-south row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for default-jump-south has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding default-jump-south and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at movement.jump
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-default-jump-south-observer-result
  • pc-console-action-input-log

demanding-none-default · default-interact-west

default-interact-west has an ordinary route by the game default

scenarioper action-bindings row

Applies to the default-interact-west row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for default-interact-west has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding default-interact-west and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at world.interact
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-default-interact-west-observer-result
  • pc-console-action-input-log

demanding-none-default · alternate-jump-west

alternate-jump-west has an ordinary route by the game default

scenarioper action-bindings row

Applies to the alternate-jump-west row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for alternate-jump-west has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding alternate-jump-west and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at movement.jump
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-alternate-jump-west-observer-result
  • pc-console-action-input-log

demanding-none-default · alternate-interact-south

alternate-interact-south has an ordinary route by the game default

scenarioper action-bindings row

Applies to the alternate-interact-south row.

Audit class: observer-judged. An observer, not the running game, judges this. The row uses the game default: the action for alternate-interact-south has an ordinary route without a setting change, and performing that route emits an action input carrying the action. A demanding input is not its only route.

Test steps and diagnostics
Given

binding alternate-interact-south and its cited action and physical-input rules

When
  • an observer performs the covered action through its ordinary route without changing a setting
Then
  • the ordinary route produces an action input carrying the action at world.interact
  • no demanding input is the action's only route
  • an observer, not the running game, judges this
Diagnostics
  • pc-console-alternate-interact-south-observer-result
  • pc-console-action-input-log

demanding-simpler-press-style-override

the demanding press style of Row.id follows simpler-alternative by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input simpler alternative and press-style timed press or hold or rapid presses or repeated presses or double press or simultaneous inputs or input sequence and motion-use no motion or optional motion.

demanding-simpler-required-motion-override

the required motion of Row.id follows simpler-alternative by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input simpler alternative and motion-use required motion.

demanding-simpler-press-style-default

the demanding press style of Row.id follows simpler-alternative by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not simpler alternative.

demanding-simpler-required-motion-default

the required motion of Row.id follows simpler-alternative by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not simpler alternative.

demanding-setting-press-style-override

the demanding press style of Row.id follows player-can-change-it by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input player can change it and press-style timed press or hold or rapid presses or repeated presses or double press or simultaneous inputs or input sequence and motion-use no motion or optional motion.

demanding-setting-required-motion-override

the required motion of Row.id follows player-can-change-it by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input player can change it and motion-use required motion.

demanding-setting-press-style-default

the demanding press style of Row.id follows player-can-change-it by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not player can change it.

demanding-setting-required-motion-default

the required motion of Row.id follows player-can-change-it by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not player can change it.

demanding-required-press-style-override

the demanding press style of Row.id follows required-as-written by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input required as written and press-style timed press or hold or rapid presses or repeated presses or double press or simultaneous inputs or input sequence and motion-use no motion or optional motion.

demanding-required-required-motion-override

the required motion of Row.id follows required-as-written by its row answer

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches demanding-input required as written and motion-use required motion.

demanding-required-press-style-default

the demanding press style of Row.id follows required-as-written by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not required as written.

demanding-required-required-motion-default

the required motion of Row.id follows required-as-written by the game default

scenarioper action-bindings row

Does not apply to pc-console: demanding input default is no demanding presses, not required as written.

simpler-route-is-distinct

Row.id performs the same action without resembling a failed demanding input

scenarioper simpler-inputs row

Does not apply to pc-console: simpler-inputs has no rows.

device-motion-rule-holds · pc-jump-space

pc-jump-space follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the pc-jump-space row.

For pc-jump-space under controls.space: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding pc-jump-space and its physical input and device at controls.space

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

device-motion-rule-holds · pc-interact-e

pc-interact-e follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the pc-interact-e row.

For pc-interact-e under controls.e-key: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding pc-interact-e and its physical input and device at controls.e-key

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

device-motion-rule-holds · default-jump-south

default-jump-south follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the default-jump-south row.

For default-jump-south under controls.south-button: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding default-jump-south and its physical input and device at controls.south-button

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

device-motion-rule-holds · default-interact-west

default-interact-west follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the default-interact-west row.

For default-interact-west under controls.west-button: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding default-interact-west and its physical input and device at controls.west-button

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

device-motion-rule-holds · alternate-jump-west

alternate-jump-west follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the alternate-jump-west row.

For alternate-jump-west under controls.west-button: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding alternate-jump-west and its physical input and device at controls.west-button

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

device-motion-rule-holds · alternate-interact-south

alternate-interact-south follows its no-motion device-motion rule

scenarioper action-bindings row

Applies to the alternate-interact-south row.

For alternate-interact-south under controls.south-button: no device motion is read while the cited non-motion performance emits the action input. The test names the address, restates nothing from it, and asserts nothing about device-motion quality.

Test steps and diagnostics
Given

binding alternate-interact-south and its physical input and device at controls.south-button

When
  • the cited performance and the corresponding motion or non-motion comparison are each attempted
Then
  • no device motion is read while the cited non-motion performance emits the action input
  • the test asserts nothing about device-motion quality
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log

one-physical-activation-emits-one-action-input

one physical activation emits one action input with all matched candidates

scenarioonce

Applies to pc-console.

Each reachable physical activation emits one action input carrying every matched binding's action as a candidate. N matched actions remain one input with N candidates, never N inputs. Where no activation matches several bindings, that comparison asserts nothing.

Test steps and diagnostics
Given

each reachable physical activation in the pc-console adoption, including one that matches several bindings where the adoption declares one

When
  • the current set is matched and the contract emits its game-facing result
Then
  • the activation emits one action input
  • that one input carries every matched binding's action as a candidate
  • N matched actions remain one input with N candidates and never become N inputs
  • where no activation matches several bindings, the multi-candidate comparison asserts nothing
Diagnostics
  • pc-console-match-trace
  • pc-console-action-input-log
  • pc-console-candidate-set

action-input-stops-at-handoff

the action input stops at the contract boundary

scenarioonce

Applies to pc-console.

The contract emits one action input with all matched candidates and stops there. Input forgiveness can supply the accepted moment; Action legibility, when adopted, selects a candidate before one action proposal. Otherwise the game's cited Fixed selection rule owns shared-candidate selection. This test asserts nothing about forgiveness windows, offered-action presentation, candidate ordering, proposal rejection, or action effects.

Test steps and diagnostics
Given

one action input emitted by the pc-console adoption with all matched candidates

When
  • the input crosses the contract boundary
Then
  • the emitted input is handed to Input forgiveness when adopted, which can supply the accepted moment, and then to Action legibility when adopted for candidate selection before one action proposal
  • without Action legibility, the game's cited Fixed selection rule owns shared-candidate selection
  • this test stops at emission and asserts nothing about forgiveness windows, offered-action presentation, candidate ordering, proposal rejection, or action effects
Diagnostics
  • pc-console-action-input-log

control-options-authority-order

control options keeps its authority order

scenarioonce

Applies to pc-console.

The authority order is platform, defaults, starting set, accepted control change, current set, physical match, demanding-input answer, simpler route, device-motion rule, one action-input creation, accepted-moment shared-action choice, and one action proposal. A later stage does not rewrite an earlier decision.

Test steps and diagnostics
Given

a run that reaches platform selection, control setup, a physical activation, and the action-input boundary

When
  • the decision trace is read in order
Then
  • the trace orders platform, defaults, starting set, accepted control change, current set, physical match, demanding-input answer, simpler route, device-motion rule, one action-input creation, accepted-moment shared-action choice, and one action proposal
  • a later stage does not rewrite an earlier decision
Diagnostics
  • pc-console-platform-selection
  • pc-console-change-log
  • pc-console-current-set
  • pc-console-match-trace
  • pc-console-action-input-log

control-options-boundaries

the adoption makes no promise beyond control options

scenarioonce

Applies to pc-console.

The contract asserts nothing about system-level remapping, virtual-control layout editing, chord member lists, device-motion quality, or saved profiles. Moving or resizing a touch control while keeping its action is not a control change. Presentation of the current binding is owned by Action legibility when adopted, otherwise by the game's UI rules. Beyond its stated hand-off order, the contract asserts nothing about an action input after emission.

Test steps and diagnostics
Given

the pc-console adoption and features adjacent to its control rules

When
  • the adoption's promise boundary is reviewed
Then
  • the contract asserts nothing about system-level remapping, virtual-control layout editing, chord member lists, device-motion quality, or saved profiles
  • moving or resizing a touch control while keeping its action is not a control change
  • presentation of the current binding is owned by Action legibility when adopted, otherwise by the game's UI rules
  • the contract asserts nothing about action-input behavior after emission except the stated hand-off order
Diagnostics
  • pc-console-declaration-record

empty-row-sets-make-no-promise

empty row sets and unanswered defaults make no promise

scenarioonce

Applies to pc-console.

This declaration check reads the adoption, not the running game. Where no platform row exists, no platform receives a physical-control promise, and the adoption makes no game-wide remapping or demanding-input promise; where a platform row exists, each clause asserts nothing. Where no preset, binding, or simpler-input row exists, its row set makes its stated empty-set promise; where a row exists, that clause asserts nothing.

Test steps and diagnostics
Given

the pc-console adoption, not the running game

When
  • a reviewer checks each row set and the two defaults that depend on a platform row
Then
  • where no platform-control-sets row exists, no platform receives a physical-control promise from this adoption; where a row exists, this clause asserts nothing
  • where no control-presets row exists, no named control preset is offered; where a row exists, this clause asserts nothing
  • where no action-bindings row exists, no physical input is promised to produce a game action; where a row exists, this clause asserts nothing
  • where no simpler-inputs row exists, no demanding binding promises a separate simpler input without a setting change; where a row exists, this clause asserts nothing
  • where no platform-control-sets row exists, this adoption makes no game-wide remapping promise; where a platform row exists, this clause asserts nothing
  • where no platform-control-sets row exists, this adoption makes no game-wide demanding-input promise; where a platform row exists, this clause asserts nothing
Diagnostics
  • pc-console-declaration-record

preset-platform-join · keyboard-start

declaration check: preset keyboard-start names a platform row in this adoption

scenarioper control-presets row

Applies to the keyboard-start row.

This declaration check reads the adoption, not the running game. Preset keyboard-start must name an existing platform-control-sets row in this adoption: pc. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and preset keyboard-start, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id pc exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

preset-platform-join · gamepad-default

declaration check: preset gamepad-default names a platform row in this adoption

scenarioper control-presets row

Applies to the gamepad-default row.

This declaration check reads the adoption, not the running game. Preset gamepad-default must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and preset gamepad-default, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

preset-platform-join · gamepad-alternate

declaration check: preset gamepad-alternate names a platform row in this adoption

scenarioper control-presets row

Applies to the gamepad-alternate row.

This declaration check reads the adoption, not the running game. Preset gamepad-alternate must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and preset gamepad-alternate, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · pc-jump-space

declaration check: binding pc-jump-space names a platform row in this adoption

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption, not the running game. Binding pc-jump-space must name an existing platform-control-sets row in this adoption: pc. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-jump-space, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id pc exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · pc-interact-e

declaration check: binding pc-interact-e names a platform row in this adoption

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption, not the running game. Binding pc-interact-e must name an existing platform-control-sets row in this adoption: pc. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-interact-e, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id pc exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · default-jump-south

declaration check: binding default-jump-south names a platform row in this adoption

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption, not the running game. Binding default-jump-south must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-jump-south, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · default-interact-west

declaration check: binding default-interact-west names a platform row in this adoption

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption, not the running game. Binding default-interact-west must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-interact-west, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · alternate-jump-west

declaration check: binding alternate-jump-west names a platform row in this adoption

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption, not the running game. Binding alternate-jump-west must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-jump-west, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-platform-join · alternate-interact-south

declaration check: binding alternate-interact-south names a platform row in this adoption

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption, not the running game. Binding alternate-interact-south must name an existing platform-control-sets row in this adoption: console-gamepad. A missing or misspelled join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-interact-south, not the running game

When
  • a reviewer checks its platform-control-set join
Then
  • a platform-control-sets row with id console-gamepad exists in this adoption
  • a missing or misspelled platform row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · pc-jump-space

declaration check: binding pc-jump-space names a preset on the same platform

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption, not the running game. Binding pc-jump-space must name an existing preset, keyboard-start, and that preset must name the binding's platform row, pc. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-jump-space, not the running game

When
  • a reviewer checks preset keyboard-start and both platform names
Then
  • a control-presets row with id keyboard-start exists in this adoption
  • that preset names platform row pc
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · pc-interact-e

declaration check: binding pc-interact-e names a preset on the same platform

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption, not the running game. Binding pc-interact-e must name an existing preset, keyboard-start, and that preset must name the binding's platform row, pc. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-interact-e, not the running game

When
  • a reviewer checks preset keyboard-start and both platform names
Then
  • a control-presets row with id keyboard-start exists in this adoption
  • that preset names platform row pc
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · default-jump-south

declaration check: binding default-jump-south names a preset on the same platform

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption, not the running game. Binding default-jump-south must name an existing preset, gamepad-default, and that preset must name the binding's platform row, console-gamepad. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-jump-south, not the running game

When
  • a reviewer checks preset gamepad-default and both platform names
Then
  • a control-presets row with id gamepad-default exists in this adoption
  • that preset names platform row console-gamepad
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · default-interact-west

declaration check: binding default-interact-west names a preset on the same platform

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption, not the running game. Binding default-interact-west must name an existing preset, gamepad-default, and that preset must name the binding's platform row, console-gamepad. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-interact-west, not the running game

When
  • a reviewer checks preset gamepad-default and both platform names
Then
  • a control-presets row with id gamepad-default exists in this adoption
  • that preset names platform row console-gamepad
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · alternate-jump-west

declaration check: binding alternate-jump-west names a preset on the same platform

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption, not the running game. Binding alternate-jump-west must name an existing preset, gamepad-alternate, and that preset must name the binding's platform row, console-gamepad. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-jump-west, not the running game

When
  • a reviewer checks preset gamepad-alternate and both platform names
Then
  • a control-presets row with id gamepad-alternate exists in this adoption
  • that preset names platform row console-gamepad
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-preset-join · alternate-interact-south

declaration check: binding alternate-interact-south names a preset on the same platform

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption, not the running game. Binding alternate-interact-south must name an existing preset, gamepad-alternate, and that preset must name the binding's platform row, console-gamepad. A missing preset or cross-platform join is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-interact-south, not the running game

When
  • a reviewer checks preset gamepad-alternate and both platform names
Then
  • a control-presets row with id gamepad-alternate exists in this adoption
  • that preset names platform row console-gamepad
  • a missing preset or cross-platform join is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

optional-motion-has-no-motion-sibling

declaration check: optional-motion binding Row.id has a no-motion sibling

scenarioper action-bindings row

Does not apply to pc-console: no row in action-bindings matches motion-use optional motion.

simpler-binding-join

declaration check: simpler route Row.id names a binding in this adoption

scenarioper simpler-inputs row

Does not apply to pc-console: simpler-inputs has no rows.

presets-only-has-complete-choice

declaration check: every presets-only platform has two selectable complete presets

scenarioonce

Applies to pc-console.

This declaration check reads the adoption, not the running game. Under the contract, every platform whose effective answer is presets-only must have at least two presets whose availability is starting-and-selectable or player-selectable, and every preset maps every action bound on that platform. Another effective answer asserts nothing in this comparison. A missing choice or incomplete preset is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, not the running game

When
  • a reviewer resolves each platform row's effective remapping answer and compares its preset and binding rows
Then
  • each platform whose effective answer is presets-only has at least two control-presets rows whose availability is starting-and-selectable or player-selectable
  • every preset for that platform maps every action bound on the platform with a matching action-bindings row
  • a platform with another effective answer asserts nothing in this comparison
  • a missing choice or incomplete preset is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · pc-jump-space

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption, not the running game. If pc-jump-space has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-jump-space, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if pc-jump-space has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · pc-interact-e

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption, not the running game. If pc-interact-e has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding pc-interact-e, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if pc-interact-e has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · default-jump-south

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption, not the running game. If default-jump-south has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-jump-south, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if default-jump-south has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · default-interact-west

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption, not the running game. If default-interact-west has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding default-interact-west, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if default-interact-west has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · alternate-jump-west

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption, not the running game. If alternate-jump-west has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-jump-west, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if alternate-jump-west has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

simpler-answer-has-row · alternate-interact-south

declaration check: every demanding simpler-alternative binding has a simpler row

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption, not the running game. If alternate-interact-south has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row must name it. Otherwise the requirement asserts nothing. A missing simpler row is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and binding alternate-interact-south, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer and classifies its cited performance
Then
  • if alternate-interact-south has a demanding press style or requires device motion, and its effective answer is simpler-alternative, at least one simpler-inputs row names it
  • otherwise this requirement asserts nothing
  • a missing simpler row is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · pc-jump-space

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, pc-jump-space must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding pc-jump-space, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, pc-jump-space has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · pc-interact-e

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, pc-interact-e must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding pc-interact-e, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, pc-interact-e has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · default-jump-south

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, default-jump-south must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding default-jump-south, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, default-jump-south has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · default-interact-west

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, default-interact-west must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding default-interact-west, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, default-interact-west has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · alternate-jump-west

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, alternate-jump-west must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding alternate-jump-west, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, alternate-jump-west has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

no-demanding-answer-has-ordinary-route · alternate-interact-south

declaration check: every no-demanding binding has an ordinary route

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption and its cited prose, not the running game. Under an effective no-demanding-presses answer, alternate-interact-south must have a non-demanding press style and not require device motion, or have a cited ordinary route to the same action. Another answer asserts nothing here. A demanding-only route is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, binding alternate-interact-south, and its cited prose, not the running game

When
  • a reviewer resolves the binding's effective demanding-input answer
Then
  • if the effective answer is no-demanding-presses, alternate-interact-south has a non-demanding press style and does not require device motion, or its cited prose states an ordinary route to the same action
  • otherwise this requirement asserts nothing
  • a demanding-only route is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

forbidden-effective-pair-does-not-reappear

declaration check: no platform or binding recreates the forbidden effective pair

scenarioonce

Applies to pc-console.

This declaration check reads the adoption, not the running game. The contract's demanding-input field forbids a binding from having effective required-as-written on a platform with effective action-and-press-style. A row override that recreates this forbidden pair is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption, not the running game

When
  • a reviewer resolves every platform's effective remapping answer and every binding's effective demanding-input answer
Then
  • no binding has effective required-as-written on a platform with effective action-and-press-style
  • any platform-row or binding-row override that recreates that pair is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

settings-citation-covers-effective-change-policy · pc

declaration check: pc's settings citation covers its effective policy

scenarioper platform-control-sets row

Applies to the pc row.

This declaration check reads the adoption and controls.pc-remap-menu, not the running game. Under any-action-any-input or action-and-press-style, that citation must state visible conflict handling before use; action-and-press-style must also state the press styles offered for each action. Under swap-only, it must state that a swap exchanges two existing assignments. Under presets-only, it must state that selection replaces the whole set and an individual binding change is refused. Under fixed-bindings, it must state the absence of changes. A missing duty is a defect this test fails by construction, and the test asserts nothing about reachability beyond what the citation states.

Test steps and diagnostics
Given

the pc-console adoption, platform row pc, and controls.pc-remap-menu, not the running game

When
  • a reviewer resolves the row's effective remapping answer and checks the cited rule
Then
  • under any-action-any-input or action-and-press-style, the citation states visible conflict handling before use
  • under action-and-press-style, the citation states the press styles offered for each action
  • under swap-only, the citation states that a swap exchanges two existing assignments
  • under presets-only, the citation states that selection replaces the whole set and an individual binding change is refused
  • under fixed-bindings, the citation states the absence of changes
  • a missing duty is a defect this test fails by construction
  • the test asserts nothing about reachability beyond what the citation states
Diagnostics
  • pc-console-declaration-record

settings-citation-covers-effective-change-policy · console-gamepad

declaration check: console-gamepad's settings citation covers its effective policy

scenarioper platform-control-sets row

Applies to the console-gamepad row.

This declaration check reads the adoption and controls.console-preset-menu, not the running game. Under any-action-any-input or action-and-press-style, that citation must state visible conflict handling before use; action-and-press-style must also state the press styles offered for each action. Under swap-only, it must state that a swap exchanges two existing assignments. Under presets-only, it must state that selection replaces the whole set and an individual binding change is refused. Under fixed-bindings, it must state the absence of changes. A missing duty is a defect this test fails by construction, and the test asserts nothing about reachability beyond what the citation states.

Test steps and diagnostics
Given

the pc-console adoption, platform row console-gamepad, and controls.console-preset-menu, not the running game

When
  • a reviewer resolves the row's effective remapping answer and checks the cited rule
Then
  • under any-action-any-input or action-and-press-style, the citation states visible conflict handling before use
  • under action-and-press-style, the citation states the press styles offered for each action
  • under swap-only, the citation states that a swap exchanges two existing assignments
  • under presets-only, the citation states that selection replaces the whole set and an individual binding change is refused
  • under fixed-bindings, the citation states the absence of changes
  • a missing duty is a defect this test fails by construction
  • the test asserts nothing about reachability beyond what the citation states
Diagnostics
  • pc-console-declaration-record

shared-action-input-declaration-agrees

declaration check: rows sharing an activation agree on one action input

scenarioonce

Applies to pc-console.

This declaration check reads the adoption and its cited physical activations and contexts, not the running game. Under the contract, one group contains only rows that can be current together: they use the same platform row, either all omit a preset or all name the same preset, have no disjoint cited contexts, and share one physical activation. Rows in mutually exclusive presets or disjoint contexts are not one group and assert nothing about each other's action-input value. Every row in a multi-binding group supplies and agrees on one value, and the emitted input carries every matched action as a candidate. A lone binding's name can remain implicit and asserts nothing in the shared-value comparison. A missing, different, or split value is a defect this test fails by construction. The check asserts nothing about a paired Action legibility adoption.

Test steps and diagnostics
Given

the pc-console adoption and the physical activations, platforms, presets, and contexts described by its binding rows and citations, not the running game

When
  • a reviewer groups rows that can be current together and share one physical activation
Then
  • one group contains only rows on the same platform row that either all omit a preset or all name the same preset, have no disjoint cited contexts, and share one physical activation
  • rows in mutually exclusive presets or disjoint cited contexts are not one group and assert nothing about each other's action-input value
  • every group with several bindings supplies one action-input value shared by every row in that group
  • the emitted input carries every matched binding's action as a candidate
  • a lone binding's action-input name can remain implicit and asserts nothing in the shared-value comparison
  • a missing, different, or split shared value is a defect this test fails by construction
  • the test asserts nothing about a paired Action legibility adoption
Diagnostics
  • pc-console-declaration-record
  • pc-console-candidate-set

rows-do-not-duplicate-meaning

declaration check: no two rows mean the same platform, preset, or binding

scenarioonce

Applies to pc-console.

This declaration check reads the adoption and its cited prose, not the running game. No two rows can mean the same platform, preset, binding, or simpler alternative for one binding. The contract sets no maximum row count. A duplicate meaning is a defect this test fails by construction.

Test steps and diagnostics
Given

the pc-console adoption and its cited prose, not the running game

When
  • a reviewer compares every pair of rows in each row set
Then
  • no two platform-control-sets rows mean the same platform, edition, devices, and policy scope
  • no two control-presets rows mean the same preset
  • no two action-bindings rows mean the same binding
  • no two simpler-inputs rows mean the same alternative for one binding
  • the contract imposes no maximum row count
  • a duplicate meaning is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

platform-citation-duty · pc

declaration check: pc's platform citation states its duty

scenarioper platform-control-sets row

Applies to the pc row.

This declaration check reads the adoption and platforms.pc, not the running game. The citation must name one platform or edition and its supported devices; different control behavior belongs in another row. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and platforms.pc, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • platforms.pc names one platform or edition and its supported devices, with different control behavior in another row
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

platform-citation-duty · console-gamepad

declaration check: console-gamepad's platform citation states its duty

scenarioper platform-control-sets row

Applies to the console-gamepad row.

This declaration check reads the adoption and platforms.console, not the running game. The citation must name one platform or edition and its supported devices; different control behavior belongs in another row. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and platforms.console, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • platforms.console names one platform or edition and its supported devices, with different control behavior in another row
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

methods-citation-duty · pc

declaration check: pc's methods citation states its duty

scenarioper platform-control-sets row

Applies to the pc row.

This declaration check reads the adoption and controls.keyboard, not the running game. The citation must list every complete input method for pc and any required switch. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.keyboard, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.keyboard lists every complete input method for pc and any required switch between methods
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

methods-citation-duty · console-gamepad

declaration check: console-gamepad's methods citation states its duty

scenarioper platform-control-sets row

Applies to the console-gamepad row.

This declaration check reads the adoption and controls.gamepad, not the running game. The citation must list every complete input method for console-gamepad and any required switch. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.gamepad, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.gamepad lists every complete input method for console-gamepad and any required switch between methods
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

settings-rule-citation-duty · pc

declaration check: pc's settings citation states its duty

scenarioper platform-control-sets row

Applies to the pc row.

This declaration check reads the adoption and controls.pc-remap-menu, not the running game. The citation must always state pc's control menu. Where the platform declares a preset, it must state preset selection. Under effective any-action-any-input or action-and-press-style, it must state conflict handling; action-and-press-style must also state the press styles offered for each action. Under effective fixed-bindings, it must state the explicit absence of changes. A duty outside its stated condition asserts nothing. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.pc-remap-menu, not the running game

When
  • a reviewer resolves pc's effective remapping answer and checks the citation's meaning
Then
  • controls.pc-remap-menu states pc's control menu
  • where the platform has a control-presets row, the citation states preset selection; where it has none, this clause asserts nothing
  • under effective any-action-any-input or action-and-press-style, the citation states conflict handling; under another effective answer, this clause asserts nothing
  • under effective action-and-press-style, the citation states the press styles offered for each action; under another effective answer, this clause asserts nothing
  • under effective fixed-bindings, the citation states the explicit absence of changes; under another effective answer, this clause asserts nothing
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

settings-rule-citation-duty · console-gamepad

declaration check: console-gamepad's settings citation states its duty

scenarioper platform-control-sets row

Applies to the console-gamepad row.

This declaration check reads the adoption and controls.console-preset-menu, not the running game. The citation must always state console-gamepad's control menu. Where the platform declares a preset, it must state preset selection. Under effective any-action-any-input or action-and-press-style, it must state conflict handling; action-and-press-style must also state the press styles offered for each action. Under effective fixed-bindings, it must state the explicit absence of changes. A duty outside its stated condition asserts nothing. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.console-preset-menu, not the running game

When
  • a reviewer resolves console-gamepad's effective remapping answer and checks the citation's meaning
Then
  • controls.console-preset-menu states console-gamepad's control menu
  • where the platform has a control-presets row, the citation states preset selection; where it has none, this clause asserts nothing
  • under effective any-action-any-input or action-and-press-style, the citation states conflict handling; under another effective answer, this clause asserts nothing
  • under effective action-and-press-style, the citation states the press styles offered for each action; under another effective answer, this clause asserts nothing
  • under effective fixed-bindings, the citation states the explicit absence of changes; under another effective answer, this clause asserts nothing
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

preset-selection-citation-duty · keyboard-start

declaration check: preset keyboard-start's selection citation states its duty

scenarioper control-presets row

Applies to the keyboard-start row.

This declaration check reads the adoption and controls.keyboard-start, not the running game. The citation must state the route that selects preset keyboard-start and makes its matching bindings current. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.keyboard-start, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.keyboard-start states the route that selects preset keyboard-start and makes its matching action-binding rows current
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

preset-selection-citation-duty · gamepad-default

declaration check: preset gamepad-default's selection citation states its duty

scenarioper control-presets row

Applies to the gamepad-default row.

This declaration check reads the adoption and controls.gamepad-default, not the running game. The citation must state the route that selects preset gamepad-default and makes its matching bindings current. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.gamepad-default, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.gamepad-default states the route that selects preset gamepad-default and makes its matching action-binding rows current
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

preset-selection-citation-duty · gamepad-alternate

declaration check: preset gamepad-alternate's selection citation states its duty

scenarioper control-presets row

Applies to the gamepad-alternate row.

This declaration check reads the adoption and controls.gamepad-alternate, not the running game. The citation must state the route that selects preset gamepad-alternate and makes its matching bindings current. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.gamepad-alternate, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.gamepad-alternate states the route that selects preset gamepad-alternate and makes its matching action-binding rows current
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · pc-jump-space

declaration check: pc-jump-space's action citation states its duty

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption and movement.jump, not the running game. The citation must name the game-facing action that pc-jump-space contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and movement.jump, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • movement.jump names the game-facing action that pc-jump-space contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · pc-interact-e

declaration check: pc-interact-e's action citation states its duty

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption and world.interact, not the running game. The citation must name the game-facing action that pc-interact-e contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and world.interact, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • world.interact names the game-facing action that pc-interact-e contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · default-jump-south

declaration check: default-jump-south's action citation states its duty

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption and movement.jump, not the running game. The citation must name the game-facing action that default-jump-south contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and movement.jump, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • movement.jump names the game-facing action that default-jump-south contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · default-interact-west

declaration check: default-interact-west's action citation states its duty

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption and world.interact, not the running game. The citation must name the game-facing action that default-interact-west contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and world.interact, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • world.interact names the game-facing action that default-interact-west contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · alternate-jump-west

declaration check: alternate-jump-west's action citation states its duty

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption and movement.jump, not the running game. The citation must name the game-facing action that alternate-jump-west contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and movement.jump, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • movement.jump names the game-facing action that alternate-jump-west contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-action-citation-duty · alternate-interact-south

declaration check: alternate-interact-south's action citation states its duty

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption and world.interact, not the running game. The citation must name the game-facing action that alternate-interact-south contributes as a candidate. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and world.interact, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • world.interact names the game-facing action that alternate-interact-south contributes as a candidate
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · pc-jump-space

declaration check: pc-jump-space's physical-input citation states its duty

scenarioper action-bindings row

Applies to the pc-jump-space row.

This declaration check reads the adoption and controls.space, not the running game. The citation must name pc-jump-space's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.space, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.space names the physical input, its supplying device, and the press performance for pc-jump-space
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · pc-interact-e

declaration check: pc-interact-e's physical-input citation states its duty

scenarioper action-bindings row

Applies to the pc-interact-e row.

This declaration check reads the adoption and controls.e-key, not the running game. The citation must name pc-interact-e's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.e-key, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.e-key names the physical input, its supplying device, and the press performance for pc-interact-e
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · default-jump-south

declaration check: default-jump-south's physical-input citation states its duty

scenarioper action-bindings row

Applies to the default-jump-south row.

This declaration check reads the adoption and controls.south-button, not the running game. The citation must name default-jump-south's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.south-button, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.south-button names the physical input, its supplying device, and the press performance for default-jump-south
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · default-interact-west

declaration check: default-interact-west's physical-input citation states its duty

scenarioper action-bindings row

Applies to the default-interact-west row.

This declaration check reads the adoption and controls.west-button, not the running game. The citation must name default-interact-west's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.west-button, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.west-button names the physical input, its supplying device, and the press performance for default-interact-west
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · alternate-jump-west

declaration check: alternate-jump-west's physical-input citation states its duty

scenarioper action-bindings row

Applies to the alternate-jump-west row.

This declaration check reads the adoption and controls.west-button, not the running game. The citation must name alternate-jump-west's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.west-button, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.west-button names the physical input, its supplying device, and the press performance for alternate-jump-west
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-physical-input-citation-duty · alternate-interact-south

declaration check: alternate-interact-south's physical-input citation states its duty

scenarioper action-bindings row

Applies to the alternate-interact-south row.

This declaration check reads the adoption and controls.south-button, not the running game. The citation must name alternate-interact-south's physical input, supplying device, and the press performance. A missing duty is a defect this test fails by construction. The test names the address and restates nothing from it.

Test steps and diagnostics
Given

the pc-console adoption and controls.south-button, not the running game

When
  • a reviewer checks the citation's meaning
Then
  • controls.south-button names the physical input, its supplying device, and the press performance for alternate-interact-south
  • a missing duty is a defect this test fails by construction
Diagnostics
  • pc-console-declaration-record

binding-context-citation-duty

declaration check: Row.id's context citation states its duty

scenarioper action-bindings row

Does not apply to pc-console: no matching row in action-bindings has every field this test uses (context-declared-in).

simpler-alternative-citation-duty

declaration check: Row.id's alternative citation states its duty

scenarioper simpler-inputs row

Does not apply to pc-console: simpler-inputs has no rows.

simpler-distinction-citation-duty

declaration check: Row.id's distinction citation states its duty

scenarioper simpler-inputs row

Does not apply to pc-console: simpler-inputs has no rows.

control-options-hold

control options holds for the whole run

generalonce

Applies to pc-console.

Across every platform row on its cited devices, every preset, every binding, and every simpler route of the audited run, every accepted control change follows the platform's effective remapping answer and every refused change is refused; every binding matches only under its cited performance and emits one action input; every demanding binding meets its effective answer; every simpler route produces the same action distinguishably; every device-motion rule holds; and no physical activation produces more than one action input.

Test steps and diagnostics
Holds

every accepted control change followed the platform's effective remapping answer and every refused change was refused; every binding matched only under its cited performance and emitted one action input; every demanding binding met its effective answer; every simpler route produced the same action distinguishably; every device-motion rule held; no physical activation produced more than one action input

Seeds

["audit-a","audit-b"]

Scope

every platform row on its cited devices, every preset, every binding, and every simpler route of the audited run

Diagnostics
  • pc-console-platform-selection
  • pc-console-change-log
  • pc-console-current-set
  • pc-console-match-trace
  • pc-console-action-input-log
  • pc-console-observer-result
  • pc-console-setting-state
JSONthe adoption as one file

The adoption file as supplied. Answers you try on this page are not written into it; to change an adoption, open it in the authoring tool.

{
  "contract": "control-options",
  "version": 1,
  "summary": "Covers which physical inputs produce each action on every platform. It also covers complete input methods, named control presets, remapping, press styles, simpler alternatives, and device-motion inputs. Action prompts, input timing help, shared-action choice, and event order stay elsewhere.",
  "questions": {
    "remapping-default": {
      "asks": "How can players normally change the controls?",
      "rationale": "A platform may offer fixed controls, named layouts, or free changes. This answer supplies the ordinary choice before a platform states another one.",
      "when": {
        "row-count": {
          "platform-control-sets": "non-empty"
        }
      },
      "otherwise": "With no platform control set, this adoption makes no game-wide remapping promise.",
      "options": {
        "fixed-bindings": {
          "meaning": "The controls cannot be changed in the game. A puzzle game always keeps rotate on the space bar.",
          "semantics": "No player-facing setting changes an action's physical input or press style."
        },
        "swap-only": {
          "meaning": "Existing controls can only exchange actions. A platformer can swap jump and dash, but an unused button cannot receive either action.",
          "semantics": "A supported binding can exchange its current action with another supported binding; no action can move independently to an otherwise unused input."
        },
        "presets-only": {
          "meaning": "Players can choose only from named control sets. An action game offers Default and Alternate layouts without individual button changes.",
          "semantics": "The player may select a complete declared preset but cannot change one binding independently inside that preset. The platform offers at least two presets whose availability is starting-and-selectable or player-selectable."
        },
        "any-action-any-input": {
          "meaning": "Any action can move to any supported input. A strategy game can move end turn from Enter to an unused mouse button.",
          "semantics": "Every covered action can be assigned independently to any supported remappable input, including an otherwise unassigned input; conflicts are resolved visibly before use."
        },
        "action-and-press-style": {
          "meaning": "Both the input and the press style can change. An adventure game can move interact to another button and change a hold into one press.",
          "semantics": "Every covered action can change to a supported input and to any press style that its cited platform rule offers for that action."
        }
      }
    },
    "demanding-input-default": {
      "asks": "What normally happens when an action needs a difficult press?",
      "rationale": "Holds, rapid presses, double presses, and button combinations can block an otherwise known action. This answer supplies the ordinary choice.",
      "when": {
        "row-count": {
          "platform-control-sets": "non-empty"
        }
      },
      "otherwise": "With no platform control set, this adoption makes no game-wide demanding-input promise.",
      "options": {
        "no-demanding-presses": {
          "meaning": "No action needs a demanding press. A card game plays a selected card with one ordinary activation.",
          "semantics": "No covered binding requires timed, held, rapid, repeated, double, simultaneous, directional-sequence, or device-motion input as its only route to the action."
        },
        "simpler-alternative": {
          "meaning": "Every demanding press has a distinct simpler route with no setting change. A repair game offers a separate tap button beside its hold-to-repair control.",
          "semantics": "Every covered demanding binding has a declared alternative that performs the same action without configuration."
        },
        "player-can-change-it": {
          "meaning": "A setting can make the press easier. A racing game can change a held pit command into one ordinary press.",
          "semantics": "A player-facing setting replaces each covered demanding press with a declared easier press style before play uses the binding."
        },
        "required-as-written": {
          "meaning": "The demanding press remains required. A rhythm special still needs two buttons together and has no simpler route from this contract.",
          "semantics": "The covered demanding binding has no simpler alternative or press-style setting promised by this adoption."
        }
      }
    }
  },
  "declares": {
    "values": {},
    "rows": {
      "platform-control-sets": {
        "description": "Supported platforms or editions and their complete control policies. A separate row is required whenever mappings or options differ.",
        "when-empty": "No platform receives a physical-control promise from this adoption.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A stable platform or edition name, such as pc or console-gamepad."
          },
          "platform-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed rule naming one platform or edition and its supported devices. Different control behavior requires another row."
          },
          "methods-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed list of complete input methods and any required switch between them. A PC row may name keyboard and pointer as one mixed method."
          },
          "input-method-coverage": {
            "type": "string",
            "required": true,
            "options": [
              "one-method-covers-all",
              "player-chooses-method",
              "mixed-methods-needed"
            ],
            "description": "Whether one named method covers every action bound on the platform, several named methods each do so, or the named methods must be mixed. A console may offer complete gamepad and accessibility-controller methods."
          },
          "remapping": {
            "type": "string",
            "required": true,
            "options": [
              "use-game-default",
              "fixed-bindings",
              "swap-only",
              "presets-only",
              "any-action-any-input",
              "action-and-press-style"
            ],
            "description": "The platform's remapping policy or the game's ordinary answer. A console edition may offer presets while the PC edition allows free assignment."
          },
          "settings-rule-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed rule for the platform's control menu and, as its effective remapping answer needs, preset selection, conflict handling, the press styles offered for each action, or the explicit absence of changes when bindings are fixed."
          }
        }
      },
      "control-presets": {
        "description": "Named complete binding sets offered on a platform. A preset maps every action bound on its platform.",
        "when-empty": "No named control preset is offered.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A stable name for the preset, such as gamepad-default or gamepad-alternate."
          },
          "platform-control-set": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The supported platform or edition that offers this preset."
          },
          "label": {
            "type": "string",
            "required": true,
            "description": "The player-facing preset name, such as Standard or Southpaw."
          },
          "availability": {
            "type": "string",
            "required": true,
            "options": [
              "starting-and-selectable",
              "player-selectable",
              "mode-selected"
            ],
            "description": "Whether this preset is the starting set and remains selectable, is another selectable set, or follows a cited player mode. An assisted-play mode may select its own complete layout."
          },
          "selection-rule-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed route that selects this preset and makes its matching action-binding rows current."
          }
        }
      },
      "action-bindings": {
        "description": "Physical inputs that produce actions on a platform or inside one named preset.",
        "when-empty": "No physical input is promised to produce a game action.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A stable platform, action, and input name, such as pc-jump-space. A per-character control set names the character too."
          },
          "platform-control-set": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The supported platform or edition where this binding exists."
          },
          "preset": {
            "type": "string",
            "pattern": "kebab-case",
            "description": "The named complete control set containing this binding. Absence means the platform's current base or freely remappable set. On a platform whose effective remapping allows changes, the preset is the starting source set and accepted changes mutate the current copy."
          },
          "context-declared-in": {
            "type": "citation",
            "description": "The Fixed context in which this binding exists, such as a vehicle layer, menu, training mode, or unlock gate. Absence means it exists throughout the selected control set."
          },
          "action-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed game-facing action this binding contributes as a candidate."
          },
          "physical-input-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed physical key, button, axis, touch region, gesture, directional sequence, or device-motion input and the device that supplies it."
          },
          "action-input": {
            "type": "string",
            "pattern": "kebab-case",
            "description": "The one game-facing input emitted by this physical activation. Name it when several bindings answer the same physical activation."
          },
          "press-style": {
            "type": "string",
            "required": true,
            "options": [
              "press",
              "release",
              "timed-press",
              "hold",
              "rapid-presses",
              "repeated-presses",
              "double-press",
              "simultaneous-inputs",
              "continuous-axis",
              "gesture",
              "input-sequence"
            ],
            "description": "The physical performance required by this binding. A timed press has a target moment, rapid presses have a rate, repeated presses have a count, and an input sequence is a directional sequence completed by a press."
          },
          "motion-use": {
            "type": "string",
            "required": true,
            "options": [
              "no-motion",
              "optional-motion",
              "required-motion"
            ],
            "description": "Whether this binding uses no device motion, is an optional device-motion route beside another binding, or requires device motion. A handheld aim action may offer tilt as an alternative to the stick. A required-motion binding is demanding by its motion, and a press-style setting does not relieve it, so its easier route is a simpler alternative or another binding. An optional-motion binding has a no-motion binding for the same action on the same platform and preset."
          },
          "demanding-input": {
            "type": "string",
            "required": true,
            "options": [
              "use-game-default",
              "no-demanding-presses",
              "simpler-alternative",
              "player-can-change-it",
              "required-as-written"
            ],
            "description": "The action binding's demanding-input answer or the game's ordinary answer. A repeated crafting input may allow a hold even when combat combinations remain fixed. No binding answers required-as-written on a platform whose effective remapping is action-and-press-style."
          }
        }
      },
      "simpler-inputs": {
        "description": "Distinct unconfigured alternatives for bindings whose effective demanding-input answer promises one.",
        "when-empty": "No demanding binding promises a separate simpler input without a setting change.",
        "record": {
          "id": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "unique": true,
            "description": "A stable alternative name, such as repair-tap-alternative."
          },
          "action-binding": {
            "type": "string",
            "required": true,
            "pattern": "kebab-case",
            "description": "The demanding binding for which this route is the simpler alternative."
          },
          "alternative-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed physical input and ordinary press style that perform the same game action without a setting change."
          },
          "distinction-rule-declared-in": {
            "type": "citation",
            "required": true,
            "description": "The Fixed rule proving that successful use of this alternative cannot be mistaken for failure to finish the demanding input."
          }
        }
      }
    }
  },
  "rules": {
    "press-style-change-needs-a-setting-answer": {
      "forbid": {
        "all": [
          {
            "flag": {
              "remapping-default": [
                "action-and-press-style"
              ]
            }
          },
          {
            "flag": {
              "demanding-input-default": [
                "required-as-written"
              ]
            }
          }
        ]
      },
      "message": "Controls that let players change a press style cannot also require every demanding press exactly as written."
    }
  },
  "origin": "https://opengdd.org/contracts/control-options-1",
  "mechanism": [
    "This is the single normative authority for platform selection, preset choice, remapping, physical-input matching, press style, simpler alternatives, device-motion use, and creation of game-facing action inputs. Questions and rows supply defaults and cited game rules; they do not define another sequence.",
    "A **control set** is the complete current mapping for one platform and input method. A **preset** is a named immutable source set that can become current. A **binding** joins one physical input and press style to one candidate action. An **action input** is the one game-facing signal emitted by a physical activation; it carries every matched binding's action as a candidate. Bindings that can be current together and share one physical activation share its optional `action-input` name, while a lone binding's name may remain implicit. A **demanding input** is a timed, held, rapid, repeated, double, simultaneous, input-sequence, or required-device-motion input.",
    "1. Select exactly one matching platform-control-set from the running platform, edition, and supported device rules. 2. Resolve the platform's effective remapping answer. A row value other than `use-game-default` wins; otherwise `remapping-default` applies. 3. Establish the starting control set from the platform's cited rule. When a preset is selected, copy its complete matching action-binding rows into the current set. The preset itself remains unchanged. 4. Apply control changes only through the effective remapping answer. Fixed bindings reject all changes. Swap-only exchanges two existing assignments. Presets-only replaces the whole set with another declared preset. Free assignment moves one action independently and resolves conflicts before use. Action-and-press-style also permits a supported press-style change. 5. After an accepted change, the resulting complete set becomes current. Every later binding lookup reads that set, and each binding row's promises follow its action to the input the current set assigns. Presentation of the current binding is owned by Action legibility when adopted, otherwise by the game's UI rules. 6. On physical input, read every binding with a matching physical input and performance in the current platform, device, method, and preset-derived set. A press, release, hold, repeated activation, double activation, simultaneous group, axis, gesture, directional input sequence, or device-motion input matches only under its cited Fixed rule. An optional binding context makes the match provisional: whether that context holds is settled at the accepted moment, once step 11's timing help fixes it. Rows that can be current together and share one physical activation agree on one `action-input` value. A physical input cited by a `simpler-inputs` row matches as if it were its named binding: it emits that binding's action input and contributes the same action. 7. Resolve the binding's effective demanding-input answer. A row value other than `use-game-default` wins; otherwise `demanding-input-default` applies. 8. Under no-demanding-presses, the covered action has an ordinary route. Under player-can-change-it, the selected setting supplies the easier current press style. Under required-as-written, an incomplete demanding input produces no action input from this contract. 9. Under simpler-alternative, the demanding route and every matching simpler row remain available together without configuration. The alternative produces the same action only through its distinct cited input; failure to finish the demanding route never becomes the alternative by itself. 10. A `no-motion` binding reads no device motion. An `optional-motion` binding contributes the same action as its non-device-motion alternative when its gesture completes. A `required-motion` binding produces no action input from a non-device-motion attempt. 11. Physical input → this contract emits the action input → Input forgiveness (when adopted) may shift the accepted moment → Action legibility (when adopted) selects the offered candidate at the accepted moment → one action proposal. Thus an interact buffered during a cutscene evaluates candidates in the situation where the input is accepted, not the situation where it was pressed. The emitted action input carries every matched binding's action as a candidate; it is one input with N candidates, never N inputs. 12. When Action legibility is adopted, its shared-input case consumes that one action input and selects one candidate. Otherwise the game's cited Fixed selection rule resolves shared candidates, and the game's UI rules own their presentation. Event resolution begins only after the one action proposal exists.",
    "The authority order is therefore: platform, defaults, starting set, accepted control change, current set, physical match, demanding-input answer, simpler route, device-motion rule, one action-input creation, accepted-moment shared-action choice, and one action proposal."
  ],
  "answers": {
    "remapping-default": "any-action-any-input",
    "demanding-input-default": "no-demanding-presses"
  },
  "values": {},
  "rows": {
    "platform-control-sets": [
      {
        "id": "pc",
        "platform-declared-in": "platforms.pc",
        "methods-declared-in": "controls.keyboard",
        "input-method-coverage": "one-method-covers-all",
        "remapping": "use-game-default",
        "settings-rule-declared-in": "controls.pc-remap-menu"
      },
      {
        "id": "console-gamepad",
        "platform-declared-in": "platforms.console",
        "methods-declared-in": "controls.gamepad",
        "input-method-coverage": "one-method-covers-all",
        "remapping": "presets-only",
        "settings-rule-declared-in": "controls.console-preset-menu"
      }
    ],
    "control-presets": [
      {
        "id": "keyboard-start",
        "platform-control-set": "pc",
        "label": "Keyboard Start",
        "availability": "starting-and-selectable",
        "selection-rule-declared-in": "controls.keyboard-start"
      },
      {
        "id": "gamepad-default",
        "platform-control-set": "console-gamepad",
        "label": "Default Layout",
        "availability": "starting-and-selectable",
        "selection-rule-declared-in": "controls.gamepad-default"
      },
      {
        "id": "gamepad-alternate",
        "platform-control-set": "console-gamepad",
        "label": "Alternate Layout",
        "availability": "player-selectable",
        "selection-rule-declared-in": "controls.gamepad-alternate"
      }
    ],
    "action-bindings": [
      {
        "id": "pc-jump-space",
        "platform-control-set": "pc",
        "preset": "keyboard-start",
        "action-declared-in": "movement.jump",
        "physical-input-declared-in": "controls.space",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      },
      {
        "id": "pc-interact-e",
        "platform-control-set": "pc",
        "preset": "keyboard-start",
        "action-declared-in": "world.interact",
        "physical-input-declared-in": "controls.e-key",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      },
      {
        "id": "default-jump-south",
        "platform-control-set": "console-gamepad",
        "preset": "gamepad-default",
        "action-declared-in": "movement.jump",
        "physical-input-declared-in": "controls.south-button",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      },
      {
        "id": "default-interact-west",
        "platform-control-set": "console-gamepad",
        "preset": "gamepad-default",
        "action-declared-in": "world.interact",
        "physical-input-declared-in": "controls.west-button",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      },
      {
        "id": "alternate-jump-west",
        "platform-control-set": "console-gamepad",
        "preset": "gamepad-alternate",
        "action-declared-in": "movement.jump",
        "physical-input-declared-in": "controls.west-button",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      },
      {
        "id": "alternate-interact-south",
        "platform-control-set": "console-gamepad",
        "preset": "gamepad-alternate",
        "action-declared-in": "world.interact",
        "physical-input-declared-in": "controls.south-button",
        "press-style": "press",
        "motion-use": "no-motion",
        "demanding-input": "use-game-default"
      }
    ],
    "simpler-inputs": []
  },
  "pack": "sha256:38a15db9590840c0b288298c204a1e2320ac8160bb99e0ff53997d3f65382cd6"
}