# AUDIT-056: Producer-trace at sub_82452DC0
# Method: --log_lr_on_pc on canary (60s wallclock) vs --lr-trace on ours (-n 500M)
# canary HEAD 6de80dffe + audit-030 patch; ours HEAD ac2f89a (read-only); XENIA_CACHE_ROOT override

## Level 0: sub_82452DC0 LR distribution

LR              CANARY  OURS  RATIO   FN                       CLASS
0x82452E64      19      6     3.17x   sub_82452DC0+0xA4        CANARY-OVER (self-recurse)
0x82460CC8       7      2     3.50x   sub_82460B70+0x158       CANARY-OVER
0x821CBF7C       7      0     INF     sub_821CBEA8+0xD4        CANARY-ONLY
0x821C4C98       5      0     INF     sub_821C4AE0+0x1B8       CANARY-ONLY
0x82448120       4      4     1.00x   sub_824480D0+0x50        PARITY
0x821CB1D0       2      1     2.00x   sub_821CB030+0x1A0       CANARY-OVER
0x821790B8       1      1     1.00x   sub_82178F60+0x158       PARITY

TOTAL           45     14     3.21x

## Level 1: parents of CANARY-ONLY callers

sub_821CBEA8 entries: canary 7, ours 0  (CANARY-ONLY)
  LR distribution in canary: 5x lr=0x821CEEBC (sub_821CEDF8+0xC4), 2x lr=0x821CEDA0 (sub_821CECF0+0xB0)

sub_821C4AE0 entries: canary 1 (lr=0xBCBCBCBC == thread-trampoline poison), ours 0
  Means: sub_821C4AE0 is a thread entrypoint invoked via sub_824AFF88 trampoline
  ratio is 1->5 (1 invocation cascades to 5 internal sub_82452DC0 calls via loop)

## Level 2: grandparents

sub_821CEDF8 entries: canary 5 (all from sub_821C4EB0 +0x19C..+0x244 = 5-call cascade), ours 0
sub_821CECF0 entries: canary 2 (both from sub_821C4988+0x70), ours 0
sub_82460B70 entries: canary 7, ours 2 (3.5x — different chain)

## Level 3: great-grandparents

sub_821C4EB0 entries: canary 1 (lr=0x82174A80), ours 1 (lr=0x82174A80) -- PARITY!
sub_821C4988 entries: not directly callable (called from sub_821C4EB0+0x158)
sub_824AFF88 entries: canary 5 (all lr=0xBCBCBCBC, thread trampoline), ours 0

## DIVERGENCE INTRODUCER

Thread trampoline sub_824AFF88: canary 5 invocations, ours 0
=> 5 game-spawned threads in canary that are NOT being created in ours.

Thread creation totals (ground truth):
  canary 30 XThreads (tids 1..0x1E)
  ours   12 XThreads
  
Of the 18 missing ours threads, at least 5 invoke sub_824AFF88 trampoline
(others go to other entrypoints).

The audit-009 cluster front-end-UI activates sub_821C4EB0 ONCE in both engines
(parity at level 3). But inside sub_821C4EB0, the 5x cascade to sub_821CEDF8
fires only in canary. Note: --lr-trace in ours can't probe internal
basic-block PCs, so we cannot directly verify whether ours's sub_821C4EB0
runs to completion or returns early.

## Bug class

δ-throughput at thread-creation level. Specifically:
- 18 game-side threads not being created (12 vs 30 within 60s/500M)
- The work-submitter sub_82452DC0 throughput ratio (3.21x) matches
  thread-count ratio (3.0x) within noise => downstream of thread-spawn.

The cascade-divergence inside sub_821C4EB0 may have separate causality
from the missing threads, or both share an upstream cause (state-machine
not advancing past front-end-UI activation gate).
