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:
parent
6a026c5ab0
commit
c7d7848dd2
2 changed files with 104 additions and 2 deletions
|
|
@ -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. |
|
| 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`. |
|
| 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`. |
|
| 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. |
|
| 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–G5 | pending | No production consumer has switched. |
|
| 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
|
The exact pre-F/G runtime rollback anchor remains `e7d9d6fa`. F0 is
|
||||||
non-drawing diagnostic infrastructure and therefore is not a visual-cutover
|
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
|
**Commit gate:** warm unchanged frames rebuild no static classification and
|
||||||
allocate no core scene/dispatcher memory.
|
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
|
### G4 — Cutover
|
||||||
|
|
||||||
1. Run old and new input construction in compare-only mode; draw only the old
|
1. Run old and new input construction in compare-only mode; draw only the old
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue