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>
This commit is contained in:
63
audit-runs/phase-c25-mm-allocator-family/re-validation.md
Normal file
63
audit-runs/phase-c25-mm-allocator-family/re-validation.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user