Files
aetherbound-guild/docs/runtime/PHASE10_0R1_WEB_TOUCH_ACTIVATION_CONTRACT.md
T

1.6 KiB

P10.0R1 Web Touch Activation Contract

Revision: p10.0r1-web-touch-contract-r1 Status: FROZEN

Input Authority

P10.0 owns raw InputEventScreenTouch and InputEventScreenDrag inside its runtime controller. ScreenTouch activation must not depend on the engine or browser synthesizing a MouseButton event.

For one touch index:

  1. Press records the topmost visible enabled P10.0 Button under the point.
  2. Release over the same live Button emits that Button's pressed signal once.
  3. Release outside, disabled state, a different Button or canceled ownership emits nothing.
  4. A line drag above the declared slop commits only the drag and emits no Button press.
  5. The controller marks owned touch events handled so mouse emulation cannot duplicate the command. Real MouseButton input remains owned by Godot Button.

Settings overlay z-order must win over hidden underlying controls. No handler may invoke a gameplay method directly; it must use the same Button signal bound by the visible UI.

Persistence Boundary

New Expedition transitions to the four-Recruit draft even when persistence is enabled. The saved draft must reload with the same four offers. A save failure must be visible as a named status and must not leave the Title looking inert.

Evidence

  • Raw-touch test with mouse-from-touch emulation off.
  • Existing parsed-touch test with emulation on to prove no duplicate action.
  • MouseButton front-door probe.
  • Persistence-on first action and reload.
  • Focused P10.0/P9.10 regressions, normal landscape rendering, fresh Web export and replacement Gallery transport.

Human phone touch acceptance remains Owner-only.