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

64 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.