# Phase C+20 cold-vs-cold result (2026-05-14) ## No engine changes C+20 produces NO source modifications to either `xenia-rs` or `xenia-canary`. The session was a verify-only iteration concluding in an escalation decision (see `investigation.md`). ## Matched-prefix table (vs C+19 baseline) | chain | C+19 | C+20 | delta | |--------------------------------|---------|---------|-------| | canary tid=6 → ours tid=1 main | 104,606 | 104,606 | 0 | | canary tid=4 → ours tid=11 | 11 | 11 | 0 | | canary tid=7 → ours tid=2 | 32 | 32 | 0 | | canary tid=12 → ours tid=7 | 3 | 3 | 0 | | canary tid=14 → ours tid=9 | 41 | 41 | 0 | | canary tid=15 → ours tid=10 | 16 | 16 | 0 | ## Cold-stable digest `e1dfcb1559f987b35012a7f2dc6d93f5` — unchanged from C+13/C+15-α /C+16/C+17/C+18/C+19 (no source changes; digest cannot drift). ## Phase B image hash `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` — unchanged (no source changes). ## Tests Kernel: 204 PASS (unchanged from C+19, no test additions). ## Canary non-determinism observation (NEW — RE class #32) Cross-validated across 3 fresh canary cold jsonls (`canary-jitter-{1,2,3}.jsonl` from C+19 jitter probe, all wiped-cache cold). At tid=6 idx 104,606: - jitter-1: `wait.begin sid=75ae880ec432eb36 timeout=-1` - jitter-2: `kernel.return RtlEnterCriticalSection rv=0` ← matches ours - jitter-3: `kernel.call RtlLeaveCriticalSection` (offset shift; the wait.begin moved to idx 104,603 with a different SID) The contention pattern in canary's `RtlEnterCriticalSection` is host-scheduler-dependent. The matched-prefix metric is unreliable in this region. ## Outcome ESCALATE to scheduler-determinism track (separate session, larger scope).