========================================================================
LEAKAGE-FREE AUDIT  (disjoint target-cal / target-test, matched N_CAL=250)
========================================================================

Sentiment ECE (15-bin) on UNTOUCHED target-test, mean over 5 seeds x 2 models:
  raw ECE (in-domain) = 0.0495 [0.0455,0.0535]
  raw ECE (shifted  ) = 0.0527 [0.0497,0.0550]

  calibrator = temperature
    in-domain: ECE(src)=0.0351[0.0323,0.0385]  ECE(tgt)=0.0322[0.0271,0.0384]  gap=0.0029[-0.0013,0.0062]
    shifted  : ECE(src)=0.0539[0.0481,0.0596]  ECE(tgt)=0.0324[0.0304,0.0340]  gap=0.0214[0.0149,0.0288]

  calibrator = platt
    in-domain: ECE(src)=0.0322[0.0287,0.0365]  ECE(tgt)=0.0313[0.0267,0.0358]  gap=0.0010[-0.0012,0.0031]
    shifted  : ECE(src)=0.0529[0.0482,0.0575]  ECE(tgt)=0.0334[0.0316,0.0351]  gap=0.0195[0.0144,0.0251]

  calibrator = isotonic
    in-domain: ECE(src)=0.0507[0.0455,0.0547]  ECE(tgt)=0.0452[0.0430,0.0475]  gap=0.0055[0.0013,0.0091]
    shifted  : ECE(src)=0.0827[0.0749,0.0904]  ECE(tgt)=0.0472[0.0423,0.0510]  gap=0.0354[0.0287,0.0427]

Paired shifted-minus-in-domain gap increase (over seeds):
  temperature  delta = +0.0185  95% CI [+0.0092, +0.0301]
  platt        delta = +0.0185  95% CI [+0.0125, +0.0264]
  isotonic     delta = +0.0300  95% CI [+0.0243, +0.0362]

========================================================================
METRIC ROBUSTNESS (temperature): shifted-minus-in-domain gap increase
========================================================================
  ece_10     in=+0.0058  shift=+0.0224  incr=+0.0167 [+0.0080,+0.0272]
  ece_15     in=+0.0029  shift=+0.0214  incr=+0.0185 [+0.0092,+0.0301]
  ece_20     in=+0.0023  shift=+0.0194  incr=+0.0171 [+0.0095,+0.0268]
  ece_30     in=+0.0039  shift=+0.0179  incr=+0.0141 [+0.0060,+0.0234]
  ece_50     in=+0.0037  shift=+0.0159  incr=+0.0122 [+0.0042,+0.0221]
  ece_adapt  in=+0.0023  shift=+0.0152  incr=+0.0129 [+0.0052,+0.0223]
  brier      in=+0.0004  shift=+0.0029  incr=+0.0025 [+0.0014,+0.0040]
  nll        in=+0.0015  shift=+0.0130  incr=+0.0115 [+0.0059,+0.0176]

========================================================================
WHAT PREDICTS THE GAP  (Spearman rho, shifted pairs, temperature)
========================================================================
  gap ~ dT             rho=+0.639 (p=3.96e-15)
  gap ~ conf_js        rho=+0.479 (p=3.11e-08)
  gap ~ entropy_shift  rho=+0.465 (p=8.68e-08)
  gap ~ acc_drop       rho=+0.514 (p=1.96e-09)
  gap ~ atc_err        rho=+0.177 (p=5.34e-02)

========================================================================
LEAKAGE-FREE THRESHOLD TRANSFER (5% risk budget, shifted pairs)
========================================================================
  source-threshold risk                  = 0.1091 [0.0976,0.1207]
  source-threshold coverage              = 0.2924 [0.2353,0.3439]
  oracle-threshold risk (target-cal)     = 0.0766 [0.0672,0.0841]
  oracle-threshold coverage              = 0.1981 [0.1756,0.2206]
  fraction of shifted pairs exceeding 5% budget = 0.71

========================================================================
TARGET-LABEL-BUDGET SWEEP (temperature, shifted pairs)
========================================================================
  budget   mean ECE(src-fit)   mean ECE(budget-fit)   gap closed [95% CI]
     25    0.0539             0.0618              -0.0079 [-0.0200,+0.0042]
     50    0.0539             0.0424              +0.0114 [+0.0048,+0.0162]
    100    0.0539             0.0422              +0.0117 [+0.0024,+0.0213]
    250    0.0539             0.0324              +0.0214 [+0.0149,+0.0288]