# Phase C+8 — KeResetEvent re-validation ## Gate matrix | # | gate | result | |---|---|---| | 1 | cvar-OFF determinism 50M (3 runs) | PASS — all 3 = `c6d895829b4611964978990ae1cb8a6a` (unchanged from C+7 baseline; coarse 50M stable-digest fields don't yet see the post-102164 trajectory) | | 2 | Phase B `image_loaded_sha256` | PASS — `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` (matches baseline; `image_canonical_sha256` computed at diff-time depends only on the XEX loader which is untouched, so still `62c51908...`) | | 3 | Phase A main chain matched-prefix > 102164 | PASS — **102197** (+33 from 102164) | | 3b | tid=4 -> 11 unchanged | PASS — 9 (no regression) | | 3c | tid=7 -> 2 unchanged | PASS — 29 (no regression) | | 3d | tid=12 -> 7 unchanged | PASS — 2 (no regression) | | 3e | tid=14 -> 9 unchanged | PASS — 39 (no regression) | | 3f | tid=15 -> 10 unchanged | PASS — 15 (no regression) | | 4 | Build clean | PASS (1 unrelated `walk_committed_regions` dead-code warning, pre-existing) | | 5 | Phase A emitter determinism (2 runs) | PASS — both deterministic-fields md5 = `9135e369547111096f2c6d2be130dbb1` | | 6 | Unit tests | PASS — 156 -> **160** (+4 new, 0 regressions) | ## Stable-digest comparison Baseline (C+7 XamTaskCloseHandle): digest 50M `c6d895829b4611964978990ae1cb8a6a`. Post C+8 KeResetEvent: identical. The two changes (return value at 102164, downstream events) sit inside the matched window and don't yet move coarse counters (instructions=50M, imports=40470, unimpl=0, draws=0, swaps=1, unique_render_targets=0, shader_blobs_live=0, texture_cache_entries=0). This is the same coarseness pattern observed in C+7-precursor. ## Phase A determinism ours.jsonl (run 1) det-fields md5: `9135e369547111096f2c6d2be130dbb1` ours-determ.jsonl (run 2) : `9135e369547111096f2c6d2be130dbb1` Byte-identical on deterministic fields. New `--phase-a` det baseline (`9135e369...`), replacing C+7's `eca3ac9a...` baseline. Change is the return_value flip at idx=102164 (0 -> 1) cascading into a different event sequence inside the matched window after 102164. ## Per-chain summary | chain | C+7 XamTaskCloseHandle | C+8 KeResetEvent | delta | |---|---|---|---| | canary tid=6 -> ours tid=1 (main) | 102164 | **102197** | **+33** | | canary tid=4 -> ours tid=11 | 9 | 9 | 0 (sister at end of ours window) | | canary tid=7 -> ours tid=2 | 29 | 29 | 0 (sister at end of ours window) | | canary tid=12 -> ours tid=7 | 2 | 2 | 0 (different bug: KeWaitForSingleObject ret 258 vs 0) | | canary tid=14 -> ours tid=9 | 39 | 39 | 0 (different bug: XAudio vs RtlEnterCS) | | canary tid=15 -> ours tid=10 | 15 | 15 | 0 | All gates pass. No regressions. ## Next target XamContentCreateEnumerator at tid=6->1 idx=102197: - canary return_value=1317 (0x525 = X_ERROR_NO_CONTENT) - ours return_value=0