Files
xenia-rs/audit-runs/phase-c25-mm-allocator-family/re-validation.md
MechaCat02 ef93a4fa14 handoff: VSync/event-wedge fixes + iterate 2.A–2.BC research notes
Source changes (dormant parity infra, retained from iterate 2.AI/2.AO):
- xenia-kernel/exports.rs: nt_create_event manual_reset polarity +
  related event wiring
- xenia-gpu/mmio_region.rs: D1MODE_VBLANK_VLINE_STATUS hardcode parity

Also lands the audit-runs/ analysis notes (.md/.txt/.json digests) for the
iterate 2.x VSync/0x10e8/0x1004 wedge investigation. Raw trace dumps
(.jsonl/.gz/.csv/.stdout) and agent worktrees (.claude/) are gitignored as
regenerable local artifacts — see memory + HANDOFF for the running findings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 07:19:08 +02:00

3.1 KiB
Raw Blame History

Phase C+25 — Re-validation

Gates

# Gate Status Evidence
1 Build clean cargo build --release succeeds; only pre-existing dead-code warning.
2 Phase B image_canonical_sha256 unchanged Zero engine LOC modified → Phase B hash is ea8d160e… by construction.
3 Engine determinism (3× cold) c25-digest-rep{1,2,3}.json all identical: instructions=50000007 imports=40390 unimpl=0 draws=0 swaps=1 unique_render_targets=0.
4 Main matched-prefix advances past 105,112 105,112 → 105,128 (+16) — see diff-postfix.md.
5 Sister chains preserved 4→11=11, 7→2=32, 12→7=4, 14→9=41, 15→10=16 — all unchanged vs Phase W.
6 Kernel tests pass xenia-kernel: 217 passed, 0 failed (unchanged baseline).
7 Diff-tool unit tests pass 39 baseline + 4 new C+25 tests = 43 PASS.
8 --no-canonicalize-allocators backward-compat Flag unchanged; raw-VA comparison still available.
9 Progression metric — PRIMARY gate ⚠️ NEGATIVE swaps=1, draws=0, unique_render_targets=0. Wedge persists per Phase W finding.

Per-chain matched-prefix delta

chain Phase W (pre) C+25 (post) Δ
canary tid=6 → ours tid=1 (main) 105,112 105,128 +16
canary tid=4 → ours tid=11 11 11 0
canary tid=7 → ours tid=2 32 32 0
canary tid=12 → ours tid=7 4 4 0
canary tid=14 → ours tid=9 41 41 0
canary tid=15 → ours tid=10 16 16 0

Zero regressions on any chain.

Progression metric (PRIMARY)

3 cold reproducible runs:

field rep1 rep2 rep3 vs Phase W
instructions 50000007 50000007 50000007 unchanged
imports 40390 40390 40390 unchanged
unimpl 0 0 0 unchanged
draws 0 0 0 unchanged
swaps 1 1 1 unchanged
unique_render_targets 0 0 0 unchanged
shader_blobs_live 0 0 0 unchanged
texture_cache_entries 0 0 0 unchanged

Verdict: matched-prefix advanced (+16) but the wedge is structurally unchanged. This is the expected outcome per cascade-prediction gate E (~10% probability of movement). The C+25 fix is a diff-tool canonicalization, not an engine behavior change; the engine's boot trajectory is byte-identical to Phase W (digest fields prove it).

The next divergence at idx 105,128 (thread.create.ctx_ptr: canary 0xbe56bb3c in vC0… heap region vs ours 0x42453b3c in unified heap) is another deferred-Path-β symptom — a heap-VA leaking into a non-return payload field. Canonicalization could be extended to cover specific payload fields too, but that's a follow-up scope decision.

Determinism note

The engine binary is xrs-c25 (renamed from xrs-verify-c23; built from the same source tree, which is unchanged by C+25 since the C+25 diff is Python-only). All 3 cold runs used XENIA_CACHE_WIPE=1 and produced identical digests, confirming the engine's cold-boot trajectory is the same as Phase W's 73e99d6002…-class run.