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

3.6 KiB
Raw Blame History

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.