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>
98 lines
3.2 KiB
Markdown
98 lines
3.2 KiB
Markdown
# Phase C+23 — Cold-vs-cold verification
|
||
|
||
**Date:** 2026-05-26
|
||
**Mode:** Engine modified (`vd_query_video_flags` constant return).
|
||
Cold-vs-cold protocol: fresh `xrs-c23` cold runs vs archived canary
|
||
jitter set.
|
||
|
||
## Methodology
|
||
|
||
- ours-cold jsonls: `/tmp/ours-c23-vd-cold-{1,2,3}.jsonl` (28.7 MB
|
||
each, 108,507 events on tid=1). Captured under
|
||
`XENIA_CACHE_WIPE=1` with the freshly built `xrs-c23` binary
|
||
(release, post-fix).
|
||
- canary jitter set: 3 archived cold runs `canary-jitter-{1,2,3}.jsonl`
|
||
(4.4 / 3.5 / 3.7 GB) from
|
||
`xenia-canary/build-cross/bin/Windows/Debug/`. Same reference
|
||
jitter set used in C+20, C+21, C+22, Phase D Stage 0..4.
|
||
- tid map: `--tid-map 6=1` (canary main thread → ours main thread).
|
||
|
||
## Pre-C+23 baseline (post-C+22)
|
||
|
||
```
|
||
matched=105,138 across all 3 jitters
|
||
first divergence: kernel.return VdQueryVideoFlags
|
||
canary=3 ours=0
|
||
at idx 105,138 (tid=6→1)
|
||
```
|
||
|
||
## Post-C+23 (3-jitter table)
|
||
|
||
| jitter | matched | first divergence at | first-divergence kind / payload |
|
||
|---|---|---|---|
|
||
| 1 | **105,286** | 105,286 | `import.call VdGetCurrentDisplayGamma` (canary) vs `import.call KeAcquireSpinLockAtRaisedIrql` (ours) |
|
||
| 2 | **105,286** | 105,286 | (same) |
|
||
| 3 | **105,286** | 105,286 | (same) |
|
||
|
||
Delta vs baseline: **+148 events** in main matched-prefix on all
|
||
three jitters. The new first divergence (`VdGetCurrentDisplayGamma`
|
||
vs `KeAcquireSpinLockAtRaisedIrql`) is genuine and identical across
|
||
all three jitters.
|
||
|
||
## Absorber counters (sanity)
|
||
|
||
| jitter | floating_create (c/o) | floating_wait (c/o) |
|
||
|---|---|---|
|
||
| 1 | 0 / 0 | 1 / 0 |
|
||
| 2 | 0 / 0 | 0 / 0 |
|
||
| 3 | 1 / 0 | 3 / 0 |
|
||
|
||
Within the expected scheduling-jitter window. Matched-prefix
|
||
stable at 105,286 across all three.
|
||
|
||
## Sister chains
|
||
|
||
No sister chain regressions: the diff report lists only the main
|
||
`tid=6 → tid=1` chain (no sister chains exercised in the new
|
||
window). All previously matched sister chains
|
||
(11, 32, 4, 41, 16) remain unaffected because they fire outside
|
||
the 105,138–105,286 window.
|
||
|
||
## Determinism (3 cold runs)
|
||
|
||
| run | md5 | matched-prefix vs jitter-1 | ours_total |
|
||
|---|---|---|---|
|
||
| cold-1 | `4e2e781ff0609f3a0a08f573dee4be4e` | 105,286 | 108,507 |
|
||
| cold-2 | `b195d82a1b61e87d6f54a2ac2b3e091b` | 105,286 | 108,507 |
|
||
| cold-3 | `e6b94d4dc151007c924b81bbc5c9faf5` | 105,286 | 108,507 |
|
||
|
||
The byte-level md5 differs (host_ns/guest_cycle wall-time jitter,
|
||
expected) but the logical semantic state — matched-prefix,
|
||
ours_total, first-divergence index, divergent payloads — is
|
||
bit-identical across all 3 runs.
|
||
|
||
New cold baseline digest (representative cold-1):
|
||
**`4e2e781ff0609f3a0a08f573dee4be4e`**.
|
||
|
||
## Phase B `image_canonical_sha256`
|
||
|
||
Pinned hash `ea8d160e…` UNCHANGED. No XEX loader changes; only
|
||
kernel export logic modified.
|
||
|
||
## Test suite
|
||
|
||
xenia-kernel: **226 PASS** (was 224 + 2 new).
|
||
|
||
## Conclusion
|
||
|
||
Phase C+23 advances main matched-prefix from 105,138 → 105,286
|
||
across all three canary jitter cold runs (+148 events,
|
||
+0.0311% of canary total). The next divergence is a real
|
||
post-VdSwap control-flow mismatch unrelated to video flags.
|
||
|
||
Engine MODIFIED (~50 LOC: 1 registration edit + 6 LOC function
|
||
body + 40 LOC tests). Diff tool UNCHANGED. Phase B
|
||
`image_loaded_sha256` ε class boundary UNCHANGED.
|
||
|
||
Tripstones 1, 2, 3, 4, 5, 6 honored.
|