acdream/docs/research/2026-07-25-slice-g2-packed-dispatcher-gate.md

4 KiB

Slice G2 Packed Dispatcher Gate

Date: 2026-07-25

Candidate: f9829d5f9ea831b67be7cf5c3c339d11c9b5d52d

Result: accepted; G2 complete

Purpose

G2 proves that the retained render scene can produce the exact ordered object and mesh-part stream consumed by the accepted dispatcher, then classifies that stream through the same mesh, material, clip, light, translucency, alpha, and selection owners without drawing a second time.

The production draw source remains unchanged. This is still compare-only evidence and does not create a visual-cutover rollback unit.

Exact physical evidence

Route Report Candidate order Packed input Classified output Selection Exit
Capped nine-stop logs/connected-r6-soak-20260725-021745.report.json 16,879 / 16,879 16,879 / 16,879 16,879 / 16,879 16,879 / 16,879 graceful
Uncapped nine-stop logs/connected-r6-soak-20260725-022749.report.json 17,282 / 17,282 17,282 / 17,282 17,282 / 17,282 17,282 / 17,282 graceful
Uncapped dense Arwic logs/connected-dense-town-20260725-023714.report.json 770 / 770 770 / 770 770 / 770 770 / 770 graceful

Every canonical checkpoint reported:

  • source commit, embedded binary commit, and candidate commit equal to f9829d5f9ea831b67be7cf5c3c339d11c9b5d52d;
  • zero candidate, packed-input, classified-output, selection, and shadow-scene mismatches;
  • zero pending render-journal entries and zero rejected delta applications;
  • equal current/product frame sequence and equal expected/actual digests;
  • Passed=true, ExitCode=0, GracefulExit=true, and exact binary/source identity.

Dense Arwic exercised 15,530 resident objects and 111 active animated statics. The nine-stop routes covered Caul, Sawato, Rynthid, Aerlinthe, Holtburg, same-location revisits, landblock retirement/reuse, movement, jump, combat, portal transitions, generation replacement, and graceful teardown.

Corrections found by the stronger gate

Ordered traversal is behavior

The original G1 comparator canonicalized each route by identity. It proved membership and multiplicity, but not the accepted traversal order. G2's stable alpha comparison exposed that equal-distance transparent parts preserve source order, matching retail CShadowPart::insertion_sort at 0x006B5130.

GpuWorldState now owns an explicit resident traversal slot plus the mutable entity bucket index. Static publications and live projections consume that one derived order. Swap-removal, rebucket, pending-to-loaded, same-landblock replacement, and retired-slot reuse are permanent tests. The candidate and packed-input comparators no longer sort away order differences.

Empty diagnostic submissions contain no stale groups

The first exact capped run on e0f36caa had perfect candidate, packed-input, and selection parity but seven transient classified-output mismatches. The production no-VAO early return skipped group partitioning, so its diagnostic fingerprint hashed stale reusable group lists even though it reported zero accepted instances and groups.

f9829d5f normalizes a zero-instance diagnostic submission to empty accepted group sets. This changes neither GL work nor pixels; it makes the referee describe the actual accepted output. A permanent test seeds stale opaque and transparent scratch and proves the zero-instance fingerprint remains the canonical empty submission.

Deterministic gate

  • Exact-order mismatch fixture rejects equal membership in a different route order.
  • Static and live traversal fixtures cover landblock slot order, bucket index, swap-removal, pending state, rehydrate, and slot reuse.
  • Empty/no-VAO submission fixtures cover deferral and stale scratch.
  • App Release: 3,759 passed / 3 skipped.
  • Complete Release solution: 8,243 passed / 5 skipped.

Rollback

G2 is compare-only. Commits through f9829d5f are safe to retain if a later production visual cutover is reverted. The pre-cutover runtime rollback anchor remains e7d9d6fa. G4 must record its exact production cutover commit before the user visual gate.