Commit History
-
compliance: remove train-split feature table (derived dataset content) from head - dataset non-redistribution
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>6ffa3bc -
Revert "HEAD: order re-weight .50/.20/.30 for the alpha-1.4 band (user call, public A/B) - bgkf 1476.0; revert FT2_W .30 / FT2_GAPW .20"
Thibaut ForestThis reverts commit 354fd2d5fac60035f4e12b0656b1d9365b58ca96.435304e -
HEAD: order re-weight .50/.20/.30 for the alpha-1.4 band (user call, public A/B) - bgkf 1476.0; revert FT2_W .30 / FT2_GAPW .20
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>354fd2d -
cv: 'ft2a10'/'head' track the shipped head (alpha 1.4, 1498.3); old form kept as ft2a10_a10
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>b5528c9 -
HEAD: flat alpha 1.4 for public A/B (user call) - bgkf 1498.3, podium operating point; revert = both alpha defaults 1.0
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>62e9d91 -
HEAD: warmup gate OFF by default (publicly refuted 1594.89) - head restored to 60d65da config, bgkf cell-exact 1541.3
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>71bfff2 -
HEAD: T3 warmup gate - gated hazard order + alpha 1.4 boost - CV 1418.3
Thibaut Forest +1: Claude Fable 5While the training fleet's death ledger at the plan origin is below WARMUP_RATE (0.0759/device = 35/461), Ft2RUL switches ORDER to a censored-pool discrete-time hazard HGB and boosts appetite x1.4 via a consume-once plan_tsroute.alpha_boost; past the gate the model is byte-identical to the previous head (WARMUP_RATE=0 disables exactly, verified 0.0 max cell diff vs 1541.3). bgkf: 1418.3, -123.0 +/- 43.1 (2.9sigma), 14W/5L, Wilcoxon .0017. COUNT-COUPLED (swaps 2.54 vs 2.27) - shipped on the user's CV-first call for a public trigger. Scale harness: gate narrows as fleets grow (8/4/0 active scenarios at 1x/2x/4x) - bounded downside. Rehearsal: gate fired on exactly s_0-14, s_15+ byte-identical, 0 warnings. Includes T3 lane reports (gm label-statistic axis closed: the exact label is a lagging smoother; cold-start gating; scale validation) and phases 65-66. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>e4745d2 -
HEAD: T2 planner objective - timing_weight 2.0 + split_days 3 - CV 1541.3
Thibaut Forest +1: Claude Fable 5lam2sp3 from the T2 planner lane: scale timing curves x2 inside optimize_days' objective (new BATTERYSWAP_TIMING_WEIGHT dial, default 2.0) and SPLIT_DAYS default 7->3. Refuses cheap trip-merges that drag swaps off timing-optimal days: late -3.5, early -1.2, mobility +0.8. bgkf paired vs 1545.4 champion: -4.11 +/- 1.41 (2.9sigma), 25W/4L, Wilcoxon 8.8e-6, count-flat (battery sets cell-identical); dose-response plateau on both dials; survives 35-arm multiplicity. New-mechanism tier (2sigma + controls) PASSED. Deployment parity: cand ft2a10 cell-exact (diff 0.0) vs the lane measurement; timing_weight=1.0 legacy path bit-exact vs pre-T2 reference (ft2a10_sp7 control). End-to-end pseudo- split rehearsal clean (static held-out branch, 0 warnings, 38s). Also: phases 63-64 records (public conversion 1575.31 at 4c93883; five-lane T2 campaign - timing/order/hazard axes closed with structure, counts lane report-only incl. warmup-gated alpha 1488.0 for a possible public trigger) + the five t2_*.…60d65da -
HEAD: wiener weight .30 in the 3-way order (.50/.30/.20) - CV 1545.4
Thibaut Forest +1: Claude Fable 5s_503020 from the simplex sweep: -23.2 +/- 12.3 (1.9sigma, count-flat, bowl mapped on all sides) - qualifies under the 1.5-sigma tier for weight tweaks in validated mechanisms. Deployment parity bit-exact after fixing a float knife-edge (1-.30-.20 = 0.4999...94 flipped one exact rank tie and moved a cell by 539; primary weight now rounded - and noted: single-config SCOREs carry ~+/-11 tie sensitivity on this instrument). Rehearsal clean (47s, recall .538, swaps 9.6/scen). Wave-S remainder all dead: HGB evolutions worse (monotone constraints break the gap features), plateau wiener inert, alpha bowl still at 1.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>4c93883 -
HEAD: gap-approach HGB third order source at w .20 (user call) - CV 1568.6
Thibaut Forest +1: Claude Fable 5Order = .55*logbag(vm7) + .25*wiener + .20*HGB(d2, gap-approach features: gap_ratio/rel_close/dwell_flat/gap_log - the plateau-vs-fast-crosser shape from the autopsy). Value-preserving; counts untouched. Evidence: -32.5 +/- 25.2 vs 1601.2, six-of-six sign consistency across weights/bases, below the formal 2-sigma bar for new mechanisms - shipped on the count-flat order-blend risk class (never publicly refuted). Deployment parity bit-exact (1568.6, cell diff 0); end-to-end pseudo-split rehearsal clean (48s, recall .535 vs .514 prior head at equal swaps). days_below_245 merged into the shipped train table; BATTERYSWAP_FT2_GAPW=0 reverts. cv cand ft2a10 / head now run the literal deployed class. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>274f134 -
cv: 'ft2a10' now tracks the shipped head (w .25, 1601.2); old form kept as ft2a10_w20
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>adc06b1 -
HEAD: wiener weight .25 (1601.2 on bgkf, deployment parity exact; count-flat weight tweak inside the validated blend; sub-bar 1.6sigma, shipped per user)
Thibaut Forest +1: Claude Fable 5cv cand head = the shipped model. FT2_W env reverts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>f8a734c -
cv: SCORE line shows SE + 95% CI (scenario-scatter caveat; paired deltas remain the decision statistic)
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>e95e770 -
cv: p_star hook in run_bgkf + 'ft2a10' candidate (the head/alpha-1.0 model) - one-liner CLI
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>826bd69 -
HEAD = the alpha-1.0 A/B (same model as 296f8f2, now on current version for public scoring): ft2 frontier + alpha 1.0
Thibaut Forest +1: Claude Fable 5The user triggers public scoring on the current git version, so the A/B candidate moves to head. Behavior identical to 296f8f2 (which lacked the later FT2_FIXEDREF dial - default off, inert). Safe 0.8 config remains one commit away (97af9ac) and via BATTERYSWAP_ALPHA(_STATIC)=0.8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>401f171 -
Phase 62: synthetic scaling study (1x/2x/4x, official-mechanism EOLs); count rule scales cleanly; fixed-ref vmin7 dial (default off); alpha-1.0 edge holds at every scale
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>34c30a6 -
Restore safe alpha 0.8 default at head (A/B candidate remains selectable at 296f8f2)
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>7d7632c -
PUBLIC A/B CANDIDATE (score this commit to test): alpha 1.0 on the ft2 frontier
Thibaut Forest +1: Claude Fable 5Single-variable experiment. Evidence FOR: entire public podium operates at 15-17.6 swaps/scenario vs our 12.1 with HALF our late cost; bgkf alpha 1.0 on ft2 = -64.5 mean; CP-SAT planner fed ft2 predictions lands at 16.4 swaps and -96 locally. Evidence AGAINST: mean-only support (17W/24L), and alpha 1.5 on the OLD ordering publicly caught zero extra deaths (6ea03da). This commit exists so the user can price the question with one public trigger; the next commit restores the safe 0.8 default at head. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>296f8f2 -
cv: register the adopted model as 'ft2' candidate (vm7 variant + wiener .20) - one-liner CLI, verified 1688.4
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>87cd73d -
ADOPT campaign-2 frontier ft_vmin7r_wnr20: BATTERYSWAP_FT2 default ON
Thibaut Forest +1: Claude Fable 5Ft2RUL = logbag on FEATURES+vmin7_rank, 0.20 value-preserving WienerFHT order blend (order remapped onto primary's own sorted p42 values; count/ pricing/timing untouched). bgkf v5: 1688.4 vs 1760.2 (-71.8 +/- 23.5, 3.05 sigma, Wilcoxon .037, swaps flat, count-clean; reproduced exactly by 3 lanes). Worst-case within-test-fleet vmin7 recompute still -60.8 (2.3 sigma). Deployment parity vs the CV frontier: bit-exact (max cell diff 0). wnr_m/s2/n merged into the shipped train table; split-path wiener params computed past-only from the scored split's own telemetry (0.1s/scenario). Soft degradation: missing wnr -> pure vm7 order; fit error -> legacy champion. BATTERYSWAP_FT2=0 reverts to the measured-1661.45 config. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>3f9bf12
-
CV: SCORE = summed folds per scenario (all-building out-of-fold total, familiar full-fleet magnitude); champion baseline 1760.2
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1cefc38 -
CV v5 fidelity pass (user): GroupKFold with deployment-exact held-out semantics
Thibaut Forest +1: Claude Opus 5 (1M context)Fold fits on TRAIN buildings' full closed history (= the static foreign fit deployment-legal for held-out fleets); planner state = submit.py static-path knobs exactly, incl. the cold-start floor gate (structurally inert at fold sizes >= 60 deaths vs gate 20); in-fold purge dropped (stricter than the deployment it represents, bought no public coherence). Both public and private splits are ~2x held-out fleets (Docker rehearsal) -> ONE CV for both. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>2a6a86a -
CV v4 (user directive): building-GroupKFold x temporal purge - per fold, per scenario, fit on train buildings' pairs with label windows entirely outside the scenario window; test scenario on the test buildings as a standalone fleet
Thibaut Forest +1: Claude Opus 5 (1M context)Double holdout by construction (fleet axis + time axis), no tuning: the public-calibrated pricing layer was explicitly rejected. Coherence with recorded public deltas is checked, never fitted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>9d114fd -
Phase 57: CV replaced with building-GroupKFold (user directive) - test group planned as standalone fleet, stratified on failures + travel centrality
Thibaut Forest +1: Claude Opus 5 (1M context)Simulates the held-out deployment path (static foreign fit) the private split's unseen fleets take. Purge harness retired (three deployment blind spots, phase 56); recoverable at f5f3fda. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>4be2283 -
Phase 56 addendum 2: frontier purge gain = hidden per-scenario appetite (corr 0.76); head default reverted to legacy champion
Thibaut Forest +1: Claude Opus 5 (1M context)Anchor decomposition: order-only worth -37..-47 +/- 43 n.s.; the -342 was count reallocation via calibration (era hazard leaks through both-sides fits - purge limitation #3). BATTERYSWAP_FRONTIER now defaults OFF; dials kept for explicit A/B. Shipping bar tightened to count-matched evaluation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>f5f3fda -
Phase 56 addendum: public refutes UNANCHORED frontier (1877.08, swaps 517 vs 580); fix = value-anchor to plain logbag
Thibaut Forest +1: Claude Opus 5 (1M context)Count collapse, not ordering: logbag_rank's sum(p42) is 0.78-0.80x plain logbag under deployment past-only fits at late origins (both-sides purge fits hid it - swaps read flat in CV). FrontierRUL now anchors p42 VALUES to a plain-logbag donor (count/pricing/timing = the measured 580-swap champion machinery, byte-equivalent) while rank+gbm supply ONLY the order. Verified at worst-collapse origins s_35/s_45: donor sums exact, frontier order exact, top-13/25 identical. BATTERYSWAP_FRONTIER_ANCHOR=0 restores the refuted unanchored form for forensics. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>86f3f93 -
Phase 56: NEW CHAMPION logbag_rank + gbm rank-blend w=0.30 (purge 1630.3, was 1972.0)
Thibaut Forest +1: Claude Opus 5 (1M context)11-lane agent campaign, ~250 candidates, all paired on the deterministic purge harness. Champion: within-fleet rank features (r_vlast/r_tau) on the bagged logistic + gbm value-preserving order blend - ordering-only, swaps flat 9.23, wins all three blocks (-341.7 +/- 103.8, 37W/11L). Deployed as submit.py FrontierRUL; fidelity vs the CV candidate is bit-exact (s_10/s_30). Dials: BATTERYSWAP_FRONTIER=0 -> legacy logbag; BATTERYSWAP_FRONTIER_W2=0 -> plain logbag_rank (purge 1746.4, no gbm flattery exposure). cv.py CHAMPION carries the blend; regenerated baseline matches the campaign run bit-for-bit. Instrument calibration (campaign's key negative): the purge rewards the two classes the public refuted - count-coupled changes (alpha 1.5: purge -202 vs public +527) and label-process exploits (cert-first re-derived at its exact pre-refutation signature 3W/0L/45T). Shipping bar recorded: ordering-only, label-process-free, swaps flat. Report-only survivors and full per-lane records in agent_re…698401a -
cv: de-tune harness from champion output shape (user) - rank_stats/rec12/rec20 removed, plan-derived swaps kept; SCORE reproduces 1972.0
Thibaut Forest +1: Claude Opus 5 (1M context)The purge harness now requires only that a method yield a plan: the pred-shape ranking metrics assumed a per-device p42 ranking, which not every method will have. models_cv.rank_stats untouched (ad-hoc use). CSV schema change: n_swaps replaces the rank columns; stale /tmp candidate CSVs deleted. (Attribution note for the record: the cv.py consolidation itself is 4f5f060 by session 59; a6c0af5 was EXPERIMENTS.md only despite its message.) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>645d27e -
cv: temporal purge is the ONLY protocol (user spec) - all48oof fits per scenario on ALL buildings' pairs whose 42d label windows lie fully before/after the scenario window (no building holdout, full-fleet plans); all48/static/screen/lobo/ablate and the lobo/wf/self variants REMOVED (git history keeps them; exp_x29/x30 need the old cv.py); SCORE 1877.3 -> 1972.0 (harsher: warmup 3560.3 vs 2875.3 loses the calendar-local window; panel 1839.6 vs 1857.7)
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>4f5f060 -
all48oof static: EXACT leave-one-building-out predictions per user spec (24 models on 23 buildings each, was 5 fold models on ~19); SCORE 1913.3 -> 1877.3
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>227c214 -
all48oof prints THE SCORE as a single value (mean cost/scenario, building-clean predictions, full-fleet plans); lobo demoted to diagnostic
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>596925f -
cv lobo: leave-one-building-out cost CV (user-specified primary) - per scenario x building, static fit on the other 23 buildings' full closed history, per-building plan+score; reports mean/bldg, sum, recall, and zero-swap-with-death count (the model-adaptation to-do list)
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>2512a0a -
all48oof: static fit protocol is the default (user-shaped) - one fit per fold on the other buildings' FULL closed history, deployment's exact shape; 40s runtime; new reference panel 1893.4 / ALL-48 1913.3; 'cv all48oof wf' keeps the walk-forward variant
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>79a4af2 -
all48oof defaults to the oof arm only (THE SCORE); 'cv all48oof self' re-enables the validity-check arm and the flattery readout
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>11cbd93 -
Silence the benign all-NaN-imputer warning at source (tau_projected before the curve exists); message-targeted so real warnings stay visible
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>534abdd -
Phase 52 addendum: building split extended to the cost harness - new cv all48oof protocol (building-OOF p42, full-fleet planning, paired self arm); panel 1679.2 -> 1813.6 (+134.4/origin, 8W/26L), self-building fit flatters all48 by ~+134/origin; prices harness optimism, no selection change
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>43761b5 -
Phase 52: building-grouped CV adopted - screen gains leave-building-out column; contamination gradient rf +.194 (scenario) -> ~0 (building); logbag choice confirmed, no reversal
Thibaut Forest +1: Claude Fable 5Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>edd5d5e -
Phase 48: public refutes cert-first (+43.19, ghost force-swaps at ~111 early-days each); default off
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>e382bfa -
Phase 48 submission: isolate cert-first (HELDOUT_POOL default off)
Thibaut Forest +1: Claude Opus 5 (1M context)Public look spent on the phase-46 certainty-first ordering: rank_score = 2+p42 for devices whose gated daily median sustained <2.40 V for 3 consecutive gated readings, all confirmed <= origin. Local all-48 cost 1661.7 -> 1623.7, 3W/0L/45T; loss-free at every fixed N on both instruments; fires 0.46 devices/scenario (the label-lag wobble population). Pooling default flipped off per its public verdict (phase 42: 1665.89 vs 1661.45, 3x training deaths bought zero recall), so this submission is cert-first against the 1661.45 champion with no confound. Rehearsed on the 2x held-out fixture: static foreign fit both splits, cert-first fired at 32 scenario-instances, 79560 rows in 162s, no fallbacks. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>9438aac -
Phase 47 renumber: blind-champion adjudication (was duplicate Phase 46); register blind4/blind3 cv variants
Thibaut Forest +1: Claude Fable 5The blind4 writeup was swept into 4e17cd1 with a colliding Phase 46 header. Renumbered to 47 per cross-session coordination. cv.py gains the rejected blind4/blind3 variants with the verdict inline so the port cannot be re-attempted by inspection. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>a94f6b9 -
Phase 46: overfitting audit - luck bounds, certain pool; ADOPT cert-first (k=3) ordering, all-48 1661.7 -> 1623.7, 3W/0L/45T
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>4e17cd1 -
Phase 44: leaderboard inversion - appetite closed on numbers, tail transfer is the defect, no local instrument sees it
Thibaut Forest +1: Claude Opus 5 (1M context)Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>ab4b0fd
-
Phase 41-42: fixed-N ablation rejects the vrel port; public says pooling is a wash
Thibaut Forest +1: Claude Opus 5 (1M context)Phase 41 discharges phase 39's standing directive ("do not port anything from that lineage without re-running the ablation on recall at fixed N"). Adds cv.ablate: holds N fixed and varies only the score, so a feature's effect on ORDERING is separated from its effect on the topsum count. No planner and no evaluator - recall at fixed N and the rank distribution of misses are functions of the score alone. Deaths caught at fixed N, paired per origin, bootstrap 95% CI: native N=12 native N=20 static N=12 static N=20 vrel alone -6 [-12,-1] +4 [-1,+9] +6 [+0,+13] -1 [-9,+7] vmin7_rank alone -1 [ -5,+2] +4 [+0,+9] -5 [-11,+1] +0 [-4,+4] both -7 [-15,+0] +5 [-1,+11] +4 [ -2,+10] -1 [-9,+7] v_last alone -39 [-57,-22] -8 [-20,+5] +7 [-10,+25] +5 [-10,+20] REJECT the port. The sign flips with N on both instruments, every CI straddles zero, and the ordering is byte-identical at 36-41 of 48 native origins and 228-230…41a82cd -
Phase 40: port the research loop's CV discipline + ship in-fleet pooling
Thibaut Forest +1: Claude Opus 5 (1M context)CV protocols move out of /tmp into batteryswap_example/cv.py, with the champion config itself promoted from /tmp/all48.py into cv.CHAMPION: all48 full-fleet walk-forward, three-regime scorecard static the deployment gate - one foreign-fleet fit, no refits, 11s a seed, ORDERING questions only (this construction manufactures a sum(p42) undercount; phase 26 believed it and public went 1661 -> 2189) screen offline model screen grouped by BATTERY, never by scenario/row models_cv.rank_stats now runs inside walk_forward, so dev/panel/test also report rec12/rec20, operating-point recall+precision, the count actually bought, and the median rank of missed deaths beside the cost. Base reproduces 1661.7 / 2379.7 / 1679.2 / 604.8 byte-exact - the additions are diagnostic only. What the new metrics show: the panel's missed deaths sit at median rank 57, 45 ranks past the cut. That is the closed appetite axis as a measurement rather than an argument. screen s…c7d5d98
-
Phase 34-35: retire cross-fleet CV, re-screen 72 configs, champion unchanged
Thibaut Forest +1: Claude Fable 5No behaviour change to the shipped path. models_cv.py is untouched; the only code edits are docstrings and four unused imports (planner.py numpy/FEATURES, train.py Field, submit.py sys). Champion config verified in submit.py: logbag, ALPHA=ALPHA_STATIC=0.8, EC_MARGIN=0.8, EC_PMAX=25, SPLIT_DAYS=7, FLOOR=2.5/gate 20, CLIFF_SCALE=1.0 (off). all-48 = 1661.7, public 1661.45. Phase 34: cross-fleet CV retired after a second confident false positive. rankavg won it at -18.4 (27/32 folds, p=0.0002) and is +55.3 on the real full-fleet all-48 - losing on the panel alone (+23.9), so not a warm-up weighting artifact. Root cause: every fold trains on the full history, so the harness cannot reproduce cold-start scarcity. Also closed: warm-up physics prior (logbag already best at cold origins), optimizer budget (2x60 optimal), feature LOO (best removal +2/308). Phase 35: everything ever judged on a retired instrument re-run on the surviving one. 72 configs, base reproduced 1661.7 in every group, no…7d93fb8 -
Phase 28 public refutation: revert static appetite to 0.8, cliff boost off
Thibaut Forest +1: Claude Fable 5Public look 2026-08-20 (6ea03da): 2188.78 vs 1661.45 (3c7b883). First public exposure of the whole static stack at once; component signature is pure over-inclusion - battery_swap +68%, early +444, late +13 (zero recall gain). - ALPHA_STATIC default 1.5 -> 0.8: phase 26's undercount premise is refuted on the real held-out fleet; phase 20 (the probability scale transfers / overcounts) was right. The half-fleet holdout manufactures the undercount (~6 deaths/scenario makes inclusions look cheap; marginal exchange rate 0.46 late-saved per early-spent locally, ~0.03 on public, break-even 1.0) and is hereby refuted as an appetite adjudicator - count decisions are public-look-only now. It stays valid for structural questions. - CLIFF_SCALE default 2.2 -> 1.0: the boost was only ever adjudicated on top of the refuted 1.5 baseline, and the public look condemns it transitively (every cliff device was included at 1.5 + boost and late did not move). - Retained: static-fit machinery…bb5a0c1 -
Phase 28: cliff-gated static appetite (cliff_count22) for held-out splits
Thibaut Forest +1: Claude Fable 5- submit.py: on the static held-out path ONLY, rows whose raw hourly readings show a knee (>=35% of the last 7 days' readings below 2.45 V, >=20 readings, corrected voltage < 2.46) get rank_score / p42_sum = clip(2.2 * p42, 1) while raw p42 - and hence every timing curve - stays untouched. Train/rolling path byte-inert by construction. Env: BATTERYSWAP_CLIFF_SCALE (1.0 disables). - Adjudication (exp_x28.py; EXPERIMENTS.md phase 28): mined from the public Attention-Heads repo. Real-label static holdout -54.5/scenario (4/5 fleet splits, baseline at ALPHA_STATIC=1.5 so the gain is additive to phase 26, not double-counted); barrier-event resampler -66.8 with the sign held in 120/120 draws; correlated per-quarter-shock variant -66.1, also 120/120; beats plain alpha raises on mean, variance and tail (alpha=2.5 turns negative). Panel rejected it on the native path (+27): static branch only. - Verified: cliff-mask parity 1.0000 vs the adjudication harness at s_16/28/40;…6ea03da
-
Phase 27: held-out-parity audit - penalty wiring + 3-layer failure isolation
Thibaut Forest +1: Claude Opus 5 (1M context)Dress rehearsal (Docker main() over fake public+private with renamed device IDs) exposed that one bad split could destroy the whole submission: a check_dataset assertion killed the adaptive path AND the pickle fallback identically, escaped main()'s handler, and no submission.csv was written. - load_best_effort(): dataset consistency check demoted to a logged warning - fallback guarded individually; new raw-file last resort (defer-everything plans, alive-filtered) guarded again - a split can at worst lose itself - cost_curves penalty constants (EARLY/LATE) wired from each scenario's settings (evaluator charges these; constant 0.5/10.0 in train, byte-inert at defaults); planning_window_days != 42 logs loudly - audit: per-scenario settings vary only in base_location/base_room (16 bases; mobility sim already reads them live) Rehearsal after fixes: both splits static-path, complete 2-split submission.csv in 35s; all-48 checksum 1851.0186805555559 byte-exact. Co-Authored-By: Claud…fc780fa -
Phase 24b+26: static per-split fit + ALPHA_STATIC=1.5 for held-out splits
Thibaut Forest +1: Claude Opus 5 (1M context)- submit.py: held-out splits (own-fleet frac < 0.5 vs the packaged table) now fit ONE model per split on the full foreign train pool and skip the per-origin split-table build and refit loop. Holdout harness: statistical tie on score (static 1057.7 vs rolling 1087.0), minutes instead of ~17 per split, near-zero time-budget fallback risk. Train-fleet splits keep the rolling self-masked path. - ALPHA_STATIC=1.5 (env BATTERYSWAP_ALPHA_STATIC): the static foreign fit's sum(p42) undercounts on held-out fleets, so the deployment path needs a larger inclusion appetite than the panel's 0.8. Sweep won on ALL FOUR independent fleet-splits (0.8: 1156.3 -> 1.5: 916.4 mean; plateau from 1.5). Only the static branch reads it; panel champion unchanged. - EXPERIMENTS.md: phases 24b + 26 (incl. public 1717.8 -> 1661.45 from the phase-23 submission, matching the holdout prediction band). All-48 Docker checksum: 1851.0186805555559 byte-exact (train path untouched); static branch end-t…faf80ea -
Phase 21-23: unmasked foreign pooling for held-out splits + Docker PATH fix
Thibaut Forest +1: Claude Opus 5 (1M context)- submit.py: pool the packaged train table UNMASKED on held-out splits (66,890 closed-window pairs, 82 dead devices from origin 0); the target split's own fleet stays under the T-42d mask; byte-inert when the target IS train (all-48 Docker reproduces 1851.0186805555559 exactly). Holdout-validated (fleet A=packaged, B=target): warm-up 1108.6 vs floor's 1091.0 (tie) vs starved 1478.9; mid/late spots 1088.4 vs 1141.9. The cold-start floor gate now never opens on held-out splits (by design); it remains live for local warm-up regimes. - Dockerfile: pin /app/env/bin onto PATH - newer base-image entrypoints shadow the competition env with miniconda at runtime, breaking `python3 script.py` with ModuleNotFoundError. - models_cv.py: phase-21 comment (evaluator emergency queue truly opens at end-of-week, day 48; exact pricing tested and rejected) + inert nn_order visit-ordering machinery (phase 22, rejected: panel tie 1679.4 vs 1679.2). - EXPERIMENTS.md: phases 21 (emergency…3c7b883