docs(rendering): close retained classification gate

Record exact capped, uncapped, and dense parity evidence for 6a026c5a, including warm reuse, hidden-frame synchronization, full Release results, and the unchanged pre-cutover rollback anchor. Advance the execution ledger to G4.
This commit is contained in:
Erik 2026-07-25 03:37:37 +02:00
parent 6a026c5ab0
commit c7d7848dd2
2 changed files with 104 additions and 2 deletions

View file

@ -26,8 +26,9 @@ retail-faithful gameplay
| 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 | 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 | active | Restore the isolated retained-classification cache after G2's exact-order correction, then prove dirty-only rebuild and zero-allocation warm reuse before any draw-source switch. |
| G4G5 | pending | No production consumer has switched. |
| 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 | Switch one production draw consumer to the exact retained frame product, record the exact cutover hash before the visual gate, then remove no oracle evidence until parity and fixed-camera image checks pass. |
| G5 | pending | Physical performance/lifecycle closeout follows the user visual gate. |
The exact pre-F/G runtime rollback anchor remains `e7d9d6fa`. F0 is
non-drawing diagnostic infrastructure and therefore is not a visual-cutover
@ -602,6 +603,23 @@ clip slots, light sets, selection parts, alpha records, and draw counts.
**Commit gate:** warm unchanged frames rebuild no static classification and
allocate no core scene/dispatcher memory.
**Completed 2026-07-25.** Exact `6a026c5a` passed capped and uncapped
nine-stop routes plus uncapped dense Arwic. Candidate order, packed input,
classified output, and selection completed 17,069 + 16,827 + 757 continuous
comparisons with zero mismatch. Dense Arwic's final warm frame reused all
3,828 unchanged visible classifications, rebuilt zero static projections, and
kept 410 active animated classifications on the live path.
The first development pass exposed a reveal-edge ownership gap: inbound state
continues while portal reveal blocks ordinary simulation, but the derived
render projection had also been blocked. A narrow hidden-frame projection sync
now follows inbound network/command mutation without advancing effects,
particles, attachments, lights, animation, or physics. Dirty state is
acknowledged only after every packed comparison succeeds. Deterministic tests
also pin generation/incarnation replacement, incomplete resources, retirement,
and 1,000 warm reuse frames with zero thread allocation. Evidence:
`docs/research/2026-07-25-slice-g3-retained-classification-gate.md`.
### G4 — Cutover
1. Run old and new input construction in compare-only mode; draw only the old

View file

@ -0,0 +1,84 @@
# Slice G3 Retained Classification Gate
**Date:** 2026-07-25
**Candidate:** `6a026c5ab04b3a0148045490fcb33d86084e0c0d`
**Result:** accepted; G3 complete
## Purpose
G3 retains mesh/material classification per visible render projection while
refreshing frame-varying transforms, clip slots, selected lights, opacity,
selection lighting, and picking transforms. Classification remains live for
active animation, incomplete mesh/texture resources, and active translucency
fades. The production renderer still draws the accepted path; this is
compare-only evidence and not a visual-cutover rollback unit.
## Exact physical evidence
| Route | Report | Exact comparisons per channel | Final static rebuild / cross-frame reuse | Exit |
|---|---|---:|---:|---|
| Uncapped nine-stop | `logs/connected-r6-soak-20260725-031419.report.json` | 16,827 / 16,827 | 2 / 6,037 | graceful |
| Capped nine-stop | `logs/connected-r6-soak-20260725-032350.report.json` | 17,069 / 17,069 | 2 / 6,038 | graceful |
| Uncapped dense Arwic | `logs/connected-dense-town-20260725-033339.report.json` | 757 / 757 | 0 / 3,828 | graceful |
For every route, all four continuously sampled channels had zero cumulative
mismatches:
- ordered PView candidates;
- packed dispatcher input;
- classified opaque/transparent output;
- accepted selection parts.
Every process used a Release binary whose embedded commit exactly matched
source, carried zero pending render-journal entries and zero rejected deltas at
canonical checkpoints, and closed through the graceful logout path. Dense
Arwic exercised 15,530 resident objects and 111 active animated statics. Its
final retained classification payload was 4,937,760 bytes; active animation
remained on the live path while all 3,828 unchanged visible projections reused
their prior classification.
## Reveal-edge correction
The first development gate on `54d17eb4` exposed transient mismatches that the
older checkpoint-only acceptance had not rejected. At a portal reveal, inbound
network dispatch continued mutating hidden live objects while ordinary world
simulation and full presentation reconciliation were intentionally blocked.
The derived render scene therefore retained an older transform until the
update after the first visible frame.
The stronger ordered diagnostics named the exact live projection and transform
fingerprint. Corrective commit `6a026c5a` splits out a narrow render-projection
sync after hidden-frame network and command phases. It updates only the derived
scene; physics, animation, effects, particles, attachments, and lights remain
quiesced. The capped and uncapped nine-stop reruns prove that initial reveal,
all portal generations, and the final Caul revisit now maintain exact
same-frame parity.
## Deterministic gate
- Exact identity includes projection ID, owner incarnation, mesh/material,
degrade state, and geometry/appearance fingerprints.
- Transform-only dirtiness reuses classification; appearance dirtiness,
incarnation changes, incomplete resources, and active animation rebuild.
- Generation replacement and unseen projection retirement release retained
payload.
- A warmed projection completes 1,000 reuse frames with zero thread
allocations.
- Dirty acknowledgement occurs only after candidate, packed-input,
classified-output, and selection comparisons all succeed.
- Hidden world frames synchronize only the derived render projection after
inbound mutation.
- App Release: 3,767 passed / 3 skipped.
- Complete Release solution: 8,251 passed / 5 skipped.
- Release build: zero warnings and zero errors.
## Rollback
G3 remains compare-only. Commits through `6a026c5a` are safe to retain if a
later production visual cutover is reverted. The exact pre-cutover runtime
rollback anchor remains `e7d9d6fa`. G4 must record its exact production
cutover commit in the F/G plan and render-pipeline memory before the user
visual gate; that cutover commit, not G3, will be tomorrow's surgical rollback
unit.