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
This commit is contained in:
2026-07-15 23:35:00 +04:00
parent eb122d52a9
commit 1bf5b526be
12 changed files with 140 additions and 21 deletions
+54 -16
View File
@@ -1,6 +1,7 @@
# M02 — Player Decomposition
<!-- OPENWC_TARGET:ACTIVE -->
<!-- OPENWC_TARGET:DONE -->
<!-- OPENWC_TARGET_DONE:M02:work/sindo-main-codex/m02-integrator-closeout:2026-07-15 -->
## Outcome
@@ -8,14 +9,14 @@
## Steps
- [ ] Заменить hardcoded keys на remappable Input Map actions с профилем 3.3.5a.
- [ ] Выделить `PlayerInputSource → MoveIntent`.
- [ ] Выделить local movement state/controller.
- [ ] Выделить `TerrainQuery` и убрать прямой ADT parsing из player.
- [ ] Выделить third-person camera rig и camera collision policy.
- [ ] Выделить character appearance и animation presenters.
- [ ] Оставить sprint/flight debug-функции только в sandbox profile.
- [ ] Добавить movement/camera state tests и regression scene.
- [x] Заменить hardcoded keys на remappable Input Map actions с профилем 3.3.5a.
- [x] Выделить `PlayerInputSource → MoveIntent`.
- [x] Выделить local movement state/controller.
- [x] Выделить `TerrainQuery` и убрать прямой ADT parsing из player.
- [x] Выделить third-person camera rig и camera collision policy.
- [x] Выделить character appearance и animation presenters.
- [x] Оставить sprint/flight debug-функции только в sandbox profile.
- [x] Добавить movement/camera state tests и regression scene.
## Fidelity evidence
@@ -27,10 +28,47 @@
## Evidence
- Date:
- Revision/worktree:
- Commands:
- Results:
- Fidelity comparison:
- Changed files:
- Remaining risks:
- Date: 2026-07-15
- Revision/worktree: merged master `eb122d5`; closeout
`work/sindo-main-codex/m02-integrator-closeout`.
- Commands: `verify_player_input.gd`; `verify_local_player_movement.gd`;
`verify_player_movement_capabilities.gd`; `verify_terrain_query.gd`;
`verify_third_person_camera_rig.gd`; `verify_character_presentation.gd`;
`verify_coordinate_conversion_boundaries.gd`; `verify_streaming_focus.gd`;
`tools/run_render_baseline.ps1 -DryRun`; documentation, coordination and
diff-hygiene gates.
- Results: input PASS (`16` actions, `9` intent cases, `3` profiles, one
provenance fixture, `3` real-scene cases); movement PASS (`15` cases, `2`
state transitions); profile capabilities PASS (`3` profiles, sprint/flight
allow/reject and `2` scenes); terrain PASS (`4` contract, interpolation,
cache and `2` failure cases); camera PASS (`12` state and `3` policy cases);
presentation PASS (`9` appearance and `10` animation cases across `3`
scenes); coordinate boundary PASS (`103` files, `5` consumers); StreamingFocus
PASS (`2` runtime scenes, `3` capture tools). Renderer dry-run passed project,
material, dedupe and shutdown gates, manifest `7/7/7`, calibration maximum
error `0.000015`, server-spawn renderer and all seven planned checkpoints.
- Fidelity comparison: selected build-12340 default bindings are direct private
observations pinned by `DefaultBindings.wtf` SHA-256
`35FFA0E4E2356A13A0633A848F9E57ABE7DF9D8A16C2245E15D33013AD2F56A5`
and `Bindings.xml` SHA-256
`2E01276AFB7462F1417710F13B4BF1A456341F7F28CC8AE0D6D9C7442D7F6793`;
only sanitized selected facts are committed. `3.141594` rad/s keyboard turn
is pinned to TrinityCore 3.3.5 revision
`2853a621d6af91a803787a2b8a509f4ce3e0300d`; right-mouse A/D strafe routing
is supported by WoWee revision `626243e937fb93965fa583a6507ed5a1aa7dda4b`.
These two sources are compatibility references, not direct client timing/
conditional-behavior proof. Translation speeds and camera values remain
sandbox regression baselines rather than original-client parity evidence;
jump/fall/swim/fly gameplay is not implemented by this decomposition target.
Debug sprint/free flight is proven unable to execute in `Blizzlike335`.
- Changed files: typed input intent/actions/source, local movement/capabilities,
terrain query, camera rig/collision policy, character appearance/animation
presenters, player composition, Input Map configuration, asset-free regression
scenes, sanitized input fixture, M02 verifiers, module specifications and M02
coordination claims.
- Remaining risks: direct build-12340 timing evidence for movement/camera,
jump/fall/swim/fly, autorun, left-button camera/select behavior, active camera
collision, terrain slopes/holes/liquids, persisted keybindings, server authority,
prediction and reconciliation remain for M09/M10/M12. Runtime renderer scenes
continue to default to explicit `RenderSandbox` until an application shell
selects `Blizzlike335`. M02 makes no complete `1:1` compatibility claim.
+1 -1
View File
@@ -1,6 +1,6 @@
# M03 — Renderer Facade and Safe Extraction
<!-- OPENWC_TARGET:OPEN -->
<!-- OPENWC_TARGET:ACTIVE -->
## Outcome
+1 -1
View File
@@ -21,7 +21,7 @@ OpenWC должен предоставить четыре согласованн
- MPQ/BLP/ADT/WDT/M2/WMO native parsing и renderer vertical slice уже существуют.
- Runtime streaming, terrain quality, MultiMesh M2, WMO caches, liquids, sky и character experiments находятся в рабочем состоянии, но сосредоточены в крупных orchestration scripts.
- Renderer baseline M00 завершён: paired comparison с оригинальным клиентом записывает измеренные gaps без заявления parity, а обязательные diagnostic gaps закрыты или явно классифицированы. M01 завершил coordinate, identity и streaming-focus seams; текущая работа M02 декомпозирует player input, movement, terrain query, camera и presentation без observable regression.
- Renderer baseline M00 завершён: paired comparison с оригинальным клиентом записывает измеренные gaps без заявления parity, а обязательные diagnostic gaps закрыты или явно классифицированы. M01 завершил coordinate, identity и streaming-focus seams; M02 декомпозировал player input, movement, terrain query, camera и presentation без observable regression. Текущая работа M03 закрывает renderer стабильным facade и извлекает planner/scheduler без rewrite.
- Gameplay domain, network protocol, production UI/Lua, audio orchestration и server adapters в основном предстоит реализовать.
- Editor plugin пока решает extraction/preview задачи, но не является полноценной authoring platform.
+3 -3
View File
@@ -10,7 +10,7 @@
## Current target
`M02` — [02-player-decomposition.md](02-player-decomposition.md)
`M03` — [03-renderer-facade.md](03-renderer-facade.md)
Одновременно `ACTIVE` может быть только одна цель. Следующая цель становится `ACTIVE` после появления валидной `OPENWC_TARGET_DONE` метки у предыдущей.
@@ -35,8 +35,8 @@
|---|---|---|---|
| M00 | [Renderer baseline](00-render-baseline.md) | — | DONE |
| M01 | [Coordinates and architecture seams](01-coordinates-and-seams.md) | M00 | DONE |
| M02 | [Player decomposition](02-player-decomposition.md) | M01 | ACTIVE |
| M03 | [Renderer facade and extraction](03-renderer-facade.md) | M02 | OPEN |
| M02 | [Player decomposition](02-player-decomposition.md) | M01 | DONE |
| M03 | [Renderer facade and extraction](03-renderer-facade.md) | M02 | ACTIVE |
| M04 | [Godot Editor shell](04-editor-shell.md) | M03 | OPEN |
| M05 | [Content Project](05-content-project.md) | M04 | OPEN |
| M06 | [Server database adapters](06-server-adapters.md) | M05 | OPEN |