From 51e184725fe0ab85163733eca9dadabe227a6990 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 25 Jul 2026 05:01:27 +0200 Subject: [PATCH] docs(rendering): record G4 automated gate Capture the exact capped, uncapped, and dense physical evidence, reveal-readiness corrections, comparison-mode performance interpretation, pending visual gate, and single surgical rollback boundary. Co-authored-by: OpenAI Codex --- ...-modern-runtime-slices-f-g-render-scene.md | 14 +- ...ce-g4-production-cutover-automated-gate.md | 124 ++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md 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 5ddd08b5..c539ff20 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 @@ -27,7 +27,7 @@ retail-faithful gameplay | 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 | complete | Exact `f9829d5f` passed capped and uncapped nine-stop routes plus dense Arwic. Candidate order, packed input, classified output, and selection each completed 16,879 + 17,282 + 770 comparisons with zero mismatch; journal/rejection counts were zero and shutdown graceful. Evidence: `docs/research/2026-07-25-slice-g2-packed-dispatcher-gate.md`. | | G3 — retained classification/storage | complete | Exact `6a026c5a` passed capped and uncapped nine-stop routes plus dense Arwic with 17,069 + 16,827 + 757 exact comparisons in every channel, zero mismatch, warm cross-frame reuse, and graceful shutdown. Evidence: `docs/research/2026-07-25-slice-g3-retained-classification-gate.md`. | -| G4 — production cutover | active; visual gate pending | Exact cutover `ef1d263337997bb030eadb7b8e71d73dc659907a` makes the retained frame product the production entity source at the existing five retail PView stages. Automated Release and physical gates precede the user visual gate; the old route referee remains until that gate passes. | +| G4 — production cutover | automated gate complete; visual gate pending | Exact cutover `ef1d263337997bb030eadb7b8e71d73dc659907a` makes the retained frame product the production entity source at the existing five retail PView stages. Exact `03b10183` passed capped/uncapped nine-stop and uncapped dense-Arwic automation with 46,599 total product comparisons, zero mismatch, every reveal ready, and graceful shutdown. The old route referee remains until the user visual gate passes. Evidence: `docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md`. | | G5 | pending | Physical performance/lifecycle closeout follows the user visual gate. | The exact pre-F/G runtime rollback anchor remains `e7d9d6fa`. F0 is @@ -638,6 +638,18 @@ and 1,000 warm reuse frames with zero thread allocation. Evidence: There is no permanent runtime fallback. A failed gate reverts the cutover commit; it does not ship a hidden old/new switch. +**Automated gate completed 2026-07-25.** Exact gated source `03b10183` passed +capped and uncapped nine-stop routes plus uncapped dense Arwic. The retained +product completed 20,502 + 24,463 + 1,634 continuous comparisons with zero +mismatch. Every canonical reveal was ready with zero pending composite warmup, +the scene journal was empty, source and binary hashes matched, and every +process closed gracefully. The gate corrected whole-retained-world composite +warmup discovery by sourcing the exact published 3×3 destination neighborhood; +that correction is draw-path independent. Fixed-camera artifacts are captured. +The user visual gate is the only remaining G4 acceptance item, so old-route +deletion and G5 production-only profiling remain blocked. Evidence: +`docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md`. + ### G5 — Physical performance and lifecycle gate Run the exact Slice-E reference matrix: diff --git a/docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md b/docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md new file mode 100644 index 00000000..7dd6014d --- /dev/null +++ b/docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md @@ -0,0 +1,124 @@ +# Slice G4 Production Cutover — Automated Gate + +**Date:** 2026-07-25 + +**Production cutover:** `ef1d263337997bb030eadb7b8e71d73dc659907a` + +**Gated source:** `03b10183e95985c658e5975d2cc1a082a589738d` + +**Result:** automated gate accepted; user visual gate pending + +## Purpose + +G4 makes the retained, scene-built `RenderFrameView` the production entity +source at the five existing retail PView stages. Terrain, buildings, EnvCells, +particles, alpha ordering, selection, lighting, mesh/texture ownership, and GL +execution retain their established owners. The old route is still built only +as a diagnostic referee while lifecycle automation is enabled; it is not +drawn. + +## Cutover shape + +- `RetailPViewRenderer` borrows the exact generation/frame-stamped product. +- `RetailPViewPassExecutor` expands its ordered route ranges at the same five + PView stages used before the cutover. +- `WbDrawDispatcher` classifies and draws packed candidates through the + established shader, texture, light, alpha, and selection owners. +- Unchanged static classifications and ordered scene indices persist across + frames; only dirty records refresh. +- Full-scene digests and old/new comparisons are consumer-gated and absent + from an ordinary launch. +- Production does not require or call the current-path referee. + +## Corrections made before and during the gate + +The first implementation pass found and corrected four integration costs +before the cutover commit: + +1. ordinary runtime composition incorrectly required the optional comparison + observer; +2. selection geometry was constructed twice; +3. a diagnostic scene digest sorted the full scene every production frame; +4. outdoor/dynamic indices were copied and sorted every frame despite stable + membership. + +The first exact nine-stop run then exposed an independent reveal-readiness +weakness. Composite warmup used the same 128-item limit for cheap candidate +discovery and expensive mesh/texture preparation. Caul's roughly 21,000 +retained objects could exhaust the portal reveal window before discovery +finished. `129dd77d` separates those budgets. + +A second run proved that a late membership edge could still restart the +whole-world follow-up scan. `03b10183` adds a stable destination-neighborhood +source over `GpuWorldState`'s canonical published buckets. Warmup now reads +only the 3×3 reveal neighborhood, including static and live projections while +the generation is deliberately quiesced. Both corrections apply equally to +the old and retained draw paths; neither changes the visual rollback boundary. + +## Exact physical evidence + +| Route | Report | Product comparisons | Final rebuild / cross-frame reuse | Result | +|---|---|---:|---:|---| +| Capped nine-stop | `logs/connected-r6-soak-20260725-043955.report.json` | 20,502 | 1 / 6,109 | pass | +| Uncapped nine-stop | `logs/connected-r6-soak-20260725-044923.report.json` | 24,463 | 2 / 6,037 | pass | +| Uncapped dense Arwic | `logs/connected-dense-town-20260725-045805.report.json` | 1,634 | 2 / 3,833 | pass | + +Every route used a Release binary whose embedded commit exactly matched +`03b10183e95985c658e5975d2cc1a082a589738d`, exited with code zero through the +graceful logout path, and recorded: + +- zero product/referee candidate mismatch; +- zero reveal invariant failure; +- every canonical reveal ready; +- zero composite warmup items at every stable checkpoint; +- zero pending render-journal operations or rejected scene deltas; +- retained-classification reuse across returns; +- fixed-camera PNG artifacts for every checkpoint. + +Dense Arwic exercised 15,530 resident objects and 111 active animated statics. +Its final frame retained 4,949,760 bytes of packed classification and reused +3,833 unchanged visible projections. + +## Performance interpretation + +The connected G4 gate intentionally keeps the complete old route and +field-level referee enabled on every sampled frame. Dense Arwic therefore +reported 29.3 ms CPU p50 and roughly 10 MiB of diagnostic allocation per frame +while GPU p50 remained 1.8 ms. These are comparison-mode costs, not the +production-only result. An ordinary development launch after consumer-gating +measured roughly 8 ms with about 90 KiB frame-thread allocation in a dense +scene. The authoritative production-only performance matrix belongs to G5, +after the user visual gate permits deletion of the old route and transition +diagnostics. + +## Deterministic gate + +- Production composition succeeds without a comparison observer. +- The product routes in exact PView stage order. +- Transform-only scene updates preserve index revision and refresh only the + dirty record. +- Membership/sort changes advance index revision and rebuild ordered indices. +- A 21,025-record warmup discovery completes independently of the conservative + 128-entity preparation/upload budget. +- Readiness snapshots include destination static/live projections even while + ordinary gameplay visibility is quiesced. +- App Release: 3,775 passed / 3 skipped. +- Complete Release solution: 8,259 passed / 5 skipped. +- Release build: zero errors; the complete test build retains 16 pre-existing + test warnings. + +## Visual gate and rollback + +The user must still inspect login, outdoor/dungeon portal transitions, +selection, alpha/translucency, animated/equipped objects, particles, radar, +and repeated destination returns before G4 can delete the old referee. + +If that visual gate fails, the exact surgical command is: + +```powershell +git revert ef1d263337997bb030eadb7b8e71d73dc659907a +``` + +Do not reset the branch and do not revert G3 (`6a026c5a`). The two +reveal-readiness corrections are valid on both draw paths and remain after the +cutover revert.