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:
@@ -0,0 +1,80 @@
|
||||
# Phase C+22 re-validation (2026-05-18)
|
||||
|
||||
## Protocol followed
|
||||
|
||||
Cold-vs-cold per reading-error #31 + #32 + #33 + the new #34.
|
||||
|
||||
1. ✓ Backed up both canary cache locations
|
||||
(`xenia-canary/build-cross/bin/Windows/Debug/cache/` and
|
||||
`~/.local/share/Xenia/cache/`) to tarballs.
|
||||
2. ✓ Wiped both canary caches + ours's
|
||||
(`~/.local/share/xenia-rs/cache/`).
|
||||
3. ✓ Cold-ran ours (50M instructions) against the `.iso`
|
||||
path — NOT the loose `default.xex` (per new
|
||||
reading-error #34).
|
||||
4. ✓ Cold-ran canary (90s timeout) against the `.iso` path
|
||||
with `--mute=true`.
|
||||
5. ✓ Truncated canary log to first 250k events per tid
|
||||
(keeping ALL tids, NOT only tid=6 — needed for the C+18 /
|
||||
C+21 cross-tid shared-global heuristic).
|
||||
6. ✓ Ran `diff_events.py` with full tid map
|
||||
`6=1,7=2,4=11,12=7,14=9,15=10`.
|
||||
7. ✓ Restored both canary cache backups.
|
||||
|
||||
## Determinism check
|
||||
|
||||
- ours-cold byte-identical to C+19 archive (`audit-runs/
|
||||
phase-c19-NtDuplicateObject-handle-create/ours-cold.jsonl`):
|
||||
121,569 events match post-normalization (host_ns and
|
||||
guest_cycle excluded). Reproduces deterministically.
|
||||
- No new engine source changes, so digest unchanged. Phase B
|
||||
`image_loaded_sha256 = ea8d160e9369328a5b922258a92113efb8d
|
||||
7ce3e1a5c12cc521e375985c91c18` preserved.
|
||||
|
||||
## Gate matrix (escalation mode)
|
||||
|
||||
| gate | result |
|
||||
|---------------------------------------------|-------------------|
|
||||
| Engine source unchanged | PASS |
|
||||
| Diff-tool source unchanged | PASS |
|
||||
| Phase A schema version 1 unchanged | PASS |
|
||||
| ours-cold byte-equivalent to C+19 archive | PASS (121,569 ev) |
|
||||
| Main matched-prefix preserved at C+21 | PASS (104,607) |
|
||||
| Sister chains preserved (11/32/3/41/16) | PASS |
|
||||
| C+21 absorber engaged (validation) | PASS (2/0 wait) |
|
||||
| C+18 absorber engaged (validation) | PASS (1/0 create) |
|
||||
| Phase B image hash preserved | PASS |
|
||||
| Canary caches restored | PASS |
|
||||
| Reading-error #34 documented + reproducible | PASS |
|
||||
| Tests count (no change) | 204 (unchanged) |
|
||||
|
||||
## What changed in the diff-tool report compared to C+21 baseline
|
||||
|
||||
NOTHING substantive. The numbers are identical:
|
||||
|
||||
| chain | C+21 (jitter-1) | C+22 (fresh c22) |
|
||||
|-----------------------------|-----------------|------------------|
|
||||
| tid=6→1 | 104,607 | 104,607 |
|
||||
| tid=4→11 | 11 | 11 |
|
||||
| tid=7→2 | 32 | 32 |
|
||||
| tid=12→7 | 3 | 3 |
|
||||
| tid=14→9 | 41 | 41 |
|
||||
| tid=15→10 | 16 | 16 |
|
||||
| main floating_create (c/o) | 0 / 0 | 1 / 0 |
|
||||
| main floating_wait (c/o) | 1 / 0 | 2 / 0 |
|
||||
|
||||
The floating counts vary across canary cold samples (different
|
||||
host-scheduler interleavings emit the wait.begin in different
|
||||
counts and at different indices) but the matched-prefix is
|
||||
constant — this is the C+21 fix working as designed.
|
||||
|
||||
## Outcome
|
||||
|
||||
- C+22 = ESCALATION (no engine change).
|
||||
- Cold-vs-cold environment is healthy and reproducible.
|
||||
- C+21 absorber works correctly under varying contention.
|
||||
- Reading-error #34 added as a methodology guard for future
|
||||
cold-vs-cold runs.
|
||||
- Next-target list updated: C+23 = D-NEW-2 (independent
|
||||
ε-class), C+24 = D-NEW-3 (XAudio), parallel scheduler-
|
||||
determinism track.
|
||||
Reference in New Issue
Block a user