742c415885
Work-Package: M02-GMP-SANDBOX-CAPABILITIES-001 Agent: sindo-main-codex Tests: capability/input/movement/terrain/camera/presentation; coordinate/streaming/docs/coordination; renderer dry-run 7/7 Fidelity: proves debug sprint/free-flight exclusion in Blizzlike335; no positive movement parity claim
3.4 KiB
3.4 KiB
M02-GMP-SANDBOX-CAPABILITIES-001 — Debug movement capability gate
Ownership
- Target: M02
- Program: GMP/FND
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m02-sandbox-capabilities - Lease expires UTC: 2026-07-16
- Integrator: M02 milestone integrator
Outcome
Introduce an immutable local-player movement capability contract and require it
at the movement boundary so debug sprint and free flight execute only in the
explicit RenderSandbox profile and are rejected by Blizzlike335.
Non-goals
- Claim that current movement values or
Blizzlike335locomotion are 1:1. - Build a global application/profile framework before the application shell exists.
- Remove debug Input Map actions or change their current sandbox bindings.
- Implement jump, fall, swim, collision, server authority or reconciliation.
- Mark M02 complete or edit its checklist/Evidence.
Paths
- Exclusive:
src/gameplay/movement/player_movement_capabilities.gd,src/tools/verify_player_movement_capabilities.gd, this claim - Shared/hotspots:
src/gameplay/movement/local_player_movement_controller.gd,src/scenes/player/third_person_wow_controller.gd, movement/input verifiers, player regression scene,docs/modules/local-player-movement.md,docs/modules/player-input.md - Generated/ignored: local
.godot, native DLL, generated resources and renderer corpus
Contracts and data
PlayerMovementCapabilitiesowns immutable profile ID plus explicit debug sprint/flight booleans and safe named factories.LocalPlayerMovementControllerrequires the capability value; missing input falls back toBlizzlike335, never sandbox.- Player scene maps its exported profile selection once at the composition boundary.
- Input actions and
MoveIntentremain unchanged; rejected debug requests have no effect.
Dependencies
- Requires: merged character presentation package on master
8c71e46. - Blocks: final M02 integration audit and milestone closeout.
- External state: none; verification is asset-free.
Verification
- Pure profile factory/default and immutability regression.
- Sprint accepted in RenderSandbox and ignored in Blizzlike335.
- Flight toggle/vertical basis accepted in RenderSandbox and rejected in Blizzlike335.
- Real regression scene verifies both profile compositions.
- Existing input/movement/terrain/camera/presentation and renderer gates remain required.
- Fidelity evidence: negative proof that debug capabilities cannot affect the compatibility profile; no positive movement parity claim.
Documentation deliverables
- Inline public API and profile semantics on the capability/controller boundary.
- Updated movement and input specs: API, inputs/outputs, data flow, lifecycle, failure/recovery, capability matrix and source map.
Simplicity and naming
- Important name:
PlayerMovementCapabilities. - Simplest approach: one immutable value injected into the existing controller.
- Rejected complexity: autoload singleton, generic feature-flag service and global profile registry.
- Unavoidable complexity: one profile-to-capability mapping at scene composition.
- Measured optimization evidence: not applicable.
Status
- State: active
- Done: claim and isolated worktree from merged presentation master
- Next: implement capability contract, gate controller/player and add regressions
- Blocked by: