diff --git a/docs/plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md b/docs/plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md index 183e2841..bc3fe942 100644 --- a/docs/plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md +++ b/docs/plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md @@ -24,8 +24,9 @@ retail-faithful gameplay | F4 — dynamic indices | complete | The contained scene now maintains outdoor/static, per-cell static/dynamic, special dynamic-route, translucent, selectable, light-candidate, and dirty indices incrementally. Final-frame live/equipped synchronization remains active-only, and active animated statics are synchronized from the scheduler's active workset rather than a resident-world scan. The production scene remains unconstructed and non-drawing. | | F5 | complete | Exact `81e2f1a5` passed capped and uncapped nine-stop routes plus uncapped dense Arwic. Across the final checkpoints the referee completed 1,663 + 1,677 + 81 comparisons with zero mismatches, zero pending deltas, zero rejected operations, exact binary/source identity, and graceful shutdown. Evidence: `docs/research/2026-07-24-slice-f5-render-scene-shadow-gate.md`. | | G0 — borrowed frame product | complete | Two reusable arenas publish exact generation/frame-stamped borrowed views for scene candidates, cell ranges, transforms, classification, light sets, selection, PView/clip references, counts, and source digest. Release/reuse invalidates every copied view; abort never publishes; frame N may build while N-1 is borrowed; the warm path allocates zero bytes. Eight focused tests pass inside the 3,743-App / 8,227-solution Release gate. | -| G1 — scene-query replacement | code gate complete; connected gate pending | The incremental scene now builds the same-frame candidate product from outdoor, per-cell, look-in, outside-stage, and dynamic indices, preserving PView route multiplicity and hidden-versus-withdrawn ownership. A compare-only controller checks canonical route/cell/entity membership against the accepted current PView path; lifecycle JSON publishes counts, digests, and the first mismatch. Twenty-four focused render-scene/frame-product tests pass inside the 3,745-App / 8,229-solution Release gate. No production draw consumer has switched. | -| G2–G5 | pending | No production consumer has switched. | +| G1 — scene-query replacement | complete | Exact `e346f8bb` passed capped and uncapped nine-stop routes plus uncapped dense Arwic: 29,392 + 29,025 + 1,522 same-frame candidate comparisons, zero mismatches, equal counts/digests at every checkpoint, exact binary/source identity, and graceful shutdown. Evidence: `docs/research/2026-07-25-slice-g1-scene-query-candidate-gate.md`. | +| G2 — packed dispatcher input | active | Convert the accepted scene candidates into an acdream-owned packed dispatcher input and compare its complete instance payload against the current WorldEntity boundary without drawing twice. | +| G3–G5 | pending | No production consumer has switched. | The exact pre-F/G runtime rollback anchor remains `e7d9d6fa`. F0 is non-drawing diagnostic infrastructure and therefore is not a visual-cutover diff --git a/docs/research/2026-07-25-slice-g1-scene-query-candidate-gate.md b/docs/research/2026-07-25-slice-g1-scene-query-candidate-gate.md new file mode 100644 index 00000000..8113a82d --- /dev/null +++ b/docs/research/2026-07-25-slice-g1-scene-query-candidate-gate.md @@ -0,0 +1,61 @@ +# Slice G1 Scene-Query Candidate Gate + +**Date:** 2026-07-25 + +**Candidate:** `e346f8bbaf5c6d73498d74da32bfc37caf8c4e44` + +**Result:** accepted; G1 complete + +## Purpose + +G1 builds the exact current render frame's candidate routes from the +incremental render scene instead of walking `LandblockEntries`. It remains a +compare-only source: production still draws the accepted +`InteriorEntityPartition`/`WorldEntity` path. + +The comparison preserves route, route index, cell, duplicate membership, and +projection identity. Sorting is allowed only within those dimensions so +unordered retained scene indices cannot create a false mismatch while PView +order and route multiplicity remain exact. + +## Exact physical evidence + +| Route | Report | Final comparisons | Mismatch | Candidate parity | Exit | +|---|---|---:|---:|---|---| +| Capped nine-stop | `logs/connected-r6-soak-20260725-001333.report.json` | 29,392 / 29,392 | 0 | exact at all nine checkpoints | graceful | +| Uncapped nine-stop | `logs/connected-r6-soak-20260725-002328.report.json` | 29,025 / 29,025 | 0 | exact at all nine checkpoints | graceful | +| Uncapped dense Arwic | `logs/connected-dense-town-20260725-003231.report.json` | 1,522 / 1,522 | 0 | 4,274 / 4,274 at checkpoint | graceful | + +Every route reported: + +- `Passed=true`, `ExitCode=0`, and `GracefulExit=true`; +- source commit, embedded binary commit, and candidate commit equal to + `e346f8bbaf5c6d73498d74da32bfc37caf8c4e44`; +- product and current PView frame sequences equal; +- expected and actual candidate count equal; +- expected and actual candidate digest equal; +- `firstMismatch=null`. + +The nine-stop routes covered Caul, Sawato, Rynthid, Aerlinthe, Holtburg, +same-location Sawato revisit, Caul return, Sawato plateau, and Caul plateau. +They exercised outdoor and interior roots, door/outside routes, nested +building look-ins, non-flooded retained cell data, portal transitions, +equipped children, movement, jump, combat, generation replacement, and +graceful logout. Dense Arwic exercised 15,530 resident world entities and 111 +active animated statics during its stationary turn sample. + +## Deterministic gate + +- 24 focused current-oracle, shadow-scene, frame-product, and G1 route tests; +- 3,745 App tests / 3 skips; +- 8,229 complete-solution tests / 5 skips; +- exact hidden-spatial versus portal-withdrawn candidate behavior; +- EnvCell shell projections excluded from object routes; +- exact mismatch reporting after a retained projection is removed. + +## Rollback + +G1 does not change the production draw source. Commit `e346f8bb` is safe to +retain if a later visual cutover is reverted. The exact pre-cutover runtime +rollback anchor remains `e7d9d6fa`. G4 must record its own cutover commit +before connected visual verification.