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
83 lines
3.4 KiB
Markdown
83 lines
3.4 KiB
Markdown
# M02-GMP-SANDBOX-CAPABILITIES-001 — Debug movement capability gate
|
|
|
|
<!-- OPENWC_CLAIM:M02-GMP-SANDBOX-CAPABILITIES-001:sindo-main-codex:2026-07-16 -->
|
|
|
|
## 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 `Blizzlike335` locomotion 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
|
|
|
|
- `PlayerMovementCapabilities` owns immutable profile ID plus explicit debug
|
|
sprint/flight booleans and safe named factories.
|
|
- `LocalPlayerMovementController` requires the capability value; missing input
|
|
falls back to `Blizzlike335`, never sandbox.
|
|
- Player scene maps its exported profile selection once at the composition boundary.
|
|
- Input actions and `MoveIntent` remain 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:
|