# Phase W — current ours state (Phase W.1 ground truth) Captured 2026-05-19. `-n 500000000` cold run with `XENIA_CACHE_WIPE=1 --halt-on-deadlock --trace-handles --ctor-probe=0x825070F0`. ## Headline: wedge is STRUCTURALLY UNCHANGED from AUDIT-049/058/059/062/065 - **tid=1** (main) `state=Blocked(WaitAny { handles: [4808] })` = handle `0x12c8` = `Thread(id=13, exit=None)`. PC `0x824ac578` (`do_wait_single`), `r12 = 0x82173c64` = `sub_82173990+0x2D4` (post-wait PC). Same join-on-tid=13 as AUDIT-049. - **tid=13** (worker) `state=Blocked(WaitAny { handles: [4816] })` = handle `0x12d0` = `Event/Auto`. PC `0x824ac578`, `r12 = 0x821cb1e0` = `sub_821CB030+0x1B0` (post-wait PC). Same wait site as AUDIT-059. - **`sub_825070F0` fires 0×** (no `CTOR-PROBE` line in stderr). Still the same activation gate that has not budged across all of Phase C + Phase D. ## Wedge handle identity drift (AUDIT-049 era → today) | Audit | Wedge handle | Wedge thread | Site | |---|---|---|---| | AUDIT-049 | `0x1288` | tid=13 | `sub_821CB030+0x1AC` | | AUDIT-059 | `0x12AC` | tid=13 | `sub_821CB030+0x1AC` | | AUDIT-062 | `0x12AC` | tid=13 | `sub_821CB030+0x1AC` | | AUDIT-065 | `0x12AC` | tid=13 | `sub_821CB030+0x1AC` | | **Phase W** | **`0x12d0`** | **tid=13** | **`sub_821CB030+0x1B0`** | Handle ID drift is expected per dossier caveat (allocator ordinals differ between runs); the site, thread, and "Event/Auto created by tid=13 itself via `lr=0x824a9f6c src=NtCreateEvent`" all match. ## All `` handles at deadlock ``` handle=0x00001020 kind=Event/Manual waiters=1 signals=0 waits=1 wakes=0 handle=0x00001040 kind=Event/Auto waiters=0 signals=0 waits=32 wakes=0 handle=0x000010b0 kind=Event/Auto waiters=0 signals=0 waits=7 wakes=0 handle=0x000010ec kind=Event/Manual waiters=1 signals=0 waits=2 wakes=0 handle=0x000012d0 kind=Event/Auto waiters=1 signals=0 waits=1 wakes=0 ← THE WEDGE handle=0x000012e4 kind=Event/Auto waiters=1 signals=0 waits=1 wakes=0 ``` `0x12d0` SID `d5e23609d3948568` does NOT appear in any canary cold trace (SID is per-tid per-PC and the run-to-run handle/PC numbering precludes matching). This confirms reading-error #30: shared-global SID recipe is NOT applicable to NtCreateEvent on a per-call basis — these are worker-local Events, not process-global dispatchers. ## Thread / event totals: the worker-cluster gap | canary_tid | ours_tid | matched | canary_total | ours_total | first_div | |---|---|---|---|---|---| | 4 | 11 | 11 | 75,287 | 11 | — | | 6 | 1 | 105,112 | 351,340 | 108,507 | 105,112 | | 7 | 2 | 32 | 32 | 33 | — | | 12 | 7 | 4 | 9,264 | 5 | 4 | | 14 | 9 | 41 | 1,904,055 | 77 | 41 | | 15 | 10 | 16 | 995,517 | 17 | — | **Canary tid=14 / tid=15 emit 1.9M / 995K events; ours's mapped tids emit 77 / 17.** The worker cluster (cf. AUDIT-057 thread-gap) never wakes up in ours, exactly as documented at every audit since.