docs: reconcile project status and navigation

Add a canonical documentation map, modernize the public README, and align milestone, roadmap, architecture, issue, divergence, and session guidance with the July 20 baseline. Correct the far-teleport residual to issue #153, close visually accepted indicator and terrain-tiling work, record the remaining detail-overlay and build-warning debt, and deprecate the duplicate legacy bug ledger.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-20 13:00:41 +02:00
parent a755b764bf
commit 6c3bd4ce4b
11 changed files with 429 additions and 155 deletions

View file

@ -1,6 +1,6 @@
# acdream — strategic roadmap
**Status:** Living document. Updated 2026-07-20. **M3 active; automated implementation complete, visual gates pending.** M2's connected demo loop is complete. M3 now has the retail cast-intent/component/target lifecycle, exact live enchantment wire state, scoped Magic input, retained spell bar, spellbook, component book, positive/negative effects panels with authored rows and selected-spell details, the complete seven-control gameplay indicator strip and its Character Information/Link/Vitae detail pages, and shared `gmPanelUI` geometry/switching over the Step 9 projectile/PhysicsScript/particle/portal foundation. The remaining M3 work is the connected single-client magic-UI/casting gate and final two-client portal-out/materialization observer gate.
**Status:** Living document. Updated 2026-07-20. **M3 active; automated implementation and connected single-client magic/portal gates complete.** M2's connected demo loop is complete. M3 now has the retail cast-intent/component/target lifecycle, exact live enchantment wire state, scoped Magic input, retained spell bar, spellbook, component book, positive/negative effects panels with authored rows and selected-spell details, the complete seven-control gameplay indicator strip and its Character Information/Link/Vitae detail pages, and shared `gmPanelUI` geometry/switching over the Step 9 projectile/PhysicsScript/particle/portal foundation. The next gate is a local visual rebaseline of the new R6 object-frame path; the final M3 requirement is the two-client portal-out/materialization observer gate. Issue #225's lifestone/particle alpha comparison is a separate rendering visual gate.
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
---
@ -30,9 +30,13 @@ active enchantment, then recall through the DAT-driven portal presentation.
Connected-gate
correction now also pins type-12 spellbook tabs, retail zero text margins,
and `PassToChildren` Closed/Open chrome through real-DAT fixtures.
3. **Pending user visual gate:** connected projectile/self-buff casts plus the
complete retained magic UI interaction checklist.
4. **Pending user visual gate:** two-client portal-out/materialization observer
3. **Done (connected user gates):** projectile/self-buff casts, protection
effects, spellbook/component-book filtering and deletion, favorite spell
bar interaction, recall, portal-space presentation, and retained indicator
pages.
4. **Pending local visual gate:** locomotion, collision, projectile, and
teleport comparison after the R6 complete-root-Frame/object-workset cutover.
5. **Pending two-client visual gate:** portal-out/materialization observer
presentation before M3 closes, including #218's finished Hidden silhouette,
fully rendered destination reveal, and no indoor stop-time position snap.
@ -43,10 +47,10 @@ the active slice only when they block this demo or represent a severe regression
## Historical program: Phase W — Unified Cell Graph (UCG)
**[SUPERSEDED — G.3 dungeon work shipped; M1.5 next step = #138 round-trip
gate + #145-residual. See the shipped table + `docs/plans/2026-05-12-milestones.md`
M1.5 section for current status. This section's W1/W2a history below is kept
for record.]**
**[SUPERSEDED — G.3 shipped and M1.5 landed after the #138 round-trip gate.
Issue #153 is a separate far-teleport edge residual. See the shipped table +
`docs/plans/2026-05-12-milestones.md` M1.5 section for current status. This
section's W1/W2a history below is kept for record.]**
**Pivot (2026-06-02).** The render-pipeline reset stalled because the indoor "world from
below" is a cell-**membership** disagreement between the render-side `CellVisibility` and
@ -606,7 +610,7 @@ Research: R9 + R12 + R13.
- **✓ SHIPPED — G.1 — Sky + weather + day-night.** Deterministic client-side from Portal Year time. Sky dome geometry + keyframe gradients + rain/snow particles. See `r12-weather-daynight.md`. Full data + visual stack shipped: Region dat loader, keyframe interp, WeatherSystem with 5-kind PDF + transitions + storm flashes, WorldSession→WorldTimeService sync via ConnectRequest+TimeSync, SkyRenderer with sky-object arcs + UV scroll, rain/snow billboard renderer, F7/F10 debug cycle keys.
- **✓ SHIPPED — G.2 — Dynamic lighting.** 8-light D3D-style fixed pipeline. Hard-cutoff at Range, no attenuation inside. Cell ambient. Shader UBO per frame. See `r13-dynamic-lighting.md`. SceneLightingUbo std140 at binding=1 feeds terrain + mesh + mesh_instanced + sky shaders. LightingHookSink auto-registers Setup.Lights at entity stream-in, flips IsLit on SetLightHook, unregisters on landblock unload.
- **Indoor portal-based cell tracking (follow-up to Indoor walking Phase 1 / issue #87).** Replace `PhysicsDataCache.TryFindContainingCell` AABB containment with retail's `CObjMaint::HandleObjectEnterCell` portal traversal. When the player crosses a cell portal boundary, `CellId` propagates through the `CEnvCell` portal connectivity graph. Prerequisite for wall collision from outside (#85) and the remaining #84 threshold symptom. PDB symbols and `acclient.h` `CCellStructure` refs are in place (see #87). **Unblocks G.3.**
- **✓ SHIPPED — G.3 — Dungeon streaming + portal space.** `EnvCellStreamer`, portal-visibility BFS, `PlayerTeleport (0xF751)` handling with post-transition `LoginComplete`, and the retail DAT-authored portal-space CreatureMode viewport (Setup `0x02000306`, animation `0x030005AC`, exact camera/light/timing/view-plane transitions, forward-axis roll, direct portal→world viewport switch, projection warp, destination viewer reset, object/physics-before-network frame barrier, pre-network input movement/jump output, post-inbound AutonomousPosition, non-advancing spatial reconciliation, and retail `set_hidden` PartArray timeline teardown on both Hidden and UnHide; `/ls` and spell-recall corrective visual gates passed 2026-07-16, with non-blocking visual polish deferred). Dungeons render, stream, teleport-in, collide, light, and their doors work — see the shipped-table rows (G.3, G.3a, #137 collision, A7.L1 lighting) below and the M1.5 section of `docs/plans/2026-05-12-milestones.md` for current gate status (one recorded end-to-end dungeon round-trip user gate outstanding; live residual = far-town teleport-OUT arrival cascade, #145-residual REOPENED). See `r09-dungeon-portal-space.md` and `docs/research/2026-07-15-retail-portal-space-pseudocode.md`.
- **✓ SHIPPED — G.3 — Dungeon streaming + portal space.** `EnvCellStreamer`, portal-visibility BFS, `PlayerTeleport (0xF751)` handling with post-transition `LoginComplete`, and the retail DAT-authored portal-space CreatureMode viewport (Setup `0x02000306`, animation `0x030005AC`, exact camera/light/timing/view-plane transitions, forward-axis roll, direct portal→world viewport switch, projection warp, destination viewer reset, object/physics-before-network frame barrier, pre-network input movement/jump output, post-inbound AutonomousPosition, non-advancing spatial reconciliation, and retail `set_hidden` PartArray timeline teardown on both Hidden and UnHide; `/ls` and spell-recall corrective visual gates passed 2026-07-16, with non-blocking visual polish deferred). Dungeons render, stream, teleport, collide, light, and their doors work; the final end-to-end dungeon round-trip gate passed 2026-07-10. See the shipped-table rows (G.3, G.3a, #137 collision, A7.L1 lighting) and the M1.5 section of `docs/plans/2026-05-12-milestones.md`. The far-town unstreamed-edge arrival residual is tracked separately as #153. See `r09-dungeon-portal-space.md` and `docs/research/2026-07-15-retail-portal-space-pseudocode.md`.
**Acceptance:** walk outside at dusk, see the sky gradient + sun moving; enter a torch-lit dungeon via portal; leave back to daylight.
@ -647,7 +651,7 @@ the way retail + holtburger expect.
- Attacking a creature produces "You hit Drudge for 12 slashing damage (87%)" lines in chat.
- Accented character names round-trip through the wire correctly (CP1252).
**Memory crib:** `memory/project_chat_pipeline.md`.
**Memory crib:** `claude-memory/project_chat_pipeline.md`.
---
@ -704,7 +708,7 @@ with retail's MMB-hold mouse-look.
dormant — light up in Phase L when `CombatState.CurrentMode` is
wired (issue #L.3).
**Memory crib:** `memory/project_input_pipeline.md`.
**Memory crib:** `claude-memory/project_input_pipeline.md`.
---
@ -915,8 +919,9 @@ diagnostic scaffolding, not yet the final collision system.
InterpolationManager into the owned
PositionManager facade remains the final R6 ownership cleanup.
Final 2026-07-20 gate: three independent retail/architecture/adversarial
re-reviews are clean; Release build is warning-free; the repository suite is
6,452 passed / 5 skipped. The unattended connected Release rebaseline also
re-reviews are clean; Release builds successfully with 17 known test-project
warnings tracked by #228; the repository suite is 6,452 passed / 5 skipped.
The unattended connected Release rebaseline also
passes: seven portal materializations across Caul, Sawato, Rynthid,
Aerlinthe, Holtburg, and same-location revisits; production-dispatcher turn,
forward, charged-jump, and combat inputs; outbound movement evidence;
@ -1441,8 +1446,8 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
## Cross-cutting work tracked in parallel
- **Test coverage.** Each phase lands with unit + integration tests in `tests/`. Current count: 98 Core + 96 Core.Net = 194. Keep the ratio as new phases land.
- **Memory files.** Project state under `memory/project_phase_*_state.md` is updated when a phase ships. `MEMORY.md` is the index.
- **Test coverage.** Each phase lands with layer-matched unit and integration tests in `tests/`. Current Release baseline: 6,452 passed / 5 intentional skips (2026-07-20).
- **Memory files.** Live subsystem state and digests are indexed by `claude-memory/MEMORY.md`; stable engineering references remain under `memory/`. Canonical program status stays in milestones/roadmap/issues.
- **`CLAUDE.md` discipline.** Check all four references (ACE, ACViewer, WorldBuilder, Chorizite) before committing to an approach. WorldBuilder is the closest stack match and should be checked first.
---
@ -1470,8 +1475,8 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
| Character clothing missing / wrong | **5 FIXED** ✓ |
| Statue wrong color / wrong scale | **5 FIXED** ✓ |
| Holtburg sign half-buried | **5 FIXED** ✓ |
| Can't walk past the loaded 3×3 window | **A.1 FIXED** ✓ (5×5 default, `ACDREAM_STREAM_RADIUS` to tune) |
| Frame hitch crossing landblock boundary | **Phase A.3** (synchronous loader for now; async returns when DatCollection is thread-safe) |
| Can't walk past the loaded 3×3 window | **A.1/A.5 FIXED** ✓ (two-tier streaming, near 4 / far 12 by default; legacy override remains) |
| Frame hitch crossing landblock boundary | **A.3/A.5 async streaming SHIPPED**; residual content-load hitches are measured under Modern Pipeline MP1c |
| Walking around doesn't move me on the server | **Phase B.2/B.3 FIXED** ✓ for coarse server movement; fine retail collision parity is **Phase L.2** |
| Packet loss / out-of-order UDP causes stale or missing world updates | **Phase M.3** |
| Server asks for retransmit and client doesn't resend cached packets | **Phase M.3** |
@ -1482,22 +1487,22 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
| Sliding along buildings / walls feels wrong | **Phase L.2c + L.2d** |
| Roof edge / cliff / precipice blocks or slides wrong | **Phase L.2c** |
| Crossing outdoor cell seams reports the wrong cell | **Phase L.2e** |
| Can't talk to NPCs | **Phase H.3** (emote scripts + dialogs) |
| Can't open a door | **Phase F** (object-use action) |
| Portals render as a rotating black disk | **Phase E.3** (particle system) |
| Chimneys have no smoke | **Phase E.3** |
| Houses have no fireplace fire | **Phase E.3** |
| Can't talk to NPCs | Basic select/use/give interaction works; full emote conversation/dialog systems remain **Phase H.3** |
| Can't open a door | **FIXED** ✓ — object-use, animation, fading hooks, and collision transitions shipped |
| Portals render as a rotating black disk | **FIXED** ✓ — DAT particles/effects and portal-space presentation shipped |
| Chimneys have no smoke | **Phase E.3 SHIPPED** |
| Houses have no fireplace fire | **Phase E.3/G.2 SHIPPED** |
| No fireplace / torch lighting | **Phase G.2** (shipped; Setup.Lights auto-register, 8-light cap with hard-cutoff) |
| Skin/hair color slightly off | **Phase C.3** |
| No chat window | **Phase H.1 / I.1-I.7 FIXED** ✓ |
| Chat? You can finally type and send messages | **I.4 FIXED** ✓ (shipped 2026-04-25) |
| Combat doesn't show in the chat log | **I.7 FIXED** ✓ |
| Accented character names show as `?` or garbled | **I.5 FIXED** ✓ (Windows-1252 codec) |
| No sound | **Phase E.2** |
| Dungeons / foundry interior missing | **Phase G.3 — SHIPPED** (render/stream/teleport-in/collide/light/doors all closed; M1.5 next step = #138 round-trip gate + #145-residual) |
| Can't fight monsters | **Phase F.3** (combat math + damage) |
| Can't cast spells | **Phase F.4** |
| No inventory panel | **Phase F.2 + F.5** |
| No sound | **Phase E.2 SHIPPED** ✓ (remaining unsupported codecs are TS-9) |
| Dungeons / foundry interior missing | **Phase G.3 — SHIPPED + M1.5 gate passed 2026-07-10** (render/stream/teleport/collision/light/doors closed; separate far-teleport edge residual = #153) |
| Can't fight monsters | **M2 LANDED 2026-07-15** ✓ — melee/missile, death, loot, inventory loop user-gated |
| Can't cast spells | **M3 connected single-client casting/effects gate passed** ✓; final two-client portal observer gate remains |
| No inventory panel | **D.5 / M2 SHIPPED + user-gated** ✓ — bags, stacks, paperdoll, equipment, drag/drop, loot |
| No character creation — must use ACE admin | **Phase H.4** |
| Sky is a flat color | **Phase G.1** (shipped; F7 cycles time, F10 cycles weather) |
| Can't join allegiance | **Phase H.2** |

View file

@ -15,11 +15,14 @@ new R6 object-update cutover has passed its unattended connected input/portal/
performance rebaseline; its locomotion/collision/projectile/teleport visual
gate remains for the next local viewing session before that observer gate.
Carried:
#145-residual, #116 slide-response, the remaining R6 ownership cleanup plus
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus
registered TS-50/TS-51 timing residuals (the complete-root-Frame/object-workset
cutover is automated-test complete 2026-07-20; three independent re-reviews are
clean, Release builds with zero warnings, and 6,452 tests pass / 5 skip), and
Track MP0.
clean, Release builds with 17 known test-project warnings tracked by #228, and
6,452 tests pass / 5 skip), and
the deferred Modern Pipeline track (MP1b+). The separate #225 shared-alpha
implementation has passed connected lifetime/performance gates and awaits only
its lifestone/particle visual comparison.
---
@ -219,7 +222,7 @@ lighting (#79/#93/#80). The indoor-physics workarounds (#90 stickiness +
`TryFindIndoorWalkablePlane` synthesis) were removed by A6.P4 — no duct-tape
left. **Explicit caveats carried forward (NOT M1.5 blockers — tracked as
their own follow-ups):** the far-town teleport-OUT arrival cascade
(#145-residual, REOPENED — a narrow far-teleport streaming edge case,
(#153, REOPENED — a narrow far-teleport streaming edge case,
capture-harness-first) and #116 slide-response feel-debt. Next: **M2 —
"Kill a drudge."**
@ -238,10 +241,10 @@ multi-landblock dungeon LOD + `PlayerTeleport` handling), and it has since
blowup (RESOLVED), dungeon doors (#187/#188), and A7 dungeon lighting
(#79/#93/#80/#154, all CLOSED). M1.5's dungeon-demo scenario (enter via
portal, navigate 3-5 rooms, walls block, smooth transitions) is
functionally met; M1.5 now awaits ONE recorded end-to-end dungeon
round-trip user gate. The sole remaining live-code residual is the
far-town teleport-OUT arrival cascade (**#145-residual, REOPENED** — see
below).
functionally met. The final end-to-end dungeon round-trip gate passed on
2026-07-10 and landed M1.5. The separate live-code residual is the far-town
teleport-OUT arrival cascade (**#153, REOPENED** — see below); it is not a
dungeon-round-trip blocker.
**Building/cellar demo — DONE + user-gated.** The indoor world reads as
solid. Across the
@ -311,10 +314,9 @@ shipped: teleport-into-dungeon (G.3a hold-until-hydrate FSM,
#137 (`0efa7ed2`); the #95 portal-graph visibility blowup RESOLVED
(9.1M→~39k instances, `a40c38e8`); dungeon doors shipped (#187
`e2e285b8`, #188 `3284dd0a`); A7 dungeon lighting closed
(#79/#93/#80/#154, `44cced71`/`d275ed55`/`9ebb2060`). Remaining: one
recorded end-to-end dungeon round-trip user gate, plus the far-town
teleport-OUT arrival cascade residual (**#145-residual, REOPENED** —
capture-harness-first).
(#79/#93/#80/#154, `44cced71`/`d275ed55`/`9ebb2060`). The recorded end-to-end
dungeon round-trip passed on 2026-07-10. The far-town teleport-OUT arrival
cascade residual remains separate (**#153, REOPENED** — capture-harness-first).
**2026-07-15 portal presentation completion (single-client visual gate passed
2026-07-16; non-blocking polish deferred).** The
@ -482,7 +484,7 @@ the A6 physics/membership family + A6.P4 per-cell shadow architecture, A7
indoor/dungeon lighting, and **full Phase G.3 dungeon support** (streaming
collapse/expand, teleport in/out, dungeon collision/lighting/doors). No
rework until M7 polish. Exempt from the freeze as still-open bugs (rule 2's
"actively broken" clause): #145-residual (far-town teleport-OUT cascade) and
"actively broken" clause): #153 (far-town teleport-OUT cascade) and
#116 (slide-response) — these are tracked follow-ups, not frozen work.
**Estimated timeline:** 35 weeks calendar (1726 days focused work). Bigger