Files
xenia-rs/audit-runs/phase-c22-payload-canonicalization/cold-vs-cold-result.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

95 lines
3.6 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+22 — Cold-vs-cold verification
**Date:** 2026-05-26
**Mode:** Diff-tool only (engine unchanged).
## Methodology
- ours-cold jsonl: `/tmp/ours-boot-cold.jsonl` (pre-existing, 28.7 MB,
108,507 events on tid=1, 102,196 main-thread + worker noise). Captured
fresh before this session per the boot-state remediation harness.
Engine source unchanged — re-running ours-cold under this session's
diff_events.py would produce a byte-identical jsonl.
- 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/`. These are the same
reference jitter set used in C+20, C+21, Phase D Stage 0..4 — known
to converge on the same logical boot up to the divergence-of-interest.
- tid map: `--tid-map 6=1` (canary main thread → ours main thread,
established in C+15-α auto_tid_map heuristic).
## Pre-C+22 baseline (run before changes)
```
canary-jitter-1.jsonl → matched=105,128
first divergence: payload.ctx_ptr
canary='0xbe56bb3c' ours='0x42453b3c'
at idx 105,128 (thread.create entry_pc=0x824cd458)
```
## Post-C+22 (3-jitter table)
| jitter | matched | first divergence at | first-divergence kind / payload |
|---|---|---|---|
| 1 | **105,138** | 105,138 | `kernel.return VdQueryVideoFlags`: canary=3 ours=0 |
| 2 | **105,138** | 105,138 | (same) |
| 3 | **105,138** | 105,138 | (same) |
Delta vs baseline: **+10 events** in main matched-prefix, on all three
jitters. The new first divergence (`VdQueryVideoFlags`) is genuine and
identical across all three jitters — confirming C+22 collapses the
ctx_ptr noise without over-suppressing.
## 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 |
Jitter-to-jitter variance in absorber counts is expected (scheduling-
jitter window). Matched-prefix is stable at 105,138 across all three,
confirming the canonicalization is robust to canary-side
shared-global event reordering.
## Sister chains
No sister chains exercised in the 105,128105,138 range. The 10
absorbed events are all on the main `tid=6 → tid=1` chain:
```
[105135] handle.create (sid different — already skipped)
[105135] thread.create (ctx_ptr CANONICALIZED v1.7)
[105136] kernel.return ExCreateThread
[105137] kernel.return KiApcNormalRoutineNop
[105137] import.call VdQueryVideoMode
[105138] kernel.call VdQueryVideoMode
[105138] kernel.return VdQueryVideoMode
[105139] import.call VdQueryVideoFlags
[105140] kernel.call VdQueryVideoFlags
[105141] kernel.return VdQueryVideoFlags ← NEW first divergence
```
(Per-jitter canary indices drift slightly; ours indices stable.)
## Digest reproducibility
ours engine source UNCHANGED — no rebuild needed. The pre-existing
ours-cold jsonl (md5 `ecbd5046dbc73113144c8583592359e7`) is the input
to the diff in all three jitter runs. Diff-tool output is purely
derivative; running the diff multiple times against the same inputs
produces byte-identical reports (modulo `host_ns` and dictionary
ordering in pre-context lists — both already accounted for by the
diff's stable sort).
## Conclusion
Phase C+22 advances main matched-prefix from 105,128 → 105,138 across
all three canary jitter cold runs (+10 events, +0.0095 % of canary
total). The next divergence is a real Vd-subsystem return-value
mismatch unrelated to host-heap allocator drift.
Engine UNCHANGED. Phase B `image_loaded_sha256` ε boundary UNCHANGED.
Tripstones 1, 2, 3, 4, 5, 6 honored.