diff --git a/CLAUDE.md b/CLAUDE.md index 733f2096..6f88378b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -109,14 +109,15 @@ movement queries. ## Current state **Currently working toward: M1.5 — Indoor world feels right** (building/cellar demo -DONE + gated; REMAINING: **A7 dungeon lighting** #79/#93, **#137 dungeon collision**, -**#138 teleport-OUT**). Two **user-report-driven parity tracks** interleave with it at -the issue level (reconciled 2026-07-04 — they are NOT milestones; see the M1.5 note in -the milestones doc): **D.2b retail UI** (next: container-switching — -`claude-memory/project_d2b_retail_ui.md`) and the **R5 movement-manager arc** -(#170/#171 + R5-V3 CLOSED + gated 2026-07-04; next: **R5-V4** capstone — -`docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md`). M2 (CombatMath) -deferred. Keep this paragraph ≤6 lines + pointers — detail in the docs below, NOT here. +DONE + gated; REMAINING = the critical path: **#137 dungeon collision**, +**#138 teleport-OUT**, **A7 dungeon lighting** #79/#93). One **user-report-driven +parity track** still interleaves at the issue level (NOT a milestone; see the M1.5 +note in the milestones doc): **D.2b retail UI** (next: container-switching — +`claude-memory/project_d2b_retail_ui.md`). The **R5 movement-manager arc is DONE** +(2026-07-05, V5 facade shipped; close-out banner in +`docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md`; carried: #167, R6/TS-42). +M2 (CombatMath) deferred. Keep this paragraph ≤6 lines + pointers — detail in the docs +below, NOT here. For canonical state, read in this order: - [`docs/plans/2026-05-12-milestones.md`](docs/plans/2026-05-12-milestones.md) — milestone targets + freeze list per milestone diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 0109b6c6..fcc681de 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -734,8 +734,24 @@ diagnostic scaffolding, not yet the final collision system. streaming hole (`9b06a9b8`) — both verified live. Filed **#170** (remote creature chase+attack animation divergence vs retail — glide/over-frequency/ uniform attacks; decomposes into #159 + pending_motions loop + dead-reckon - glide). NEXT: R5-V3/V4 (sticky/TS-39, facade/#164 — `r5-wiring-handoff.md`) - OR #170. Entry point: `docs/research/2026-07-03-session-handoff.md`. + glide). **#170 CLOSED + gated 2026-07-04** (`427332ac` re-dispatch flood + + `1051fc83` armed-moveto-always-ticks). **R5-V3 SHIPPED + gated 2026-07-04** + (#171 sticky melee, three slices `5bd2b8bc`/`7a823176`/`69966950` — TS-39 + retired, TS-43/TS-44/AP-82 filed). **R5-V4 behavioral items SHIPPED + gated + 2026-07-04 `f423884b`** (head style-on-change all mt types, #164 autonomy + bit, mt-0 wire flags consumed). **R5-V5 SHIPPED 2026-07-05 — the R5 arc is + DONE**: the `MovementManager` facade (retail acclient.h `/* 3463 */`, + methods 0x00524000-0x00524790) now owns each entity's interp+moveto pair — + ONE per entity (`RemoteMotion.Movement`, `PlayerMovementController.Movement`, + chase-harness mirror); the three wiring sites construct through + `MoveToFactory` + `MakeMoveToManager` (0x00524000) and the relay shapes + (`UseTime` 0x005242f0, `HitGround` 0x00524300, `HandleExitWorld` 0x00524350, + `CancelMoveTo` 0x005241b0, `HandleUpdateTarget` 0x00524790, + `PerformMovement` 0x005240d0) replace the loose-pair call sites. Structural, + zero behavior change; 15 facade conformance tests; suite 4052 green with the + 183-case/funnel/moveto/chase/sticky suites unmodified. Arc close-out: + `docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md`. Open follow-ons + carried: #167 (ConstraintManager arming), TS-42 per-tick order (R6). - **L.2g — Inbound motion interpretation (remote-entity CMotionInterp funnel).** ACTIVE 2026-07-02. Port retail's inbound motion pipeline verbatim for ALL remote entities (players, NPCs, monsters — one funnel, user-approved): diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index d31d40d3..c1d68ffc 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -232,11 +232,13 @@ side-by-side-vs-retail sessions, both issue-level per the operating rules to M1.5 rather than becoming milestones of their own: (1) **D.2b retail UI** — inventory window / paperdoll / item interaction shipped and gated; next container-switching (`claude-memory/project_d2b_retail_ui.md`); -(2) **the R5 movement-manager arc** — the retail MovementManager family -port (TargetManager voyeur system V2, StickyManager/PositionManager V3) -that closed the #170 chase-slide and #171 pack-melee gates (2026-07-04); -one capstone slice (R5-V4) remains -(`docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md`). Rationale: +(2) **the R5 movement-manager arc — DONE 2026-07-05** — the retail +MovementManager family port (TargetManager voyeur system V2, +StickyManager/PositionManager V3, V4 behavioral items, V5 MovementManager +facade — every entity now holds ONE `MovementManager` owning its +interp+moveto pair) that closed the #170 chase-slide and #171 pack-melee +gates (`docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md` has the +arc close-out). Rationale: rule 1's "one active milestone" governs where NEW scope goes — these tracks fix observed retail-parity defects in already-shipped systems, which the operating rules have always allowed; declaring them milestones diff --git a/docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md b/docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md index a4773c4e..c59e2a16 100644 --- a/docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md +++ b/docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md @@ -1,4 +1,38 @@ -# R5 wiring handoff — V1 landed, V2/V3/V4 are the visual-gated wiring +# R5 wiring handoff — ARC DONE 2026-07-05 (V1-V5 all shipped) + +> **ARC CLOSE-OUT 2026-07-05.** All five slices landed: V1 (Core classes, +> `3d89446d`), V2 (TargetManager voyeur wiring, AP-79 retired, `fffe90b3`), +> V3 (sticky melee #171, three slices, TS-39 retired, gate PASSED), V4 +> behavioral items (head stance dispatch + #164 + mt-0 flags, `f423884b`, +> gate PASSED), **V5 (MovementManager facade — structural, zero behavior +> change)**: `src/AcDream.Core/Physics/Motion/MovementManager.cs` (retail +> acclient.h `/* 3463 */`; MakeMoveToManager 0x00524000, PerformMovement +> 0x005240d0, UseTime 0x005242f0, HitGround 0x00524300, HandleExitWorld +> 0x00524350, CancelMoveTo 0x005241b0, HandleUpdateTarget 0x00524790, +> IsMovingTo 0x00524260) owns each entity's interp+moveto pair. The three +> wiring sites (`EnsureRemoteMotionBindings`, `EnterPlayerModeNow`, the +> chase harness) construct through `MoveToFactory` + `MakeMoveToManager()` +> — the factory closure is the acdream stand-in for retail's +> physics_obj/weenie_obj backpointers; `RemoteMotion.Motion/.MoveTo` and +> `PlayerMovementController.MoveTo` are now child VIEWS of the facade +> (`RemoteMotion.Movement` / `PlayerMovementController.Movement`), so the +> comment-dense call sites read unchanged. Relay call sites repointed: +> both landing HitGround pairs + the player landing pair, despawn +> HandleExitWorld, TickRemoteMoveTo + the player Update UseTime, +> RouteServerMoveTo (now takes the facade; routes through the retail +> PerformMovement dispatch), InstallSpeculativeTurnToTarget, both host +> HandleUpdateTarget/InterruptCurrentMovement closures, TS-36 interrupt +> chains. NOT absorbed (per slice spec): unpack_movement stays App +> (RouteServerMoveTo + the UM heads), TS-42 per-tick order untouched (R6), +> #170/#171 gate-passed machinery untouched. 15 facade conformance tests +> (`MovementManagerTests.cs`); suite 4052 green, protected suites +> unmodified. Register: TS-41/TS-42 wording freshened, AD-36 retire note +> corrected (facade half closed; no new rows). **Open follow-ons: #167 +> ConstraintManager arming (TS-35), R6 per-tick order (TS-42), TS-43 +> remote teleport hook.** Next work per the milestones doc: M1.5 critical +> path — #137 dungeon collision, #138 teleport-OUT, A7 dungeon lighting. + +(Original handoff below, kept for the trail.) Successor to `2026-07-03-r5-entry-handoff.md`. **R5-V1 shipped** (`3d89446d`): the retail movement-manager family is ported to Core as faithful, fully-tested, @@ -121,8 +155,8 @@ or a moving-platform stick) HOLDS the target instead of stopping-and-drifting. > stance-on-arm harness scenario + the autonomy funnel test; suite 4041 > green. **The MovementManager facade DEFERRED to its own slice** (the > handoff's own "optional if the arc runs long" clause — this arc ran two -> full gate cycles); it remains the structural capstone for a fresh -> session, unblocked, spec below. +> full gate cycles). **→ SHIPPED 2026-07-05 as R5-V5; see the arc +> close-out banner at the top of this doc.** - Collapse per-entity `Motion`+`MoveTo` into a `MovementManager` owner (structural; keep 183-case/funnel/moveto green UNMODIFIED). Optional if the arc runs long — the retirements above don't need it. diff --git a/docs/research/2026-07-04-r5v5-facade-pickup-prompt.md b/docs/research/2026-07-04-r5v5-facade-pickup-prompt.md index f0d9b61a..4bf469b6 100644 --- a/docs/research/2026-07-04-r5v5-facade-pickup-prompt.md +++ b/docs/research/2026-07-04-r5v5-facade-pickup-prompt.md @@ -1,5 +1,9 @@ # Pickup prompt — R5-V5: MovementManager facade (paste into a fresh session) +> **DONE 2026-07-05.** Implemented as specified; suite 4052 green with the +> protected suites unmodified. Arc close-out lives in +> `2026-07-03-r5-managers/r5-wiring-handoff.md` (top banner). + Read `docs/research/2026-07-03-r5-managers/r5-wiring-handoff.md` first (the §V4 status note + the facade paragraph are the SSOT), then `docs/research/2026-07-03-r5-managers/r5-movementmanager-decomp.md` (the