acdream/docs/research/2026-09-01-overhaul
Erik afbd241016 feat(physics): S2 chunk 3 - one flood per registration feeds collision rows and render entries
ShadowObjectRegistry computes the CELLARRAY once per registration under
Contract A (cylsphere route from the Setup's collision cylspheres, else the
bbox route over the whole visual part array) and derives BOTH products from
it: the collision rows (_entityToCells/_cells, CShadowObj per cell via
add_shadows_to_cells @0x00514ae0) and the per-part render entries
(AddPartsShadow @0x00517e40). The second, independent collision flood is
gone. A caller that supplies no part array floods from its collision shapes
exactly as before, so every legacy expectation holds byte-for-byte.

The staged SetPosition pipeline now carries the retail part array, cell
array, route, and entries through TryCaptureOwnerState/InstallOwnerState
and publishes them beside the collision cell replacements, honoring the
keep-when-empty rule (SetPositionInternal num_cells gate, pc:283540) for
both products together; two new tests pin a cross-cell move and the
keep-when-empty case. Behavior change, retail-exact: an object with
decorative non-BSP parts now has its collision shapes registered in every
cell those parts reach (pinned by a two-cell fixture); all-BSP objects are
unchanged. Movement paths still take collision cells from the transition
and recompute the retail product separately; chunk 4 unifies them on the
transition's array as retail does. No particle emitter reaches this registry.

Gates (implementer's isolated worktree at identical content): Release
build 0/0; Core 4,961/4,961; App hermetic 6,760/6,760; collision/InstalledDat
fixtures 63/63; Runtime 1,884/1,884; Content 213/213.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 23:02:47 +02:00
..
2026-09-02-campaign-overhaul-handoff.md docs(render): rescope Campaign OVERHAUL to five production slices 2026-09-02 17:50:25 +02:00
oh0-baseline.md docs(render): clean OH0 baseline formatting 2026-09-01 18:06:21 +02:00
oh1-alpha-list-contract.md docs(render): define OH1 retail world contract 2026-09-01 19:33:15 +02:00
oh1-built-mesh-view-contract.md docs(render): define OH1 retail world contract 2026-09-01 19:33:15 +02:00
oh1-construction-landscape-contract.md docs(render): define OH1 retail world contract 2026-09-01 19:33:15 +02:00
oh1-depth-lifecycle.md docs(render): define OH1 retail world contract 2026-09-01 19:33:15 +02:00
oh1-retail-world-contract.md docs(render): define OH1 retail world contract 2026-09-01 19:33:15 +02:00
oh2-cellstruct-surface-contract.md feat(content): S1 exact CellStruct surface-index construction, recipe 8 2026-09-02 18:40:33 +02:00
s2-membership-ownership-map.md feat(physics): S2 chunk 3 - one flood per registration feeds collision rows and render entries 2026-09-02 23:02:47 +02:00