Files
open-wc/coordination/claims/M02-GMP-INPUT-001.md
T
sindoring 1bf5b526be qar(M02): close player decomposition milestone
Work-Package: M02-QAR-INTEGRATOR-CLOSEOUT-001
Agent: sindo-main-codex
Tests: all M02 contracts, renderer dry-run, documentation and coordination gates passed
Fidelity: direct binding evidence and reference-only timing/routing are separated; remaining locomotion/camera gaps stay explicit
2026-07-15 23:35:00 +04:00

5.1 KiB

M02-GMP-INPUT-001 — Player input intent seam

Ownership

  • Target: M02
  • Program: GMP/FND
  • Owner/Agent ID: sindo-main-codex
  • Branch: work/sindo-main-codex/m02-player-input
  • Lease expires UTC: 2026-07-16
  • Integrator: M02 milestone integrator

Outcome

Replace direct keyboard polling in the runtime player with remappable Input Map actions and an immutable PlayerInputSource → MoveIntent boundary while preserving the current render-sandbox movement behavior.

Non-goals

  • Extract local movement, terrain query, camera rig or character presenters.
  • Claim exact build-12340 movement/keybinding parity before original-client fixtures.
  • Change movement speeds, camera geometry, terrain sampling or renderer behavior.
  • Mark M02 complete or edit its checklist/Evidence.

Paths

  • Exclusive: src/domain/input/, src/gameplay/input/, src/tests/scenes/player_input_regression.tscn, src/tools/verify_player_input.gd, docs/modules/player-input.md, this claim
  • Shared/hotspots: project.godot, src/scenes/player/third_person_wow_controller.gd, docs/modules/README.md
  • Generated/ignored: Godot import metadata, .uid files and local renderer corpus

Contracts and data

  • Public API: immutable MoveIntent; PlayerInputSource.sample_move_intent
  • Configuration: additive openwc_player_* Input Map actions
  • Persistence/schema/cache: unchanged
  • Consumers: current sandbox player controller; later local movement controller

Dependencies

  • Requires: merged M01 coordinate/streaming-focus contracts on master 62eece9
  • Blocks: later M02 movement-controller extraction
  • External state: none; tests use synthetic Input Map events

Verification

  • Commands: dedicated player-input verifier, headless project load, coordinate boundary gate, coordination/documentation gates and diff hygiene
  • Fixtures: synthetic action strengths and configured default bindings
  • Fidelity evidence: current W/S/A/D, Shift, E/Q and Space sandbox behavior remains mapped through actions; exact 3.3.5a semantics remain unverified
  • Performance budget: one immutable intent allocation per physics tick; no I/O

Documentation deliverables

  • Inline API documentation for MoveIntent, PlayerInputActions and PlayerInputSource
  • Player-input module specification with inputs/outputs, data-flow and sequence diagrams
  • Module registry/source map and honest capability status

Simplicity and naming

  • Important names: MoveIntent, PlayerInputSource, PlayerInputActions
  • Simplest approach: immutable value, one input adapter and one controller consumer
  • Rejected complexity: input provider hierarchy, event bus and generic command framework
  • Unavoidable complexity: none
  • Measured optimization evidence: not applicable

Status

  • State: ready-for-review
  • Done: twelve remappable actions, immutable MoveIntent, stateless PlayerInputSource, controller migration, asset-free regression scene, dedicated verifier and module specification
  • Next: M02 integrator reviews and merges before local movement extraction
  • Blocked by:

Handoff

  • Commit: 6bd2e84
  • Branch: work/sindo-main-codex/m02-player-input
  • Outcome: the runtime player no longer polls physical keyboard keys. Movement action strengths cross an immutable MoveIntent seam; camera and immediate sandbox-flight events use the same remappable action catalog.
  • Public contract: additive MoveIntent, PlayerInputActions and PlayerInputSource; no schema, cache, coordinate or renderer contract change.
  • Verification: PLAYER_INPUT PASS actions=12 intent_cases=6 controller=1 regression_scene=1; asset-free scene smoke exited 0; coordinate boundary (88 files) and StreamingFocus gates passed; unified renderer dry-run passed all eight pre-capture gates and produced seven dry-run checkpoint results; coordination/documentation/diff gates passed.
  • Fidelity: W/S/A/D, Shift, E/Q, Space, right mouse, wheel and Escape remain the default sandbox bindings. Regression drives forward movement, camera zoom and immediate flight toggle through the real controller. This does not establish exact build-12340 default bindings, turn/strafe policy or gameplay movement parity.
  • Local verification inputs: the isolated worktree reused the existing ignored native DLL and generated ADT resource scripts. Proprietary extracted data and the character GLB were absent, so the renderer dry-run logged the expected missing-corpus diagnostics while all contract steps returned success.
  • Rebuild/migration: none. Action names are additive; persisted user-binding migration does not exist yet and is documented as a gap.
  • Remaining risks: production profile gating for sprint/free flight, exact 3.3.5a bindings, local movement/terrain/camera/presentation extraction and broader movement/camera state tests remain M02 work.
  • Documentation: inline API comments plus docs/modules/player-input.md with inputs/outputs, data-flow and sequence diagrams, ownership, recovery, capability status, known gaps and source map.