docs(phase): Cluster A — partial ship + handoff

Cluster A's investigation pinned #86 (picker) as structural and closed
it (Phase B). #84 and #85 both pinned on missing indoor cell tracking;
Phase D promoted CellId via AABB containment which un-stuck the
spawn-in-building case (closes #84 partially) but proved too tight for
threshold/doorway cells to keep CellId indoor during normal walking.
The proper fix is retail's portal-based cell traversal; filed as a
new ISSUES.md issue (see body) for the follow-up phase. Phase E
diagnostic infrastructure ([cell-cache] + extended [indoor-bsp]) stays
in place as scaffolding for that work.

ISSUES.md: #86 → Recently closed. #84 status updated to PARTIAL with
resolution paragraph. #85 status update note added. New issue #87 filed
for portal-based indoor cell tracking.

Roadmap: Cluster A added to Recently shipped with partial-ship note.
Forward entry added for the portal-traversal follow-up under Phase G.

CLAUDE.md: current-phase paragraph updated to reflect Cluster A partial
ship. Next phase deferred to Claude's choice in a future session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-19 16:12:24 +02:00
parent 1f11ba9b38
commit f0900ebe12
4 changed files with 373 additions and 17 deletions

View file

@ -776,7 +776,39 @@ acdream's plan lives in two files committed to the repo:
acceptance criteria. Do not drift from the spec without explicit user
approval.
**Currently in Phase L.2 (Movement & Collision Conformance).** L.2a slices
**Indoor walking Phase 1 — BSP cluster (Cluster A) partially shipped
2026-05-19.** Seven commits across five phases:
- `18a2e28` — implementation plan
- `27d7de1` — Phase A: `[indoor-bsp]` probe + `ProbeIndoorBspEnabled` toggle
- `3764867` — Phase B: `CellBspRayOccluder` in `WorldPicker.Pick` (**closes #86**)
- `4e308d5` — Phase B follow-up: screen-rect cell-occlusion tests
- `c19d6fb` — Phase D: AABB containment for indoor CellId promotion + L.2e bare-low-byte fix (partial #84 fix)
- `fda6af7` — Phase E first commit: `[cell-cache]` probe
- `1f11ba9` — Phase E second commit: extended `[cell-cache]` with AABB + bsphere + poly counts
**#86** (click selection penetrates walls) — **CLOSED.** `WorldPicker.Pick`
consults `CellBspRayOccluder.NearestWallT`; entities behind walls are filtered.
**#84** (blocked by air indoors) — **PARTIAL.** The "spawn-in-building stuck
above floor" variant is resolved (Phase D promotes CellId to the indoor cell
on spawn-in). The remaining "walls don't block from inside during normal
walking" symptom is the same root cause as #85 — AABB containment is too
tight for threshold/doorway cells (Z range ~0.2 m, player stands at ~0.46 m)
to keep CellId promoted. Both are tracked under new issue **#87**.
**#85** (pass through walls outside→in) — **OPEN.** Root cause confirmed as
same as #84 remaining symptom — CellId drifts back to outdoor cell, indoor
BSP never fires. See #87.
**#87** (indoor portal-based cell tracking) — **FILED.** Retail-faithful fix
via `CObjMaint::HandleObjectEnterCell` + `CEnvCell` portal connectivity.
Diagnostic infrastructure from Cluster A (`[indoor-bsp]` + `[cell-cache]`
probes, both runtime-toggleable) stays in place as scaffolding for the
follow-up phase. Handoff: [`docs/research/2026-05-19-cluster-a-shipped-handoff.md`](docs/research/2026-05-19-cluster-a-shipped-handoff.md).
**Next phase is Claude's choice** per work-order autonomy. Candidates:
indoor portal-based cell tracking (#87, completes the indoor walking story);
M2 critical path (F.2 / F.3 / F.5a / L.1c / L.1b — kill-a-drudge demo);
or the pre-existing "next phase candidates" list below.
**Previously in Phase L.2 (Movement & Collision Conformance).** L.2a slices
1+2+3 + L.2d slice 1+1.5 + L.2g slice 1 + L.2g slice 1b + L.2g slice 1c +
**Phase B.4b** + **Phase B.4c** all shipped and visual-verified 2026-05-13;
**Phase B.5** (ground-item pickup, F-key) shipped and visual-verified