# 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,128–105,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.