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.8 KiB
Phase C+13 broad-impact assessment
Resolved
| event | before | after |
|---|---|---|
Main idx 103862 NtCreateFile(game:\\dat\\files.tbl) |
ours=0x00000000 (synth-success) / canary=0xc0000034 |
ours=0xc0000034 matches canary bit-for-bit |
Advanced
| metric | before | after | delta |
|---|---|---|---|
| Main cold-vs-cold matched prefix (canary tid=6 → ours tid=1) | 103,862 | 104,574 | +712 events |
Stable digest imports |
40,447 | 40,390 | -57 |
Stable digest instructions |
50,000,002 | 50,000,007 | +5 |
imports -57 is the population of previously-masked missing-disc-file
probes: each one used to emit a synth-success kernel.call/return pair
plus an import.call, ours now emits just a NOT_FOUND kernel.return.
Net 57 import-call slots freed = ~28 distinct missing-file paths that
the boot validator now sees as NOT_FOUND.
Persisted (sister chains, all unchanged)
| canary_tid | ours_tid | matched | notes |
|---|---|---|---|
| 4 | 11 | 9 | no divergence in compared events |
| 7 | 2 | 29 | no divergence in compared events |
| 12 | 7 | 2 | pre-existing KeWaitForSingleObject TIMEOUT/SUCCESS |
| 14 | 9 | 39 | pre-existing XAudio init divergence |
| 15 | 10 | 15 | no divergence in compared events |
No sister-chain regression. The fix is scoped to open_vfs_file's
disc-path arm; sister tids don't touch this code path during their
captured windows.
NEW (surfaced by the fix)
| location | observation |
|---|---|
| Main idx 104574 | Ordinal-of-call mismatch: canary does two sequential RtlEnterCriticalSection (104571, 104574); ours does one Enter then Leave. Likely an error-handling path in Sylpheed's boot validator that takes a nested lock on disc-file NOT_FOUND. |
This is the expected pattern: scoping the synth-empty surfaces the code branch that handles missing disc files honestly. The new divergence is at the next layer of the boot validator's error-path logic and becomes the Phase C+14 target.
Risk: did anything regress in non-cold scenarios?
- Kernel unit tests: 177 → 181 pass; no failures. The new
nt_create_file_non_disc_prefix_missing_still_synthesizestest proves the legacy synth-empty path is preserved for non-disc prefixes (i.e. writable system partitions). - Phase B image hash: unchanged. The fix doesn't touch image loading.
- Lockstep goldens:
--stable-digest3× determinism PASS; no jitter introduced. The C+12 baseline digest was already a stable-mode reference, so the new digest just becomes the C+13 baseline.
Summary
One divergence Resolved (idx 103862). +712 events Advanced on the main chain. Zero sister regressions. One NEW divergence at idx 104574 — a higher-quality target (error-handling path divergence) than a synth-empty masked divergence.