acdream/tools/cdb
Erik fe87e9794a docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff
Attached cdb to the live 2013 retail client at the Holtburg doorway + read the decomp.
The indoor flap is a STRUCTURAL divergence, settled by measurement (not inference):

- Retail has ONE render path: DrawInside(viewer_cell) every frame. NO inside/outside
  branch (RenderNormalMode's outside branch is dead code; is_player_outside only gates
  sky/lighting). "Entering a building" is not a render event — only the camera sweep
  resolving a different viewer_cell. Same path before/after threshold -> no seam.
- Retail's eye JITTERS ~36um at rest yet membership is stable -> robustness is
  STRUCTURAL: many small per-building floods (~7/frame, ~2 cells each, via terrain BSP
  -> DrawPortal -> ConstructView(CBldPortal)), not one giant knife-edge flood.
- Our 3 divergences: (D1) invented inside/outside branch (GameWindow.cs:7498,
  clipRoot = viewerRoot ?? _outdoorNode :7396); (D2) synthetic _outdoorNode; (D3) one
  unified flood.

DECISION (user-approved): Option A — rip out branch + outdoor node, root always at the
real viewer_cell, one DrawInside, per-building rendering. Phased, conformance-tested,
visual-gated.

REFUTED by measurement (do not retry): bounded-propagation/churn (maxPop=1, 0/63k
reciprocals empty); byte-stable eye (retail's jitters ~36um — rest-snap cd974b2 failed +
regressed, reverted 9b1857a).

Lands the canonical exhaustive handoff for a FRESH session
(docs/research/2026-06-08-full-retail-render-port-OPTION-A-handoff.md), the CLAUDE.md
READ-THIS-FIRST banner, and reusable cdb apparatus. No project code changed; working tree
at the known-good baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 16:19:34 +02:00
..
a6-probe-runner.ps1 fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-probe.cdb fix(cdb): A6.P1 — a6-probe.cdb v4 hex-bits floats 2026-05-21 19:55:48 +02:00
a6-types-dump-runner.ps1 fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-types-dump.cdb fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-types-dump.txt fix(cdb): A6.P1 — a6-probe.cdb v2 with PDB-verified offsets 2026-05-21 19:43:50 +02:00
cellar-corner-escape.cdb docs(p2): cellar corner-wedge pinned to step-up-onto-floor (retail cdb) + trace apparatus 2026-06-04 11:27:44 +02:00
decode_fcl_capture.py test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
decode_retail_hex.py feat(cdb): A6.P1 — decode_retail_hex.py hex→float decoder 2026-05-21 20:03:03 +02:00
discover-types.cdb test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
door-inside-out-v2.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
door-inside-out-v3.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
door-inside-out.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
find-cell-list-capture-aligned.cdb fix(p1): membership already matches retail — the 0/11 was a cdb capture artifact 2026-06-03 18:54:27 +02:00
find-cell-list-capture.cdb test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
flap-eye-stability.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
flap-pos-lookup.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
flap-render-capture.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
issue98-cellar-up-find-walkable.cdb tools(cdb): A6.P3 #98 Step 4 — retail find_walkable capture script 2026-05-23 15:29:02 +02:00
issue98-runner.ps1 tools(cdb): A6.P3 #98 Step 4 — retail find_walkable capture script 2026-05-23 15:29:02 +02:00
README-a6-probe.md docs(cdb): A6.P1 — README for the cdb probe + runner 2026-05-21 18:44:42 +02:00
README-find-cell-list-capture.md test(p0): retail find_cell_list trace parser + cdb value-capture tooling 2026-06-03 14:26:24 +02:00
retail-connector-collide-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-flatfloor-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-lip-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-viewer-cell.cdb docs: indoor flicker/void root cause (decomp + live cdb) + 3-part fix plan handoff 2026-06-05 15:31:17 +02:00
symbol-probe.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00