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>
2.6 KiB
Phase C+23 broad-impact assessment (2026-05-18)
Resolved
- D-NEW-2 (C+17 catalog) — KeWait timeout
wait.begin.timeout_nson canary tid=12 → ours tid=7 idx=3. Was 429466729600 (broken positive sign-extension); now -30000000 matching canary exactly. Sister chain advances 3 → 4.
Advanced
addisopcode semantics across the entire CPU interpreter. Any place in any guest binary usinglis/addiswith a negative immediate that flows into a 64-bitstd,mr,orx, or anything else that propagates the full GPR value will now produce canary-equivalent behavior. The KeWait timeout was just the first observable symptom in Sylpheed's cold-vs-cold trajectory.
Persisted (no change)
- Main matched-prefix tid=6→1 = 104,607 (the C+22 scheduler- determinism asymmetry is unaffected by this fix).
- Sister chains tid=4→11 (11), tid=7→2 (32), tid=14→9 (41), tid=15→10 (16).
- Phase B
image_canonical_sha256 = ea8d160e9369328a5b922258a92113ef b8d7ce3e1a5c12cc521e375985c91c18. - Kernel tests 204 (unchanged — no kernel-side code change).
NEW
-
D-NEW-2.1 (idx=4 sister chain canary tid=12 → ours tid=7):
KeWaitForSingleObjectreturn value canary=258 (TIMEOUT) vs ours=0 (SUCCESS). Same C+20/C+22 family — scheduler-determinism; ours's monolithic-thread runner allows the wait to return SUCCESS where canary's contended scheduler lets the 30 ms timeout elapse with no signaler. Out of scope for this phase; same parallel scheduler-determinism track recommended in C+22. -
CPU correctness probe: opportunity for a low-key audit of every "32-bit ABI defensive truncation" in
xenia-cpu/src/interpreter.rsfor other ops that legitimately need 64-bit sign-extension at the producer rather than truncation. Quick mental scan suggestsaddiswas likely the only such case;addialready extends viasimm16 as i64 as u64,ori/orisare pure 64-bit OR. Not a blocking concern.
Test count delta
| crate | pre-C+23 | post-C+23 | delta |
|---|---|---|---|
| xenia-cpu | 288 | 291 | +3 |
| xenia-kernel | 204 | 204 | 0 |
Cold-stable digest delta
| baseline | pre-C+23 | post-C+23 |
|---|---|---|
| ours-cold det-fields | e1dfcb1559f987b35012a7f2dc6d93f5 | 23cf4c4cbf61a577caa4118ab2308ba6 |
| Phase B image_canonical | ea8d160e9369… | ea8d160e9369… (UNCHANGED) |
3× ours-cold runs all yield the new digest. Determinism preserved.