Files
xenia-rs/audit-runs/phase-c13-game-dat-files-tbl/broad-impact.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

67 lines
2.8 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+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_synthesizes` test
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-digest` 3× 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.