acdream/docs/research/2026-07-25-slice-g3-retained-classification-gate.md
Erik c7d7848dd2 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.
2026-07-25 03:37:37 +02:00

84 lines
3.9 KiB
Markdown

# 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.