acdream/docs/research/2026-06-12-night-session-handoff-108-residual-next.md
Erik bf965000da handoff: add the M1.5 dungeon-demo exit gate to the next-session work order
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 21:21:51 +02:00

7 KiB
Raw Blame History

Night-session handoff (2026-06-12): nine closes shipped; NEXT = #108-residual

Branch state: claude/thirsty-goldberg-51bb9b, pushed to BOTH remotes at 49cffe6. Suites green at every commit: App 261+1skip / Core 1439+2skips / UI 420 / Net 294. CLAUDE.md "Current state" + the render digest (claude-memory/project_render_pipeline_digest.md) are refreshed to this truth — orient there first.

1. What this session closed (all user-gated; do NOT re-litigate)

Closed Root cause Commits
#130 doorway top-edge strip TWO stacked causes: scissor box Floor(origin)+Ceiling(size) under-covers top/right (sub-pixel, NdcScissorRect); THE strip = the +0.02 m shell draw-lift missing from draw-space portal consumers post-f35cb8b (6.7 px @2.4 m, measured) 6c4b6d6, 5135066 (AP-32 row added)
#129 doors leak through terrain at ~a landblock constant 0.0005 NDC punch bias spans ~190 m of eye depth at distance; capped to 0.5 m eye-space (MarkBiasNdc) 4ba7148 (AD-18 updated)
#113 hill-cottage phantom stairs dead via 2163308 (cache cross-serving) — re-gate confirmed
#124 far-building back walls through openings interior-root look-ins ported as a LANDSCAPE-STAGE sub-pass (decomp: LScape::draw runs FIRST in DrawCells' outside branch, pc:432719, pre-clear/pre-seal; seeds clip vs the INSTALLED view → BuildFromExterior(seedRegion:); punch-all-then-draw). NEVER merge look-ins into the main frame (post-clear seal z-kill) 77cef4c (AP-33 added)
#132 candle flame vs through-opening background slice particles drew BEFORE the look-ins / merged interiors (no depth self-protection) — the FlushAlphaList deferral ported as the two-phase slice split + outdoor post-frame attached pass 20d1730, 87afbc0 (AP-34 added)
#131 portal swirl missing through doorways FOUR layers (see lesson below); final: the portal is a SERVER object inside the hall's PORCH cell (look-in cell) → partition.Dynamics → dynamics-last culls it (no look-in cells in the main cone) + post-seal z-fail. Fix: DrawBuildingLookIns draws look-in-cell dynamics + emitters (retail nested DrawCells/DrawObjCellForDummies) 1d3f9a8, 47f32cd, d208002
UN-2 GetMaxSpeed ×4 contradiction the implementation was retail-correct; BN pseudo-C drops x87 fmuls — byte-verified (3× fmul [0x7C8918]=4.0f); doc rewritten, weenie-null default aligned to literal 1.0; row deleted 0cb97aa (verifier tools/verify_un2_fmul.py)

2. THE #131 LESSON (cost: 4 fix iterations)

Identify the ENTITY before theorizing about draw passes. Three real-but-adjacent fixes shipped before the elimination chain (teleport pCell flip → owner cell; headless replay → flood admits it; partition routing → exactly one possible drop site) forced the answer. Two tools that would have shortened it to one iteration:

  • The pick line: left-click prints [B.4b] pick guid=… name=… + [B.7] pick-info … setup=… — names any clickable object in the log.
  • The teleport/pCell flip: walking onto/into a thing prints its cell. Both need zero new code. The register also already KNEW the answer (AP-33's "look-in DYNAMICS are not drawn — deferred") — scan-the-register-on-symptom applies to rows YOU wrote hours earlier.

3. NEXT (the queue to the M1.5 → M2 boundary)

  1. #108-residual — cellar-ascent grass window (NEXT, desk-first). Climbing out of a cellar, grass covers the exit door until the eye pops above grade. Punch/seal exonerated; it is MEMBERSHIP/VIEWER-side (which cell the camera resolves while the eye is below grade). Apparatus designed: a VERTICAL exit-walk-harness variant (HouseExitWalkReplayTests machinery driving the camera up cellar stairs, watching viewer-cell resolution per step). Read the physics digest + ISSUES #108 before starting. User needed only for the final cellar gate.
  2. #127 — distant-building admission churn (flood size oscillates ±13 cells at mm eye deltas; suspect list includes the PortalBounds frustum pre-gate — machinery #124 now reuses for interior roots).
  3. #116 — slide-response family (physics, oracle-first: one cdb session).
  4. #125 sticky-drop debt — failed texture uploads never retried (session-sticky invisible meshes); robustness, no visual gate.

4. Apparatus added this session (all env-gated, kept)

Tool How For
[outstage]/[outstage-pt]/[outstage-own] ACDREAM_PROBE_OUTSTAGE=1 (+ACDREAM_DUMP_ENTITY=<ids> doubles as the owner watchlist) outside-stage dynamics routing/cone verdicts; scene-particle owner matching
Issue130DoorwayStripTests App.Tests aperture-vs-gate top-edge gap in DRAWN (lifted) space; the lift-seam sensitivity pin
NdcScissorRectTests / Issue129PunchBiasTests App.Tests scissor containment; punch-bias eye-span cap
Issue124LookInSeedRegionTests App.Tests seedRegion semantics at the real corner-building door
Issue131SetupProbeTests App.Tests dat setup dumps + the porch-admission replay of a captured frame
tools/verify_un2_fmul.py py re-derive the GetMaxSpeed ×4.0 byte proof

5. Paste-ready pickup prompt

Pick up acdream as a SENIOR 3D ENGINE DEVELOPER on #108-residual (the
cellar-ascent grass window). Branch claude/thirsty-goldberg-51bb9b ==
pushed both remotes at 49cffe6. Read FIRST: CLAUDE.md "Current state",
docs/research/2026-06-12-night-session-handoff-108-residual-next.md (THE
handoff), then BOTH digests (render + physics; DO-NOT-RETRY tables apply).

WORK ORDER:
1. #108-residual — eye-below-grade membership at cellar exits. Build the
   VERTICAL exit-walk harness variant (HouseExitWalkReplayTests machinery,
   a cellar staircase fixture), watch viewer-cell resolution per step while
   the eye is below terrain grade; pin where the resolver demotes to
   outdoor/terrain. Punch/seal are exonerated — do NOT touch them.
2. Then #127 (admission churn; PortalBounds pre-gate suspect), #116
   (slide-response, oracle-first cdb), #125 sticky-drop debt.
3. When the ledger clears: run the M1.5 DUNGEON DEMO as the milestone
   exit gate (milestones doc: enter any dungeon via portal, 3-5 rooms,
   walls block / stairs work / lighting correct / transitions smooth).
   The old blocker #95 died with the Option A rewrite (the ACME BFS it
   lived in was deleted in T4); the portal entry flow is field-tested
   (the 2026-06-12 accidental teleport). Dungeon-specific findings
   (likely A7 lighting items) get fixed inside M1.5; a clean demo lands
   M1.5 -> update the milestones doc + CLAUDE.md and start M2 (kill a
   drudge; first port target per the research memos: CombatMath).

The user's reports are AXIOMS. Visual gates are the acceptance tests.
Suites green per commit: App 261+1skip / Core 1439+2skip / UI 420 /
Net 294. Register discipline: new deviation = same-commit row. For any
object-specific render bug: IDENTIFY THE ENTITY FIRST (the pick line
[B.4b] names clicked objects; pCell flips name cells) — the #131 lesson.