docs(claude.md): A6.P3 #98 — point at evening-v2 findings doc

Adds the "Evening extension v2" paragraph documenting the apparatus
ship + root cause identification from the 2026-05-23 PM-late session.
The block names:

- The four commits that landed (fb5fba644614ab0f2db62f29c9d5)
- The apparatus: PhysicsResolveCapture + LiveCompare_* tests
- The root cause: cottage GfxObj 0xA9B47900 (landblock-baked static
  building) blocks the head sphere at world Z=94.0 with cn=(0,0,-1)
- User's confirming observation about jumping (rules out step-up
  hypotheses)
- The cap geometry math (foot Z=92.74 + sphereHeight 1.20)
- Documents-the-bug pattern for the first-cap test
- Test baseline (1178 + 8 serial)
- Pointer to the new findings doc as canonical pickup
- Concrete next-session move (extract cottage GfxObj polygons)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-23 20:13:24 +02:00
parent f29c9d5e61
commit 4d83ba5620

View file

@ -812,6 +812,39 @@ captures live PlayerMovementController state and diffs against the
test harness — evidence-first instead of speculation-first.
Findings doc:
[`docs/research/2026-05-21-a6-cdb-capture-findings.md`](docs/research/2026-05-21-a6-cdb-capture-findings.md).
**Evening extension v2 (2026-05-23 PM late) — apparatus shipped + root
cause identified.** Four commits (`fb5fba6``44614ab``0f2db62`
`f29c9d5`). The side-by-side comparison harness was built and exercised:
- `PhysicsResolveCapture` ships a JSON Lines writer for every player-side
`ResolveWithTransition` call. Off by default; turn on via
`ACDREAM_CAPTURE_RESOLVE=<path>`. Filtered to `IsPlayer` so NPC / remote
DR doesn't pollute.
- Two live captures from a cottage-cellar session (41K + 70K records).
- Three `LiveCompare_*` tests load 3 representative records (spawn,
on-ramp, first-cap). Spawn + on-ramp PASS bit-perfect; the first-cap
test originally FAILED with a clear divergence — and that divergence
pinpoints the root cause.
- **The cap is caused by `obj=0xA9B47900` — a landblock-baked cottage
GfxObj.** Cottage floor polygons live in this GfxObj's polygon table
(registered as a ShadowEntry), NOT in any cottage cell. The harness's
cell fixtures (0xA9B40143/146/147) don't include the cottage GfxObj,
so the harness fails to reproduce the live cn=(0,0,-1) cap.
- User's confirming observation: jumping in the cellar caps at the same
Z — purely vertical motion. This rules out every step-up / AdjustOffset
hypothesis from the prior 6-shape saga. The bug is the head sphere
hitting the cottage floor at Z=94.0 from below (math: foot Z=92.74
+ sphereHeight 1.20 = head center 93.94, head top 94.42, intersects
cottage floor Z=94.0).
- The first-cap test is now in documents-the-bug form (PASSES while
bug exists; FAILS when fix lands). Test baseline maintained at
1178 + 8 (serial run).
- 13 new cell fixtures cover the full 0xA9B4014X neighborhood (272 KB).
Findings doc (canonical pickup):
[`docs/research/2026-05-23-a6-p3-issue98-comparison-harness-findings.md`](docs/research/2026-05-23-a6-p3-issue98-comparison-harness-findings.md).
**Next-session move: extract cottage GfxObj polygons via focused
`ACDREAM_PROBE_BUILDING=1` capture, register as ShadowEntry in harness,
flip first-cap test to assertion form.**
Original demo scenario (Holtburg Sewer end-to-end) is unreachable: sewer
doesn't exist on this server, and **issue #95** (portal-graph visibility
blowup) blocks any substitute dungeon. Revised M1.5 demo split into