Thibaut Forest Claude Fable 5 commited on
Commit ·
3704c62
1
Parent(s): e4aaa05
phase 68: T5 global-optimum probe (6 lanes) - all rejected with mechanisms; 60d65da stands as final
Browse files- EXPERIMENTS.md +55 -0
- agent_reports_bgkf/t5_base.md +107 -0
- agent_reports_bgkf/t5_data.md +155 -0
- agent_reports_bgkf/t5_drawdown.md +96 -0
- agent_reports_bgkf/t5_joint.md +96 -0
- agent_reports_bgkf/t5_seasonal.md +94 -0
- agent_reports_bgkf/t5_select.md +131 -0
EXPERIMENTS.md
CHANGED
|
@@ -3493,3 +3493,58 @@ this feature space across our own features, the literature's, and the
|
|
| 3493 |
readable competitors' - the ordering axis is closed from every direction
|
| 3494 |
tried. PRIVATE SELECTION stands: 60d65da first, 4c93883 (measured
|
| 3495 |
1575.31) as the no-inference alternative.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3493 |
readable competitors' - the ordering axis is closed from every direction
|
| 3494 |
tried. PRIVATE SELECTION stands: 60d65da first, 4c93883 (measured
|
| 3495 |
1575.31) as the no-inference alternative.
|
| 3496 |
+
|
| 3497 |
+
## Phase 68 - T5 global-optimum probe (6 structural lanes): ZERO adoptions - 60d65da is the honest optimum of this framing, search closed
|
| 3498 |
+
|
| 3499 |
+
User-directed final campaign ("it's a local optimum but probably not the
|
| 3500 |
+
global one") - four commissioned angles plus the two rank-3-derived
|
| 3501 |
+
prototypes, every arm paired vs 60d65da (1541.3), parity-verified,
|
| 3502 |
+
count-flat unless noted (reports agent_reports_bgkf/t5_*.md):
|
| 3503 |
+
- BASE REBUILD: competitor-style wide-space stacked base (78 leak-verified
|
| 3504 |
+
cols, 4-learner stack) IS a better dies42 classifier than logbag
|
| 3505 |
+
(per-fold OOF AUC 0.965 vs 0.938, 4/5 folds, biggest where labels are
|
| 3506 |
+
scarce) and it does NOT price: |delta| <= 9.2 (<=0.3sig) at every mixing
|
| 3507 |
+
weight. AUC gains live in separating obvious cases; cost lives in the
|
| 3508 |
+
fine ordering near the inclusion cutoff, which logbag already has.
|
| 3509 |
+
Base-model capacity is not the binding constraint.
|
| 3510 |
+
- JOINT SEARCH: 8-dim differential evolution, 90 evals, tune/validate
|
| 3511 |
+
origin split. Best tune delta -104; 100% of it sign-reverses on the
|
| 3512 |
+
held-out origins (top-3 all flip). The CV's resolution is exhausted at
|
| 3513 |
+
this scale - any future multi-dial "win" of this size is presumed noise
|
| 3514 |
+
unless it passes the same split.
|
| 3515 |
+
- SELECTION ARCHITECTURE: expected-gain (cost-based) selection at pinned
|
| 3516 |
+
count: best arm -5.0+/-28.8 (0.2sig); the geography term is a measured
|
| 3517 |
+
LOSS +27..+31/scen (2sig, robust across three geo-on/off contrasts).
|
| 3518 |
+
The rank-4 team's -14.6 selection edge exists only count-floating.
|
| 3519 |
+
- DATA WALL: learning curve 40->100% is shelf-not-slope (local slope ~0,
|
| 3520 |
+
p=.68); a hypothetical DOUBLED corpus prices at ~-44 [-100..0]; label
|
| 3521 |
+
audit recovers zero positives. The surface rewards building/failure-mode
|
| 3522 |
+
COVERAGE, not volume - the optimum is not gated on labels nobody has.
|
| 3523 |
+
- SEASONAL MARGIN (rank-3 recipe): the fleet seasonal factor is REAL here
|
| 3524 |
+
(p2p 0.0585 V in demeaned fleet-median voltage, matches their 0.048)
|
| 3525 |
+
but injecting it into the wiener barrier distance loses at every
|
| 3526 |
+
strength on both climatology maps (best arm +1.0, and the mild setting
|
| 3527 |
+
is significantly harmful, wilcoxon p=.031; one Dec origin +546 from a
|
| 3528 |
+
2 mV shift). Their -104 lived in calibrated-probability expected-cost
|
| 3529 |
+
selection; in a rank-only frozen-count slot the factor only reorders,
|
| 3530 |
+
and it reorders worst where deaths cluster. Wrong lever, axis closed.
|
| 3531 |
+
- DRAWDOWN REFRAME (rank-3 core method, faithful rebuild): 1.72M
|
| 3532 |
+
(h,m)-conditioned censored drawdown rows from 71,878 battery-days, their
|
| 3533 |
+
exact HGB (450/.07/63/200), 107 causal features, fold-safe. Monotone-
|
| 3534 |
+
against dose response: alone +255.6 (3.9sig), as 4th source @.10 +14.1
|
| 3535 |
+
(0.7sig loss, best arm); survival-curve read strictly worse. OOF AUC
|
| 3536 |
+
0.958 vs raw v_min_7's 0.961 - it learns first-passage of the LAGGING
|
| 3537 |
+
smoothed statistic while the champion sits on leading raw-voltage
|
| 3538 |
+
indicators. Their 1350.7 is their whole stack (expected-cost scheduler,
|
| 3539 |
+
seasonality, timing), not an order signal that transplants.
|
| 3540 |
+
|
| 3541 |
+
CONCLUSION: with T2-T5 plus peer transplants (~150 arms) the ordering,
|
| 3542 |
+
base-capacity, selection, data, seasonality and reframing axes are ALL
|
| 3543 |
+
closed with mechanisms. 60d65da (CV 1541.3, count-flat) stands as the
|
| 3544 |
+
genuine optimum of this framing at this instrument's resolution.
|
| 3545 |
+
|
| 3546 |
+
FINAL SELECTION (deadline 2026-08-23 23:59): private pick 60d65da first;
|
| 3547 |
+
4c93883 (publicly measured 1575.31) as the no-inference alternative.
|
| 3548 |
+
e4745d2 publicly refuted (1594.89). Never 698401a. Count-coupled CV
|
| 3549 |
+
frontier (gated hazard+alpha 1398.0) remains report-only: the family is
|
| 3550 |
+
0-for-4 on public conversion.
|
agent_reports_bgkf/t5_base.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5 BASE-REBUILD lane: wide-feature stacked nonlinear base vs the linear order-primary — REJECTED (wash, not capacity-limited)
|
| 2 |
+
|
| 3 |
+
Date: 2026-08-23. Lane: BASE-REBUILD (T5 global-optimum probe).
|
| 4 |
+
Baseline: head config 60d65da, CV 1541.3 on bgkf (`/tmp/ref_head_1541.csv`;
|
| 5 |
+
parity re-verified through this lane's own driver: 1541.3, +0.0, swaps 2.27).
|
| 6 |
+
Champion order = .50*rank(logbag vm7) + .30*rank(WienerFHT) + .20*rank(gapHGB
|
| 7 |
+
on FEATURES+vmin7_rank+GAP4); values/counts always champion logbag (order-only
|
| 8 |
+
via blend w2=1.0).
|
| 9 |
+
|
| 10 |
+
## Hypothesis
|
| 11 |
+
|
| 12 |
+
The champion's order primary is a bagged LOGISTIC on ~14 hand-picked snapshot
|
| 13 |
+
features. The rank-4 public competitor's base is a stacked nonlinear ensemble
|
| 14 |
+
over a wide multi-scale feature space. Grafts onto our pipeline all failed
|
| 15 |
+
(saturated local optimum) — this lane REBUILT the base as a unit: wide table +
|
| 16 |
+
stacked ensemble, and tested it as order primary / full order / diversity
|
| 17 |
+
partner.
|
| 18 |
+
|
| 19 |
+
## Build
|
| 20 |
+
|
| 21 |
+
1. WIDE TABLE (`/tmp/c29/build_wide.py` -> `/tmp/c29/wide.parquet`): 78
|
| 22 |
+
feature cols per (device_id, origin_idx), all 168 origins (real+synthetic),
|
| 23 |
+
strictly as-of-origin from the daily corrected-voltage series (beta 0.005
|
| 24 |
+
fixed): rolling {3,7,14,30,60,90,180,365}d x {mean,min,max,std,coverage,
|
| 25 |
+
masked-OLS slope}; window contrasts (mean/min/slope 7-30, 14-90, 30-180,
|
| 26 |
+
60-365); days-since-min {30,90,180,365}; temp means {7,30,90};
|
| 27 |
+
v_last_c/data_gap_days; within-snapshot pct-ranks of v_last_c and 7d-min
|
| 28 |
+
globally/per-building/per-room; building/room device counts. Leak-freedom
|
| 29 |
+
verified by recomputing 25 random (device,origin) rows from the raw series
|
| 30 |
+
truncated at origin — 0 mismatches beyond float32 precision (2e-5).
|
| 31 |
+
Coverage >= 86% on every column.
|
| 32 |
+
|
| 33 |
+
2. STACKED BASE (`/tmp/c29/run.py` StackBase): learners = HGB(depth3, lr.06,
|
| 34 |
+
300it), HGB(depth2, lr.03, 600it), RF(350, min_leaf 5) on wide+FEATURES+
|
| 35 |
+
vmin7_rank+GAP4 (~96 cols), LogisticRegression on the champion's scaled
|
| 36 |
+
feature set; building-GroupKFold(4) OOF probabilities (deaths-sorted snake,
|
| 37 |
+
deterministic — the established contamination rule) -> LogisticRegression
|
| 38 |
+
(C=0.03) calibrator; learners refit on full fold-train. Fold-safe inside
|
| 39 |
+
.fit(train); memoized per outer fold. cv.py/models_cv.py md5-pinned per arm
|
| 40 |
+
(race guard); no repo files touched.
|
| 41 |
+
|
| 42 |
+
## Results (paired vs head 1541.3, 48 scenarios; bgkf, p_star=1.0, split 3, tw 2.0)
|
| 43 |
+
|
| 44 |
+
| arm | order | SCORE | delta±SE | sig | W/L | wilcoxon | swaps |
|
| 45 |
+
|---|---|---|---|---|---|---|---|
|
| 46 |
+
| parity | champion .50/.30/.20 rebuilt | 1541.3 | +0.0±0.0 | 0.4σ | 1W/1L | – | 2.27 |
|
| 47 |
+
| arm_a | stack replaces logbag at .50 (+.30 wn +.20 gap) | 1549.4 | +8.1±48.0 | 0.2σ | 25W/19L | p0.441 | 2.28 |
|
| 48 |
+
| arm_b | stack as FULL order (w 1.0) | 1533.1 | -8.2±55.1 | 0.1σ | 30W/17L | p0.295 | 2.26 |
|
| 49 |
+
| arm_c | .50*rank(champ composite) + .50*rank(stack) | 1532.2 | -9.2±36.6 | 0.3σ | 24W/19L | p0.583 | 2.28 |
|
| 50 |
+
|
| 51 |
+
No arm reaches 1σ (adoption bar for a new mechanism: 2σ). Weight mini-sweep
|
| 52 |
+
not triggered (rule: only if a/c < 0 at >= 1σ). Swaps flat 2.26-2.28
|
| 53 |
+
everywhere — count-flat as designed.
|
| 54 |
+
|
| 55 |
+
Block structure (delta means): every arm WINS warmup s0-7 (arm_a -78, arm_b
|
| 56 |
+
-262, arm_c -104) and LOSES the panel s8-41 (+27 / +48 / +9); nearend ~+13.
|
| 57 |
+
The tiny negative means are entirely the 8 warmup scenarios; the 34-scenario
|
| 58 |
+
panel prefers the champion. Deltas are heavy-tailed (arm_b: s21 +1545, s0
|
| 59 |
+
-810, s12 +794, s28 -757) — hence SE 37-55 and no resolvable effect.
|
| 60 |
+
|
| 61 |
+
## AUC comparison (dies42, building-OOF, closed rows at real origins)
|
| 62 |
+
|
| 63 |
+
| fold | n_test | deaths | logbag | STACK | wiener | gapHGB |
|
| 64 |
+
|---|---|---|---|---|---|---|
|
| 65 |
+
| 0 | 3056 | 123 | 0.962 | **0.974** | 0.929 | 0.969 |
|
| 66 |
+
| 1 | 1987 | 91 | 0.963 | **0.979** | 0.930 | 0.970 |
|
| 67 |
+
| 2 | 3661 | 80 | **0.968** | 0.962 | 0.939 | 0.974 |
|
| 68 |
+
| 3 | 967 | 71 | 0.837 | **0.930** | 0.833 | 0.893 |
|
| 69 |
+
| 4 | 7917 | 61 | 0.958 | **0.978** | 0.965 | 0.963 |
|
| 70 |
+
|
| 71 |
+
Stack beats logbag in 4/5 folds (mean per-fold 0.965 vs 0.938; +9.3 pts on
|
| 72 |
+
the hard fold 3, exactly where logbag collapses). Pooled-across-folds AUC is
|
| 73 |
+
lower for the stack (0.948 vs 0.957) only because its probability scale varies
|
| 74 |
+
more across fold fits — per-fold is the fair capacity read. Inner-OOF AUCs per
|
| 75 |
+
learner: h3 .947-.977, h2 .955-.977, rf .960-.977, lr .956-.972, meta .972-.981
|
| 76 |
+
— the linear learner is competitive with the trees even inside the wide space.
|
| 77 |
+
|
| 78 |
+
## Verdict
|
| 79 |
+
|
| 80 |
+
REJECTED — hypothesis answered, both halves:
|
| 81 |
+
|
| 82 |
+
1. **The capacity is real.** The rebuilt wide-space stacked base is a genuinely
|
| 83 |
+
better building-OOF dies42 classifier than the champion logbag (4/5 folds,
|
| 84 |
+
large margin where training deaths are scarce). The competitor-style base
|
| 85 |
+
CAN be built on this data and it does classify better. This is not a
|
| 86 |
+
feature-engineering or model-capacity failure.
|
| 87 |
+
|
| 88 |
+
2. **The capacity does not price.** At every mixing weight (0.5 primary, 1.0
|
| 89 |
+
full, 0.5 diversity ensemble) plan cost is a wash (|delta| <= 9.2, <= 0.3σ,
|
| 90 |
+
wilcoxon p >= 0.29). Its classification edge concentrates in warmup/sparse-
|
| 91 |
+
label regimes (fold 3, s0-7) where scenario costs are small; in the panel
|
| 92 |
+
block that dominates THE SCORE, logbag's calibrated top ranks near the
|
| 93 |
+
inclusion cutoff are already sufficient, and the stack's reorderings there
|
| 94 |
+
are net-slightly-negative. Same mechanism as the t4 stacking lane
|
| 95 |
+
(`t4_stack.md`): dies42-AUC gains live in separating obvious cases, cost
|
| 96 |
+
lives in the fine ordering near the cutoff.
|
| 97 |
+
|
| 98 |
+
The linear order-primary is genuinely sufficient at this data size (461
|
| 99 |
+
devices, ~1130 death-rows): base-model capacity is NOT the binding constraint
|
| 100 |
+
on bgkf cost. Do not revisit base-model family swaps as a cost lever; any
|
| 101 |
+
future gain must come from a signal that reorders the marginal band
|
| 102 |
+
specifically (or from count/timing machinery, which is closed/tiered
|
| 103 |
+
separately).
|
| 104 |
+
|
| 105 |
+
Artifacts: /tmp/c29/build_wide.py, /tmp/c29/wide.parquet, /tmp/c29/run.py,
|
| 106 |
+
/tmp/c29/arms.out (incl. full AUC diag), /tmp/cv_bgkfcand_c29_{parity,arm_a,
|
| 107 |
+
arm_b,arm_c}.csv.
|
agent_reports_bgkf/t5_data.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5 DATA-WALL: is label scarcity the binding constraint?
|
| 2 |
+
|
| 3 |
+
Baseline 60d65da champion, CV 1541.3 on bgkf (parity verified cell-exact vs
|
| 4 |
+
/tmp/ref_head_1541.csv: max per-origin diff 0.0). Champion = values
|
| 5 |
+
logbag(vm7), order .50 rank(logbag) + .30 rank(WienerFHT) + .20 rank(gapHGB),
|
| 6 |
+
planner p_star=1.0, split_days=3, timing_weight=2.0. All work in /tmp/c32/
|
| 7 |
+
(run.py driver, analyze.py + extrap.py analysis, cv_*.csv per-arm results,
|
| 8 |
+
arms.csv per-draw table, fold_arms.csv fold-level table). No repo file
|
| 9 |
+
touched; monkeypatch only; nothing committed.
|
| 10 |
+
|
| 11 |
+
## Design
|
| 12 |
+
|
| 13 |
+
Learning curve: a model-class wrapper drops fold-TRAIN buildings inside
|
| 14 |
+
fit() before refitting BOTH the values primary and all three order sources;
|
| 15 |
+
test folds, planner state, and evaluator identical to the champion run.
|
| 16 |
+
frac=1.0 through the wrapper reproduces 1541.3 exactly (bit-faithful, every
|
| 17 |
+
origin 0.0). Two samplers, both stratified on per-building train death
|
| 18 |
+
count:
|
| 19 |
+
|
| 20 |
+
* v1 (`f*`): death-sorted list split into n_keep contiguous strata, one
|
| 21 |
+
building drawn per stratum. Structural quirk found post-hoc: at frac .8
|
| 22 |
+
the multi-building strata all sit at the HIGH-death end, so drops
|
| 23 |
+
concentrate on high-death buildings (keeps only ~63% of deaths at 79% of
|
| 24 |
+
buildings). Kept as an informative composition contrast, not discarded.
|
| 25 |
+
* v2 (`g*`): drops evenly spaced across the death-sorted list (random
|
| 26 |
+
offset), so kept-death fraction tracks the building fraction. This is the
|
| 27 |
+
clean volume axis. 5 seeds at .4/.6/.8/.9.
|
| 28 |
+
|
| 29 |
+
Count-flat caveat (by design, per the tasking): subsampling changes the
|
| 30 |
+
primary's p42 values, so the count machinery moves within each arm (swaps
|
| 31 |
+
2.09-2.88 vs ref 2.27). The curve measures the WHOLE champion's data
|
| 32 |
+
response including that channel, not a values-frozen ordering response.
|
| 33 |
+
|
| 34 |
+
## 1. Learning curve
|
| 35 |
+
|
| 36 |
+
Per-draw deltas vs 1541.3 (SCORE units; x = actual fraction of the 320
|
| 37 |
+
fold-train unique deaths kept, aggregated over folds):
|
| 38 |
+
|
| 39 |
+
| nominal | n draws | mean SCORE | delta | draw scatter (sd) | per-draw deltas |
|
| 40 |
+
|---|---|---|---|---|---|
|
| 41 |
+
| 40% | 8 | 1684.6 | +143.3 | 131.4 | +379, -19, +246 (v1); +171, +98, +173, +108, -10 (v2) |
|
| 42 |
+
| 60% | 8 | 1626.3 | +85.0 | 66.4 | +136, +225, +11 (v1); +72, +63, +60, +51, +62 (v2) |
|
| 43 |
+
| 80% | 8 | 1657.1 | +115.8 | 66.6 | +146, +198, +211 (v1); +57, +138, +40, +72, +65 (v2) |
|
| 44 |
+
| 90% | 5 | 1612.0 | +70.6 | 47.3 | +45, +93, +11, +136, +68 (v2) |
|
| 45 |
+
| 100% | 1 | 1541.3 | 0.0 | - | parity, exact |
|
| 46 |
+
|
| 47 |
+
v2-only (clean volume axis): x=0.42 -> +108; x=0.62 -> +62; x=0.76 -> +74;
|
| 48 |
+
x=0.89 -> +71; x=1.00 -> 0.
|
| 49 |
+
|
| 50 |
+
The shape is NOT a smooth data-volume law. It is a shelf plus a cliff:
|
| 51 |
+
any subsample from 60% to 90% costs a roughly constant +60..+75, and the
|
| 52 |
+
local slope on the v2 shelf 0.6->0.9 is -29.9 +/- 70.1 per unit
|
| 53 |
+
death-fraction (p=0.68) - i.e. per +10% data: -3.0 +/- 7.0, statistically
|
| 54 |
+
zero. The drop to 0 happens only at exactly 100%, which is the
|
| 55 |
+
zero-perturbation parity point (the alpha=1.0 count appetite and every dial
|
| 56 |
+
were tuned on the full-data model); the shelf offset is perturbation +
|
| 57 |
+
composition cost, not marginal data value.
|
| 58 |
+
|
| 59 |
+
Composition dominates volume, three independent lines:
|
| 60 |
+
|
| 61 |
+
* Matched death-fraction ~0.63-0.65: v1 draws (drops hit high-death
|
| 62 |
+
buildings) +185.0 mean vs v2 draws (even drops) +80.7 mean. Same label
|
| 63 |
+
count, 2.3x the damage when the lost labels come from high-death
|
| 64 |
+
buildings.
|
| 65 |
+
* Two 40%-of-corpus draws MATCH full data (f40s1 -18.7, g40s4 -10.5): the
|
| 66 |
+
model family already saturates on a favorable 40% subset (~32-37% of
|
| 67 |
+
rows, ~39-42% of deaths).
|
| 68 |
+
* Fold-level paired regression (150 fold x arm points, delta fold cost vs
|
| 69 |
+
deaths dropped): slope +24.0 per dropped unique death (~ +0.5 SCORE per
|
| 70 |
+
death; p=0.009) but r=0.21 - deaths-dropped explains only ~4% of the
|
| 71 |
+
variance; which buildings dropped explains the rest.
|
| 72 |
+
|
| 73 |
+
## Extrapolation to 150% / 200% data (honest bounds)
|
| 74 |
+
|
| 75 |
+
Fits on all draws + the exact 100% anchor, x = kept-death fraction;
|
| 76 |
+
bootstrap resampled within levels, 3000 reps; gains measured against each
|
| 77 |
+
fit's OWN y(1) so the fit's anchor miss does not inflate them:
|
| 78 |
+
|
| 79 |
+
| fit (v2-only + anchor) | y(1.0) | gain at x=1.5 | gain at x=2.0 |
|
| 80 |
+
|---|---|---|---|
|
| 81 |
+
| power y = c + a*x^-b | 1586.8 (misses true 1541.3 by +45.5) | -25.7 [-47..0] | -43.7 [-80..0] |
|
| 82 |
+
| log y = b0 + b1*ln x | 1586.4 (miss +45.1) | -26.6 [-58..+3] | -45.5 [-100..+5] |
|
| 83 |
+
|
| 84 |
+
(All-draws fits: gain200 -35 [-103..-9] power, -90 [-162..-10] log; the log
|
| 85 |
+
fit is dragged steep by the v1 composition-skewed deep cuts and misses the
|
| 86 |
+
known anchor by +38 - treat it as an upper bound on optimism.)
|
| 87 |
+
|
| 88 |
+
Both parametric families overshoot the known 100% point by ~+45: the data
|
| 89 |
+
reject a smooth volume curve, and the smooth-fit gains are therefore
|
| 90 |
+
upper-ish bounds. Face value: +50% more same-kind data buys ~26 SCORE,
|
| 91 |
+
doubling buys ~44, with 95% bounds touching 0 in the clean (v2) fits.
|
| 92 |
+
The local shelf slope says the marginal value of same-kind data at the
|
| 93 |
+
current corpus size is indistinguishable from zero.
|
| 94 |
+
|
| 95 |
+
Big caveat the curve cannot price: "same-kind" is load-bearing. Data
|
| 96 |
+
containing NEW failure modes (the public fleet's uncatchable tail /
|
| 97 |
+
train-absent ghosts, public-measured 4x) is a distribution-shift question,
|
| 98 |
+
not a volume question - this probe says nothing about it.
|
| 99 |
+
|
| 100 |
+
## 2. Label audit
|
| 101 |
+
|
| 102 |
+
Ledger: 82 devices with an eol; 80 with eol <= last origin (2026-07-27);
|
| 103 |
+
2 died 2026-07-28 (after the last origin, before data end 07-31).
|
| 104 |
+
|
| 105 |
+
* bgkf convention (origin <= max-42d): ALL 80 observable deaths appear as
|
| 106 |
+
dies42=1 in at least one closed row. ZERO deaths lost. The window_closed
|
| 107 |
+
column convention likewise loses zero (82/82 incl. the two late deaths).
|
| 108 |
+
* walk_forward's comment ("every death <= origin lands in some closed
|
| 109 |
+
window") verified on the actual table: holds at 47/48 real origins;
|
| 110 |
+
violated once, transiently, at 2025-10-06 (1 of 12 deaths not yet in a
|
| 111 |
+
closed window - the 4d synthetic grid had not yet closed a window
|
| 112 |
+
containing it). Immaterial: fold train sets use the max-origin cut.
|
| 113 |
+
* Recoverable rows the convention DOES discard: 69 open-window rows with
|
| 114 |
+
dies42=1 (8 devices, of which only 2 devices - the 07-28 deaths - are
|
| 115 |
+
entirely absent from closed-window positives).
|
| 116 |
+
* Recovery arm (`aug`): champion refit on train + those recovered positive
|
| 117 |
+
rows (train buildings only), values + all order sources. Result: SCORE
|
| 118 |
+
1570.1, +28.8 +/- 24.1 vs 1541.3 (1.2 sigma), 15W/33L, Wilcoxon p=0.147.
|
| 119 |
+
Swaps 2.28 vs ref 2.27 - count effectively flat, so the (insignificant)
|
| 120 |
+
harm is not an appetite artifact. No usable signal is being discarded;
|
| 121 |
+
adding near-boundary positive rows without their matching negatives
|
| 122 |
+
slightly distorts the base rate for nothing.
|
| 123 |
+
|
| 124 |
+
## 3. Per-fold death count vs cost
|
| 125 |
+
|
| 126 |
+
Raw 5-fold regression (parity run): train_deaths 58/62/66/65/69 vs mean
|
| 127 |
+
test cost 426/263/336/291/224 -> slope -14.3 per death (r=-0.77, p=0.13),
|
| 128 |
+
but this is confounded: folds with fewer train deaths are exactly the folds
|
| 129 |
+
whose TEST buildings hold more deaths (22/18/14/15/11), i.e. harder fleets.
|
| 130 |
+
The clean version is the paired fold x arm regression above (+24.0 per
|
| 131 |
+
dropped death, p=0.009, r=0.21), which corroborates a real but weak volume
|
| 132 |
+
effect swamped by composition.
|
| 133 |
+
|
| 134 |
+
## VERDICT
|
| 135 |
+
|
| 136 |
+
Label volume is NOT the binding constraint; the champion model family is
|
| 137 |
+
data-saturated on this corpus. The learning curve is flat from 60% to 100%
|
| 138 |
+
of the data (local slope ~0, p=0.68), favorable 40% subsets already
|
| 139 |
+
reproduce 1541.3, and even the optimistic smooth-fit extrapolation prices a
|
| 140 |
+
DOUBLED corpus at ~-44 SCORE [-100..0] - far less than the method-search
|
| 141 |
+
deltas this repo routinely adjudicates, with bounds touching zero. The
|
| 142 |
+
label audit closes the other escape hatch: the training convention discards
|
| 143 |
+
essentially nothing (0 of 80 observable deaths lost; recovering the 69
|
| 144 |
+
discarded open-window rows is a wash at best, +28.8 +/- 24.1).
|
| 145 |
+
|
| 146 |
+
What the response surface actually rewards is COVERAGE - specific
|
| 147 |
+
high-death buildings carry non-redundant failure-mode information (same
|
| 148 |
+
label count, 2.3x damage when they are the ones missing). Consequences for
|
| 149 |
+
the T5 probe: (a) further same-kind data would not move the CV much, so the
|
| 150 |
+
global optimum is not gated on labels nobody has; (b) capacity/structure
|
| 151 |
+
search on this corpus is also near its ceiling for THIS champion family
|
| 152 |
+
(flat shelf = the extra 40% of data adds nothing the model can use);
|
| 153 |
+
(c) the remaining headroom, if any, lives in mechanisms that generalize
|
| 154 |
+
across failure modes / fleets (distribution shift), which neither this
|
| 155 |
+
curve nor more of the same labels can buy.
|
agent_reports_bgkf/t5_drawdown.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5 drawdown-survival campaign (rank-3 team's method, v1+v2) — NEGATIVE
|
| 2 |
+
|
| 3 |
+
DRAWDOWN agent, 2026-08-23 ~21:25-22:15. Champion = head 60d65da replica
|
| 4 |
+
(CV 1541.3, order .50 lb / .30 wiener / .20 gapHGB, split_days=3,
|
| 5 |
+
timing_weight=2.0). Reference /tmp/ref_head_1541.csv (asserted 1541.312).
|
| 6 |
+
Work dir /tmp/c33/ (common.py, build_corpus.py, train_fold.py, run.py,
|
| 7 |
+
diag.py, cv_bgkfcand_c33_*.csv, dd_f{0..4}.parquet).
|
| 8 |
+
|
| 9 |
+
## Method under test (from /tmp/hf_battery3/sackriti/README.md, their
|
| 10 |
+
building-OOF 1350.68 vs our 1541.3)
|
| 11 |
+
|
| 12 |
+
EOL label is deterministic (first day smoothed gm series <= 2.40V; our
|
| 13 |
+
81/82-exact recipe, agent_reports_bgkf/t3_gm.md). So "fails within h days"
|
| 14 |
+
== "gm draws down by >= m within h days", m = current margin above 2.40.
|
| 15 |
+
Train ONE survival model with (h, m) as INPUT features — every battery-day
|
| 16 |
+
x horizon x margin is a labeled row (their "454 positives -> 2.0M labeled
|
| 17 |
+
questions" move).
|
| 18 |
+
|
| 19 |
+
## Build (faithful v1)
|
| 20 |
+
|
| 21 |
+
- Corpus: 71,878 table rows (all 168 origins) x 10 horizons
|
| 22 |
+
{7,14,21,28,42,63,90,130,180,260} x 3 margins (actual margin, weight 2 /
|
| 23 |
+
oversampled per their recipe, + 2 random U[0.01,0.25]) = 1,721,248 kept
|
| 24 |
+
examples after conservative censoring (no-event windows past a device's
|
| 25 |
+
last defined gm day dropped). Positive rate 1.4% (h=7) -> 62.3% (h=260);
|
| 26 |
+
deployment-query positive rate 4.05%; gm coverage 99.7% of table rows.
|
| 27 |
+
- Features (107): 13 BASE + vmin7_rank + GAP4 + 7 gm cols (t3 exact-label
|
| 28 |
+
statistic) + 78 leak-verified as-of-origin cols (/tmp/c29/wide.parquet,
|
| 29 |
+
t5_base) + query terms h, m, m/h, log m. No seasonality factor (their
|
| 30 |
+
-104 lever; see verdict).
|
| 31 |
+
- Model: HistGradientBoostingClassifier, their hyperparams (450 iters,
|
| 32 |
+
lr .07, 63 leaves, min leaf 200, no early stop), 2-seed ensemble.
|
| 33 |
+
- Fold-safe: per outer bgkf fold, trained ONLY on fold-train devices'
|
| 34 |
+
corpus rows (900k-row cap subsample; futures of fold-train devices are
|
| 35 |
+
known within fold — deployment-legal); per-fold OOF scores cached and
|
| 36 |
+
looked up by the arm class inside the untouched cv harness.
|
| 37 |
+
- Query v1: P(drawdown >= actual margin within 42d) at (h=42,
|
| 38 |
+
m=clip(gm_gap,.005)). Query v2: expected-time-to-cross proxy = area
|
| 39 |
+
under the monotone-clipped survival curve over h in {7..130} (their
|
| 40 |
+
108-horizon curve read, order-equivalent). No-gm devices (0.3%) fall
|
| 41 |
+
back to champion-primary rank. Values stay champion logbag; order-only.
|
| 42 |
+
|
| 43 |
+
## OOF signal quality (real origins, n=19,890, 454 dying rows, true OOF)
|
| 44 |
+
|
| 45 |
+
AUC dies42: dd 0.9580 vs -v_min_7 0.9609, -gm_gap 0.9387. Median
|
| 46 |
+
dying-device within-origin rank: dd 13 vs v_min_7 10. The 2M-row (h,m)
|
| 47 |
+
augmentation DID beat its own input statistic (gm_gap) but does not catch
|
| 48 |
+
the champion's leading raw-voltage indicators.
|
| 49 |
+
|
| 50 |
+
## Arms (kind='logbag' variant='vm7' blend=(arm,1.0) p_star=1.0,
|
| 51 |
+
split_days=3, timing_weight=2.0; paired vs 1541.3, 48 origins; all
|
| 52 |
+
count-flat by construction — values untouched)
|
| 53 |
+
|
| 54 |
+
| arm | what | SCORE | delta±SE | sig | W/L | wilcoxon | swaps |
|
| 55 |
+
|------------|-----------------------------------------|--------|--------------|-----|-------|----------|-------|
|
| 56 |
+
| parity | champion order3 replica | 1541.3 | +0.0, maxabs 0.00 | — | — | — | 2.27 |
|
| 57 |
+
| dd_alone | dd rank alone (order w 1.0) — unit test | 1796.9 | +255.6±65.2 | 3.9 | 14/32 | .001 | 2.32 |
|
| 58 |
+
| dd_primary | dd replaces logbag at .50 | 1639.0 | +97.7±59.0 | 1.7 | 23/23 | .422 | 2.31 |
|
| 59 |
+
| dd_blend | 50/50 champion-order rank + dd rank | 1599.9 | +58.6±49.9 | 1.2 | 20/24 | .165 | 2.30 |
|
| 60 |
+
| dd_4th | 4th source at .10 (.45/.27/.18/.10) | 1555.4 | +14.1±20.7 | 0.7 | 10/15 | .411 | 2.29 |
|
| 61 |
+
| dd2_alone | v2 survival-curve (ETT) rank alone | 1873.3 | +332.0±66.5 | 5.0 | 11/36 | .000 | 2.30 |
|
| 62 |
+
| dd2_4th | v2 ETT as 4th source at .10 | 1567.9 | +26.5±25.4 | 1.0 | 12/18 | .360 | 2.29 |
|
| 63 |
+
|
| 64 |
+
Dose-response is monotone: dd weight 1.0 -> .50 -> .50-of-order -> .10
|
| 65 |
+
gives +256 -> +98 -> +59 -> +14. Pure drag, not a complementary signal.
|
| 66 |
+
The v2 curve read is strictly worse than the v1 point query at both
|
| 67 |
+
weights — the query shape is not the weakness; the model's ordering is.
|
| 68 |
+
|
| 69 |
+
Per-block texture (delta vs champion): dd_alone/dd_primary WIN warmup
|
| 70 |
+
s_0-7 (-104 / -90: short-history origins where the champion is data-poor)
|
| 71 |
+
but lose it back 3x in the panel (+343 / +158) and nearend (+238 / +6).
|
| 72 |
+
Catastrophic single origins: s21 +1179 (alone) / +1626 (primary), s17,
|
| 73 |
+
s23. A warmup-gated blend would be an 8-origin post-hoc cherry-pick —
|
| 74 |
+
report-only by the tiered adoption rules; not pursued.
|
| 75 |
+
|
| 76 |
+
## Verdict
|
| 77 |
+
|
| 78 |
+
**Comprehensively negative. No arm improves at any sigma; nothing
|
| 79 |
+
approaches any adoption tier (new mechanism would need 2sigma+ WIN; best
|
| 80 |
+
arm is a 0.7sigma LOSS). Do not ship; no deployment integration needed.**
|
| 81 |
+
|
| 82 |
+
Why the rank-3 method didn't transplant: (1) the drawdown model learns
|
| 83 |
+
first-passage of the LAGGING gm statistic — t3 already showed v_min_7
|
| 84 |
+
anticipates it by construction (min <= median-of-medians), and the
|
| 85 |
+
champion's logbag/wiener/gapHGB already sit on those leading indicators;
|
| 86 |
+
(2) their 1350.68 is the product of their WHOLE stack — expected-cost
|
| 87 |
+
selection/timing/routing priced from the survival curve against the
|
| 88 |
+
evaluator's real accounting, seasonal common factor (-104 on their own
|
| 89 |
+
base), 2-day timing shift — not of the order signal alone. Our harness
|
| 90 |
+
isolates the order contribution, and it is negative everywhere. Porting
|
| 91 |
+
their scheduler is a planner-axis project, not a tonight order tweak
|
| 92 |
+
(appetite axis is CLOSED per standing decision).
|
| 93 |
+
|
| 94 |
+
Replication value kept: /tmp/c33 pipeline (corpus builder + fold-safe
|
| 95 |
+
OOF trainer) is a clean reusable template for (h,m)-parameterized label
|
| 96 |
+
augmentation; parity replica remains exact (maxabs 0.00).
|
agent_reports_bgkf/t5_joint.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5 JOINT-OPTIMIZATION probe: is 60d65da only a *coordinate-wise* optimum?
|
| 2 |
+
|
| 3 |
+
**Date** 2026-08-23 · **Lane** /tmp/c30 · **Baseline** 60d65da = CV 1541.3 on bgkf
|
| 4 |
+
(ref `/tmp/ref_head_1541.csv`) · **Verdict: NO joint structure — the CV's
|
| 5 |
+
resolution is exhausted; the tune-vs-validate gap (+164 to +192) proves the
|
| 6 |
+
apparent joint wins are noise-fitting.**
|
| 7 |
+
|
| 8 |
+
## Question
|
| 9 |
+
|
| 10 |
+
Every champion dial was tuned one-at-a-time (order weights .50/.30/.20 bowl-
|
| 11 |
+
mapped; planner timing_weight=2.0 / split_days=3; gap-HGB lr=.06 / l2=1.0;
|
| 12 |
+
alpha=1.0). One-dial search can only find axis-aligned optima. Is there a
|
| 13 |
+
better point reachable only by moving several dials AT ONCE?
|
| 14 |
+
|
| 15 |
+
## Method
|
| 16 |
+
|
| 17 |
+
8-dim derivative-free joint search over: order-weight simplex
|
| 18 |
+
(w_lb/w_wn/w_gap, softmax-parametrized), discrete-hazard 4th order source
|
| 19 |
+
weight whz [0,.15] (c17 DiscHazHGB, reused verbatim), gap-HGB lr [.02,.18]
|
| 20 |
+
and l2 [.05,20] (log-scale, quantized), timing_weight [1,4], split_days
|
| 21 |
+
{2..5}, wiener K_SHRINK [3,12]. Counts untouched throughout: value-preserving
|
| 22 |
+
blend on the primary logbag p42 values, p_star=1.0 fixed (count axis publicly
|
| 23 |
+
refuted). Cached harness: primary/wiener/hazard fits once per fold, gap-HGB
|
| 24 |
+
refit per (lr,l2), per-cell rank blend + re-plan (Ft2RUL-exact arithmetic,
|
| 25 |
+
incl. the round-to-12 weight rule).
|
| 26 |
+
|
| 27 |
+
**Overfitting guard (non-negotiable with 48 scenario totals):** origins split
|
| 28 |
+
TUNE = 24 even / VALIDATE = 24 odd (interleaved → warmup/panel/nearend
|
| 29 |
+
balanced in both halves; note TUNE mean 1642.8 vs VALIDATE 1439.8 — even
|
| 30 |
+
origins are the harder half). Search objective = paired mean delta vs
|
| 31 |
+
reference on TUNE only. VALIDATE touched exactly once, for the top-3.
|
| 32 |
+
Full-48 read only for a candidate whose VALIDATE delta is also <0 at >=1
|
| 33 |
+
sigma.
|
| 34 |
+
|
| 35 |
+
**Parity gates (passed before any search):**
|
| 36 |
+
- P1: reconstructed champion predictions bit-exact vs the c11 captured
|
| 37 |
+
Ft2RUL cells — 240/240 cells, worst |dp42| = 0.0.
|
| 38 |
+
- P2: champion through this harness = SCORE 1541.3122, delta +0.000000,
|
| 39 |
+
swaps 2.27, max per-cell cost delta vs reference 1.1e-13.
|
| 40 |
+
|
| 41 |
+
## Search trace
|
| 42 |
+
|
| 43 |
+
Differential evolution (pop 16 incl. champion, best/1/bin, F=0.5-0.8,
|
| 44 |
+
CR=0.85), **90 evaluations** (16 init LHS + 5 generations, 1586 s), every
|
| 45 |
+
eval logged in `/tmp/c30/search.jsonl`.
|
| 46 |
+
|
| 47 |
+
- best TUNE delta **-104.4 ± 49.6** (2.1 sigma on TUNE, 16W/7L)
|
| 48 |
+
- median of all 90 evals -18.3, worst +155.1
|
| 49 |
+
- swaps 2.24-2.27 everywhere (count-flat by construction, verified)
|
| 50 |
+
|
| 51 |
+
The DE converged into one corner, far from the champion: wiener nearly
|
| 52 |
+
deleted (w_wn ~= .03 vs .30), gap-HGB dominant (w_gap ~= .56 vs .20), hazard
|
| 53 |
+
weight pinned at its cap (.15 vs 0), l2 pushed to 7-20, timing_weight 3.5-4,
|
| 54 |
+
split_days 2, K 9-10. Best-15 evals all share this shape.
|
| 55 |
+
|
| 56 |
+
## Top-3: tune vs validate (THE measurement)
|
| 57 |
+
|
| 58 |
+
| rank | cfg (wwn/wgap/whz/lr/l2/tw/sd/K) | TUNE delta | VALIDATE delta | gap | pass |
|
| 59 |
+
|---|---|---|---|---|---|
|
| 60 |
+
| 1 | .034/.563/.150/.035/7.39/3.49/2/9 | **-104.4 ± 49.6** | **+67.3 ± 59.4** (11W/12L) | **+171.7** | NO |
|
| 61 |
+
| 2 | .034/.563/.150/.030/7.39/4.00/2/9 | -100.9 ± 49.9 | +63.5 ± 56.7 (13W/10L) | +164.3 | NO |
|
| 62 |
+
| 3 | .051/.551/.150/.040/7.39/4.00/2/8 | -93.7 ± 49.0 | +98.8 ± 59.7 (9W/13L) | +192.4 | NO |
|
| 63 |
+
|
| 64 |
+
All three candidates are WORSE than the champion on the never-touched half —
|
| 65 |
+
not merely attenuated, sign-REVERSED. The tune-validate gap (+164 to +192) is
|
| 66 |
+
~1.7x the size of the apparent improvement itself. (Report-only arithmetic:
|
| 67 |
+
top-1's deterministic full-48 combination would be (-104.4+67.3)/2 = -18.5,
|
| 68 |
+
~0.5 sigma of a full-48 SE — nothing even before the guard.)
|
| 69 |
+
|
| 70 |
+
**No full-48 read was earned** (protocol: validate-pass required). No
|
| 71 |
+
candidate goes forward.
|
| 72 |
+
|
| 73 |
+
## Interpretation
|
| 74 |
+
|
| 75 |
+
1. **Joint search finds no structure that coordinate-wise search missed.**
|
| 76 |
+
The champion (delta 0 by parity) is the only point in 90 joint evaluations
|
| 77 |
+
whose TUNE performance survives contact with held-out origins.
|
| 78 |
+
2. **The CV's resolution is exhausted at this granularity.** A 24-origin
|
| 79 |
+
paired objective hands a free-moving 8-dim search ~2-sigma of purchasable
|
| 80 |
+
noise (-104 on TUNE), and 100% of it evaporates on the odd origins. Any
|
| 81 |
+
future tuning claim of this size from a multi-dial search should be
|
| 82 |
+
presumed noise unless it passes exactly this kind of split.
|
| 83 |
+
3. The corner the search ran to (gap-source dominant, hazard maxed, wiener
|
| 84 |
+
deleted, tw~4/sd=2) is consistent with earlier single-axis evidence that
|
| 85 |
+
those directions are flat-to-worse (c17 hazard arms, gap-weight sweep at
|
| 86 |
+
274f134) — the DE simply assembled the individually-insignificant noise
|
| 87 |
+
directions into one TUNE-half mirage.
|
| 88 |
+
|
| 89 |
+
## Artifacts
|
| 90 |
+
|
| 91 |
+
- `/tmp/c30/joint.py` (harness), `/tmp/c30/driver.py` (stages),
|
| 92 |
+
`/tmp/c30/search.jsonl` (all 90 evals), `/tmp/c30/summary.json`,
|
| 93 |
+
`/tmp/c30/driver.log`.
|
| 94 |
+
- No tracked repo file modified; models monkeypatched only; planner attrs
|
| 95 |
+
snapshot/restored around every candidate; source md5-pinned at start /
|
| 96 |
+
pre-validate / end (unchanged).
|
agent_reports_bgkf/t5_seasonal.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5: fleet-level seasonal common factor as a MARGIN adjustment — REJECTED
|
| 2 |
+
|
| 3 |
+
Idea (rank-3 team's README, cached /tmp/hf_battery3/sackriti/README.md): a
|
| 4 |
+
fleet-level seasonal swing in voltage (their p2p 0.048 V vs near-death slope
|
| 5 |
+
0.0022 V/day) supplies part of the 42d drawdown by calendar alone; worth
|
| 6 |
+
−104 OOF for them. Distinct from the rejected MnesisLab temp transplant
|
| 7 |
+
(t4_transplant.md): (i) the factor is a cross-sectional median of
|
| 8 |
+
per-device-demeaned smoothed voltage, so sensor noise averages out; (ii) it
|
| 9 |
+
adjusts the wiener MARGIN d, not the rank weights — no competing order source.
|
| 10 |
+
|
| 11 |
+
Baseline champion 60d65da: CV 1541.3 (order .50 logbag(vm7) + .30 WienerFHT
|
| 12 |
+
+ .20 gapHGB; split_days=3, timing_weight=2.0; ref /tmp/ref_head_1541.csv).
|
| 13 |
+
Artifacts: /tmp/c34/ (build_factor.py, run.py, ef.csv, factor.csv, per-arm CSVs).
|
| 14 |
+
|
| 15 |
+
## Factor build (leak-free, all-trailing)
|
| 16 |
+
|
| 17 |
+
Validated smoothing recipe (t3_gm.md): temp-gated (10,30) exclusive daily
|
| 18 |
+
medians, day valid iff >=5 gated readings, calendar grid, rolling(7,
|
| 19 |
+
min_periods=3).median(). Factor(d) = median over devices of [v_smooth(dev,d)
|
| 20 |
+
− trailing 90d mean]; require >=20 devices (median 302). 1258 factor days
|
| 21 |
+
2023-02-20 → 2026-07-31. **p2p 0.0585 V** (min −0.0485 @ 2025-11-26, max
|
| 22 |
+
+0.0100 @ 2025-07-24) — matches their reported 0.048 V scale, and the
|
| 23 |
+
Sep→Nov descent is real in our fleet too.
|
| 24 |
+
|
| 25 |
+
## expected_fall constructions (per origin, strictly-past climatology, ±7d doy smoothing, wrapped)
|
| 26 |
+
|
| 27 |
+
1. **ef_lvl** (task spec, literal): current factor level − min next-42d clim,
|
| 28 |
+
clamped >=0. **Degenerate: 4/48 nonzero, max 0.005.** The realized
|
| 29 |
+
demeaned factor has larger amplitude than the 2-year smoothed climatology,
|
| 30 |
+
so the level sits below the clim min almost everywhere. Fails its own
|
| 31 |
+
sanity check (nonzero only in summer). Not run as an arm.
|
| 32 |
+
2. **ef** (clim-vs-clim): clim(doy(origin)) − min next-42d clim, clamped.
|
| 33 |
+
19/48 nonzero, max 0.0107. Sanity OK: peaks entering autumn (Sep origins
|
| 34 |
+
0-2: 0.004-0.006; Jul origins 43-47: 0.005-0.011 anticipating the August
|
| 35 |
+
descent), zero Mar-Jun. But zero through Oct-Feb: current-year days inside
|
| 36 |
+
the ±7d doy window drag clim_now down during the descent (vintage
|
| 37 |
+
asymmetry), zeroing ef exactly where 46/82 deaths cluster.
|
| 38 |
+
3. **ef2** (prior-years-only): climatology fit on days < origin−21d, so
|
| 39 |
+
clim_now near today's doy has no current-year days. 37/48 nonzero, mean
|
| 40 |
+
0.0026, max 0.0114; engages Sep-Oct (0.001-0.008), Jan-Feb bump
|
| 41 |
+
(0.005-0.008), Jul (0.006-0.011); zero Dec and Mar-Jun.
|
| 42 |
+
|
| 43 |
+
expected_fall per origin block (ef / ef2, volts): Sep 0.004-0.006 / 0.004-0.008;
|
| 44 |
+
Oct-Nov 0 / 0.001-0.0025; Dec 0 / ~0; Jan-Feb 0-0.002 / 0.002-0.008;
|
| 45 |
+
Mar-Jun ~0 / ~0; late Jun-Jul 0.005-0.011 / 0.003-0.011. Shape is right:
|
| 46 |
+
~0 in spring, largest entering autumn. Magnitude ~3-5 days of near-death aging.
|
| 47 |
+
|
| 48 |
+
## Arms (paired vs 1541.3; s scales expected_fall inside d_eff = clip(d − s·ef, 1e-6, ·) in the .30 wiener slot)
|
| 49 |
+
|
| 50 |
+
| arm | ef map | SCORE | delta±SE | sig | W/L | wilcoxon | swaps |
|
| 51 |
+
|---|---|---:|---:|---:|---:|---:|---:|
|
| 52 |
+
| s_ctl (parity) | — | 1541.3 | +0.0±0.0 | 0.4σ | 1/1 | — | 2.27 |
|
| 53 |
+
| s_w05 | ef, s=0.5 | 1542.9 | +1.6±1.0 | 1.6σ | 1/6 | p0.031 | 2.27 |
|
| 54 |
+
| s_w10 | ef, s=1.0 | 1542.8 | +1.5±1.2 | 1.2σ | 2/5 | p0.219 | 2.27 |
|
| 55 |
+
| s_w15 | ef, s=1.5 | 1542.3 | +1.0±1.2 | 0.9σ | 3/4 | p0.578 | 2.27 |
|
| 56 |
+
| s_w20 | ef, s=2.0 | 1542.5 | +1.1±1.3 | 0.9σ | 3/4 | p0.578 | 2.27 |
|
| 57 |
+
| s_both10 | ef, s=1.0 + gap cols adj | 1549.5 | +8.2±10.5 | 0.8σ | 4/7 | p0.365 | 2.27 |
|
| 58 |
+
| s2_w05 | ef2, s=0.5 | 1554.4 | +13.1±11.4 | 1.1σ | 1/8 | p0.008 | 2.27 |
|
| 59 |
+
| s2_w10 | ef2, s=1.0 | 1553.7 | +12.4±11.4 | 1.1σ | 3/6 | p0.203 | 2.27 |
|
| 60 |
+
| s2_w15 | ef2, s=1.5 | 1562.1 | +20.8±14.6 | 1.4σ | 5/7 | p0.380 | 2.27 |
|
| 61 |
+
|
| 62 |
+
Parity control exact (two origins differ by float noise from HGB threading,
|
| 63 |
+
mean +0.0). Counts fixed by the value-preserving blend; swaps 2.27 everywhere.
|
| 64 |
+
|
| 65 |
+
## Mechanism of the losses
|
| 66 |
+
|
| 67 |
+
- ef arms only ever change plans at origins 43-47 (Jul 2026). o47 loses
|
| 68 |
+
+45.3 at EVERY s; net +1.0..+1.6 across the whole grid. The Sep origins
|
| 69 |
+
(ef 0.004-0.006) produce zero plan changes — the rank shifts never flip a
|
| 70 |
+
decision there.
|
| 71 |
+
- ef2 arms engage the winter block and it is worse: s2_w10's delta is
|
| 72 |
+
dominated by a single +546 blowup at o17 (2025-12-29, ef2 only 0.0019) —
|
| 73 |
+
mis-ordering in the death-cluster months is exactly where cost is most
|
| 74 |
+
leveraged, and a fleet-common margin shift interacting with per-device
|
| 75 |
+
(m, s2) reorders the wrong devices there. Monotone worse with s
|
| 76 |
+
(+13.1 → +12.4 → +20.8).
|
| 77 |
+
- s_both10 (gap columns also adjusted): HGB retrained on adjusted features
|
| 78 |
+
sloshes ±250-330 at ef≈0 origins — variance, no signal.
|
| 79 |
+
|
| 80 |
+
## Neighbor-consistency and tier verdict
|
| 81 |
+
|
| 82 |
+
No s value wins anywhere on either ef map. Neighbors corroborate a
|
| 83 |
+
consistent HARM: ef grid uniformly +1.0..+1.6 (s_w05 wilcoxon p=0.031
|
| 84 |
+
against us), ef2 grid monotonically worse (s2_w05 1W/8L p=0.008). Under the
|
| 85 |
+
tiered bar (new mechanism, >=2σ + neighbor corroboration) this is a clean
|
| 86 |
+
**REJECT** — not "no effect" but a measured negative at every dial setting.
|
| 87 |
+
|
| 88 |
+
Why it worked for them and not us: their −104 OOF came inside a 122-feature
|
| 89 |
+
survival classifier with expected-cost selection, where the seasonal term
|
| 90 |
+
recalibrates absolute probabilities and timing. In our champion the wiener
|
| 91 |
+
is an ORDER source only (rank, counts frozen), so a fleet-common margin
|
| 92 |
+
scalar acts solely through the nonlinear (m, s2) x d reordering — a much
|
| 93 |
+
weaker and evidently miscalibrated lever. The margin axis via seasonal
|
| 94 |
+
climatology is CLOSED; do not revisit as a rank-side tweak.
|
agent_reports_bgkf/t5_select.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# T5 selection-architecture lane — count-PINNED expected-gain selection (2026-08-23)
|
| 2 |
+
|
| 3 |
+
Question: the rank-4 public competitor selects by MARGINAL EXPECTED GAIN
|
| 4 |
+
(risk x (no_schedule_cost - scheduled_cost) - (1-risk) x early_cost -
|
| 5 |
+
service), with a geography-aware emergency term inside no_schedule_cost
|
| 6 |
+
(their ablation: that term alone -14.6/scen in THEIR architecture). As a
|
| 7 |
+
rank TILT on our champion order it is catastrophic (+135..+452, measured
|
| 8 |
+
this evening — DEAD). Is the ARCHITECTURE — selecting by expected gain
|
| 9 |
+
instead of blended rank, at the champion's exact count — any better?
|
| 10 |
+
|
| 11 |
+
Baseline: 60d65da head = Ft2RUL (values logbag(vm7), order .50 lb + .30
|
| 12 |
+
wiener + .20 gapHGB), plan_tsroute alpha 1.0 / ec_margin .8 / split_days 3
|
| 13 |
+
/ timing_weight 2.0. SCORE 1541.3 (/tmp/ref_head_1541.csv).
|
| 14 |
+
|
| 15 |
+
## Harness (/tmp/c31/, repo untouched)
|
| 16 |
+
|
| 17 |
+
- Cells: private copy of the T2 prediction cache (/tmp/c31/cells.pkl,
|
| 18 |
+
md5-pinned b093b6b7…) — per-(fold,origin) champion predictions captured
|
| 19 |
+
through a real `cv.run_bgkf(kind='@deployed')`. Re-planned at the head
|
| 20 |
+
planner state it reproduces /tmp/ref_head_1541.csv **bit-exactly
|
| 21 |
+
(240/240 cells, max diff 0.0)** — the parity gate, passed before any arm.
|
| 22 |
+
- Intervention: injected `rank_score` column only (plan_tsroute's own
|
| 23 |
+
documented order hook), planner code UNCHANGED. `p42` untouched, so
|
| 24 |
+
n = round(alpha·sum p42) is identical per cell; the break-even top-up
|
| 25 |
+
runs identically (curve-based, order-independent). Injecting
|
| 26 |
+
rank_score = p42 is plan-inert (asserted per cell) — the plumbing adds
|
| 27 |
+
nothing.
|
| 28 |
+
- Count pin verified from the realized plans: swaps 2.26 vs 2.27, per-cell
|
| 29 |
+
set size identical in 238/240 cells; the 2 exceptions (f1/s_46, f3/s_45,
|
| 30 |
+
both near-end) are −1 battery because the non-empty break-even set is
|
| 31 |
+
already inside the EG top-n so the union shrinks — same in every arm.
|
| 32 |
+
- risk = pred['p42'] (the cached Ft2RUL output IS the blend-rank-mapped
|
| 33 |
+
calibrated probability: primary logbag(vm7) sorted values reassigned in
|
| 34 |
+
3-way-blend order — both roles the mission allows, one column).
|
| 35 |
+
- Expected gain, battery-varying terms only (the constant in-plan service
|
| 36 |
+
cost time_per_battery is order-invariant at pinned count — dropped):
|
| 37 |
+
`EG = park + p42·obs_frac·geo − min_d curves[b,d]`
|
| 38 |
+
where park/curves = mc.cost_curves exactly (park replica asserted to
|
| 39 |
+
0.0 on all 240 cells), obs_frac = censor-masked death mass, and geo
|
| 40 |
+
mirrors the evaluator's emergency loop per miss: round-trip travel +
|
| 41 |
+
building change (skipped at the base building) + room change + swap
|
| 42 |
+
(visit_h), overtime 2·max(clock−8,0) with clock = visit_h + return leg
|
| 43 |
+
(mean-field self-carry of the evaluator's return-leg double-count
|
| 44 |
+
quirk), daily-limit 100·(clock>24), weekly share 100·min(visit_h/24,1).
|
| 45 |
+
Geography is real here: 3 of 24 buildings are 7.8–10.25h out; a
|
| 46 |
+
dedicated miss trip there costs ~90–140 beyond late-days vs ~11 nearby.
|
| 47 |
+
|
| 48 |
+
## Arms (paired vs 1541.3 on 48 origin-sums; swaps 2.26 everywhere)
|
| 49 |
+
|
| 50 |
+
| arm | selection order | SCORE | delta±SE | sig | W/L | wilcoxon | swaps |
|
| 51 |
+
|---|---|---|---|---|---|---|---|
|
| 52 |
+
| ega (full EG) | park + p·geo − minC | 1567.2 | +25.84±25.33 | 1.0 | 12/16 | .350 | 2.26 |
|
| 53 |
+
| egb (geo OFF) | park − minC | 1536.3 | −4.99±28.79 | 0.2 | 16/11 | .822 | 2.26 |
|
| 54 |
+
| egc (blend) | .5 rank(p42) + .5 rank(EG) | 1574.5 | +33.14±14.17 | 2.3 | 2/10 | .016 | 2.26 |
|
| 55 |
+
| egc_ng (blend, geo off) | .5 rank(p42) + .5 rank(EG_nogeo) | 1546.1 | +4.80±15.29 | 0.3 | 5/5 | .846 | 2.26 |
|
| 56 |
+
| egd (compact gate on ega) | geo only where mean visit_h≤8h | 1563.3 | +21.94±26.03 | 0.8 | 12/16 | .412 | 2.26 |
|
| 57 |
+
|
| 58 |
+
Geography term isolated (paired arm-vs-arm, same cells):
|
| 59 |
+
|
| 60 |
+
| contrast | delta±SE | sig | W/L | wilcoxon |
|
| 61 |
+
|---|---|---|---|---|
|
| 62 |
+
| geo term (ega−egb) | +30.83±15.60 | 2.0 | 2/11 | .033 |
|
| 63 |
+
| gated geo (egd−egb) | +26.93±15.35 | 1.8 | 2/9 | .067 |
|
| 64 |
+
| geo inside blend (egc−egc_ng) | +28.34±14.64 | 1.9 | 0/7 | .016 |
|
| 65 |
+
|
| 66 |
+
The compactness gate is nearly inert in our fold geometry: 215/240 cells
|
| 67 |
+
have mean dedicated-trip hours ≤ 8h, so the gate leaves geo on almost
|
| 68 |
+
everywhere (egd ≈ ega).
|
| 69 |
+
|
| 70 |
+
## Mechanism (why the architecture loses at pinned count)
|
| 71 |
+
|
| 72 |
+
Churn vs the champion set (~45 batteries across ~40 cells per arm):
|
| 73 |
+
|
| 74 |
+
| arm | churned batteries | mean p42 | true death rate | remote (visit_h>8) |
|
| 75 |
+
|---|---|---|---|---|
|
| 76 |
+
| ega dropped | 46 | .276 | **23.9%** (11/46) | 15% |
|
| 77 |
+
| ega added | 44 | .129 | **6.8%** (3/44) | 23% |
|
| 78 |
+
| egb dropped | 46 | .279 | 23.9% (11/46) | 22% |
|
| 79 |
+
| egb added | 44 | .105 | 9.1% (4/44) | 7% |
|
| 80 |
+
|
| 81 |
+
p42 is CALIBRATED on both sides (realized death rates match the mean p42).
|
| 82 |
+
Expected gain deliberately trades likely-deaths for expensive-if-missed:
|
| 83 |
+
it drops ~.28-probability batteries to add ~.11-probability ones whose
|
| 84 |
+
miss would be costly (geo) or whose curves look sharp. At a PINNED count
|
| 85 |
+
that is a pure recall sacrifice — ~7 extra true misses across the panel,
|
| 86 |
+
each costing late-days plus a dedicated emergency trip (T2: 154/scen of
|
| 87 |
+
ops cost rides on misses). The geo term makes it strictly worse by
|
| 88 |
+
steering the added slots toward remote insurance (23% remote adds vs 7%
|
| 89 |
+
without geo). Since a miss's cost ≈ p42·(late_days + geo) and late-days
|
| 90 |
+
(~hundreds) dominate geo (~11–140), ordering by p42 is already
|
| 91 |
+
near-optimal for the dominant term; EG's deviations from it mostly inject
|
| 92 |
+
day-quantile curve-estimation error into a slot-limited decision. Worst
|
| 93 |
+
at warmup origins (egb +38/scen s_0-7), where the curves are shakiest.
|
| 94 |
+
|
| 95 |
+
egb (geo-off margin, park − minC) is the only non-losing arm and it is a
|
| 96 |
+
wash: mean −5.0 carried by single-cell coin flips (s_12 −668, s_15 −457
|
| 97 |
+
vs s_21 +427, s_4 +384), 5%-trimmed mean +1.7, Wilcoxon p .82. Panel
|
| 98 |
+
block −17.0±38 (0.4σ, 12W/8L p .67) — nothing approaches any bar.
|
| 99 |
+
|
| 100 |
+
## Why the competitor's −14.6 does not transplant
|
| 101 |
+
|
| 102 |
+
In their architecture the EG rule also SETS the count (select while
|
| 103 |
+
EG > 0): the geography term there mostly acts as an appetite mechanism —
|
| 104 |
+
it admits extra insurance swaps where a miss would be expensive, i.e. it
|
| 105 |
+
buys recall. Count-pinning — which is exactly what our public evidence
|
| 106 |
+
demands (count-coupled wins are untrustworthy, 4x) — removes that channel,
|
| 107 |
+
and what remains of "geography-aware selection" is a reallocation from
|
| 108 |
+
likely-deaths to remote maybes, which measurably loses. Combined with
|
| 109 |
+
tonight's tilt result (geo as a rank tilt: +135..+452), the geography
|
| 110 |
+
axis is dead in every count-flat form we can express.
|
| 111 |
+
|
| 112 |
+
## Verdict
|
| 113 |
+
|
| 114 |
+
- Expected-gain selection does NOT beat blended-rank selection at pinned
|
| 115 |
+
count: best arm −5.0±28.8 (0.2σ, rank-test flat), everything else worse.
|
| 116 |
+
- The geography term is not "part of the win we're missing" — inside the
|
| 117 |
+
architecture it is a measured LOSS of +27..+31/scen (2σ, 2W/11L,
|
| 118 |
+
consistent across full/gated/blend forms).
|
| 119 |
+
- The only ≥2σ results in the lane are losses (egc +33.1 at 2.3σ; geo
|
| 120 |
+
term +30.8 at 2.0σ). Nothing to adopt; nothing worth a public probe.
|
| 121 |
+
- Caveats: geo uses a mean-field self-carry clock, a linear weekly-limit
|
| 122 |
+
share and a flat room-change — approximations of the emergency loop,
|
| 123 |
+
but the conclusion is invariant across three independent geo-on/geo-off
|
| 124 |
+
contrasts; selection-set churn is small (~45 batteries), so cell deltas
|
| 125 |
+
are lumpy — the sign of the geo term is nonetheless rank-significant.
|
| 126 |
+
|
| 127 |
+
Artifacts: /tmp/c31/{lib31,parity,arms}.py, parity log
|
| 128 |
+
/tmp/c31/parity.log, arm CSVs /tmp/c31/arm_*.csv, selection sets
|
| 129 |
+
/tmp/c31/sets_*.pkl, base replan /tmp/c31/base_replan.csv. Repo untouched
|
| 130 |
+
(rank_score injection only; planner attrs saved/restored per call;
|
| 131 |
+
modules md5-pinned against parallel-session races).
|