# Phase C+9 — broad impact ## Resolved divergences (C+8 → C+9) | idx | name | C+8 ours | C+9 ours | canary | status | |---|---|---|---|---|---| | 102197 | `XamContentCreateEnumerator` return_value | 0 | **1317 (0x525)** | 1317 | ✅ MATCH | ## New first divergence | idx | name | canary | ours | hypothesis | |---|---|---|---|---| | 102404 | `NtQueryFullAttributesFile` return_value | 0 (STATUS_SUCCESS) | 3221225524 (0xC0000034 STATUS_OBJECT_NAME_NOT_FOUND) | VFS path lookup miss — file/dir exists on canary's pre-populated cache/HDD root but not ours's fresh VFS. AUDIT-052/054 sibling class. | ## Persisting divergences (different bug, hold) * tid=12 → 7 idx=2: `KeWaitForSingleObject` ret 258 vs 0 (held) * tid=14 → 9 idx=39: XAudio vs `RtlEnterCriticalSection` (held) ## Coarse-counter movement This is the first non-zero coarse digest delta since C+5 (`imports: 40470 → 40465`, -5). Interpretation: the return_value flip at idx=102197 routes the game into a different control-flow branch that calls 5 fewer import functions within 50M instructions. This is exactly the bull's-eye behavior we want — the fix has visible downstream effect. `draws=0`/`swaps=1` stable: still in the pre-renderer boot phase. ## XAM call coverage delta Pre-C+9: `XamContentCreateEnumerator` fired 1× with stub return. Post-C+9: `XamContentCreateEnumerator` fires 1× with X_ERROR_NO_SUCH_USER. Total XAM-content callsite count UNCHANGED (1 invocation in 50M). ## Reading-error class NO new class introduced. **#28 (canary source supersedes NT-doc / plan annotations) re-applied** with one extra rigor step: the plan's inline constant identity (`0x525 = X_ERROR_NO_CONTENT`) was WRONG — `0x525` is `X_ERROR_NO_SUCH_USER`. Lesson: **verify constants from canary's xbox.h, not from the plan's natural-language descriptions**. This is the same class of "trust the source not the framing" that #28 captures; logged here as a fresh data point. ## Deferred-item interaction check | item | touched? | |---|---| | Heap region (C+2) | NO | | Clock (Stage 2) | NO | | Audio host-pump (AUDIT-032/048) | NO | | KeSetEvent / KeResetEvent semantics | NO | | VFS cache persistence (AUDIT-052/054) | NO (Phase C+10 may need to revisit) | | `xam_user_get_signin_state` user0=1 model | FLAGGED as internal inconsistency — separate fix, not landed | | profile-manager model | FLAGGED for future XAM-user-subsystem session | ## Internal inconsistency surfaced (NOT FIXED) Ours's `xam_user_get_signin_state` (xam.rs:380-384) returns 1 for `user_index == 0`, but the C+9 fix says "no profile installed → 0x525 for user 0." When the game eventually calls `XamUserGetSigninState(0)`, canary returns 0 (idx 107996 confirmed in canary.jsonl) while ours returns 1. This will become a Phase A first divergence in a future Phase C session — fix shape will be: `xam_user_get_signin_state` returns 0 unconditionally (mirror canary's "no profile manager" default). Single-fix discipline: NOT landed in C+9.