plan(O): Phase O — DatPath Unification — filed + active (pre-empts M1.5)

Phase O extracts the WB pieces we actually use (mesh pipeline, texture
decode, GL state, scenery, terrain blending, EnvCell/portal decode —
roughly 3-5K LOC) into src/AcDream.Core/Rendering/Wb/, swaps their
dat dependency from DefaultDatReaderWriter to our DatCollection, and
drops the WorldBuilder.Shared + Chorizite.OpenGLSDLBackend project
references. WB stays in references/ as a read reference, not as a
project dependency. MIT attribution in NOTICE.md.

Tagline: ONE thing touches the DATs.

Discipline: verbatim copy first, no "improvements" while extracting.
Refactors land in follow-up phases. Out of scope: re-porting from
retail decomp; perf optimization; API cleanup.

User direction 2026-05-21: pre-empts M1.5. M1.5 paused at its
2026-05-20 baseline; A6/A7 don't touch dat infrastructure so no
rework needed when it resumes.

Files:
- docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md (new, full spec)
- docs/plans/2026-04-11-roadmap.md (Phase O block inserted before M1.5; M1.5 marked PAUSED)
- CLAUDE.md (Currently-working-toward line updated; M1.5 block marked paused)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-21 13:59:33 +02:00
parent f02bd1fb4d
commit 0d85fe1f10
3 changed files with 322 additions and 15 deletions

View file

@ -698,20 +698,34 @@ inn door, click NPC, pick up item. Freeze list active — M1's phases
are off-limits until M7 polish. Writeup at top of M1 block in
`docs/plans/2026-05-12-milestones.md`.
**Currently working toward: M1.5 — "Indoor world feels right."** Opened
2026-05-20 after continued indoor testing surfaced a deep family of
physics + lighting bugs that span buildings AND dungeons. Demo
scenario: enter the Holtburg Sewer through the in-town portal,
navigate through (walls block, stairs work, items block, lighting
reads correctly), exit back to town. Phases to ship: A6 (Indoor
physics fidelity, cdb-driven) + A7 (Indoor lighting fidelity,
RenderDoc + retail-decomp driven). Issues in scope: #80, #81, #83,
#88, #90 (workaround removal), L-indoor, L-spotlight, stairs,
2nd-floor, cellar, and the `TryFindIndoorWalkablePlane` synthesis
removal. Estimated 35 weeks calendar work. **M2 ("Kill a drudge")
is deferred until M1.5 lands** — drudges live in dungeons and the
M2 demo target requires solid indoor navigation. Full M1.5 writeup
at the corresponding block in `docs/plans/2026-05-12-milestones.md`.
**Currently working toward: Phase O — DatPath Unification** (active as
of 2026-05-21, by user direction — pre-empts M1.5). Tagline: "ONE
thing touches the DATs." We currently run two dat readers in process
(our `DatCollection` + WorldBuilder's `DefaultDatReaderWriter`); this
phase extracts the WB pieces we actually use into
`src/AcDream.Core/Rendering/Wb/`, swaps their dat dependency to our
`DatCollection`, and drops the `WorldBuilder.Shared` +
`Chorizite.OpenGLSDLBackend` project references. WB stays in
`references/` as a read-reference, not as a project dependency.
Verbatim copy first, no "improvements" while extracting. Spec:
[`docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md`](docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md).
Estimated 7-8 working days, ships as one merge window.
**M1.5 — PAUSED for Phase O.** Indoor walking work is held at the
2026-05-20 baseline (described below) and resumes once Phase O lands.
M1.5's Phase A6/A7 don't touch dat infrastructure, so no rework will
be needed. Demo scenario: enter the Holtburg Sewer through the
in-town portal, navigate through (walls block, stairs work, items
block, lighting reads correctly), exit back to town. Phases to ship
after Phase O: A6 (Indoor physics fidelity, cdb-driven) + A7 (Indoor
lighting fidelity, RenderDoc + retail-decomp driven). Issues in
scope: #80, #81, #83, #88, #90 (workaround removal), L-indoor,
L-spotlight, stairs, 2nd-floor, cellar, and the
`TryFindIndoorWalkablePlane` synthesis removal. **M2 ("Kill a
drudge") is deferred until M1.5 lands** — drudges live in dungeons
and the M2 demo target requires solid indoor navigation. Full M1.5
writeup at the corresponding block in
`docs/plans/2026-05-12-milestones.md`.
**Today's pre-M1.5 baseline (2026-05-20).** Five surgical fixes
shipped to close the user-reported "logged in inside the inn, ran