Repository navigation
docs(quantconnect,#15014): propagate L4 OOT NO-BEATS verdict to every referent - #15089
Conversation
… referent The 04/09 real out-of-time run (train frozen <= 2025-06-30, holdout unseen) returned NO-BEATS (0/5 seeds, edge -5.38s) -- documented in docs/L4_decision_transformer.md since 09/05, but every summary surface still carried the pre-OOT state: "seul BEATS du ladder" unqualified, and the README next-step line still presenting out-of-sample validation as future work whose result was already known and negative. Sweep (the verdict change must sweep its referents, cf #11468 precedent): - README.md: notebook table (l.58), mermaid RES1 node, consolidated-verdict prose, ladder table row (OOT appended), next-steps item 2 rewritten to name the result. README.en.md twins updated in parallel. - CURRICULUM.md: "not yet robust out-of-sample in time" -> the 04/09 OOT run confirmed NO-BEATS. - Referents qualified (panel @10bps + OOT where the claim lives): QuantConnect README + docs/OVERVIEW.md timeline, partner-course FR/EN, M12_HF_PROPOSAL, foundation_chronos/kronos/m15_lstm_etf docs, m15_lstm_etf verdict.md, archives (ml-trading-state.md x2, INDEX.md), 3801-sota-axe2 ledger, sweep_l6_dt_extension.py docstrings, research L1/L2/L3 notebook markdown cells. - Reproducibility volet (acceptance 4, documentary route): note added to docs/L4_decision_transformer.md -- why verdict JSONs/datasets stay gitignored (machine-local artifacts, repo policy), what is cited (bounds, sha256, per-seed series), and how to replay (yfinance refetch + sha256 check + train_dt_multiseed --train-end 2025-06-30 + validate_xrp_dt_holdout). Acceptance grep residual = three justified categories only: the L4 doc itself (self-qualified by its Portee reelle + OOT sections), M5/ETH-scoped "seul BEATS" claims (different metric leg), and committed run outputs of research_l4 (factual records, not edited). One false positive documented: "po-2024/26" (machine list, not the seed fraction). 20 files = the sweep the acceptance grep demands; every file carries a one-line qualifier append, one logical change. One pre-commit hook normalization included (research_l1 decorative --- cell opener -> ***). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — propagate doc-only du verdict L4 OOT NO-BEATS. Vérifié : propagation cohérente du même chiffre (−5.38σ, 0/5 seeds, train gelé ≤2025-06-30) sur les 13 fichiers, aucune divergence entre CURRICULUM.md/README/README.en/L4 doc/referents foundation. La section Reproductibilité ajoutée au §L4 (sha256 dataset 71d8aee9, bornes 2018-01-01→2026-09-04, commandes de rejeu avec --train-end 2025-06-30) est la bonne discipline — elle rend la réfutation possible. Rien d autre à signaler ; verdict honnêtement qualifié (panel @10bps BEATS, temps OOT NO-BEATS), nuance conservée partout. 0 secret. (contrainte token : COMMENT only)
Path-collision (organ #13359/#13615)Cette PR #15089 (
|
…oint The persistent per-slot _work volume (#14285/#14288) keeps refs/remotes/origin/* across jobs, but actions/checkout fetches with an EXPLICIT refspec (+<sha>:refs/remotes/pull/N/merge, --depth=1) which updates neither nor prunes the other remote refs. When a branch is rebased/force-pushed on origin, a slot's stale tracking ref points at an object absent from the shallow store, and the NEXT job on that slot dies before any useful step: git checkout --force <ref> -> fatal: bad object refs/remotes/origin/chore/11840-iit-zero-pad -> all steps skipped except the if:always() poster (PR #15089, job 101812399772, 2026-09-07; branch still exists on origin at a newer sha, confirming the stale-local-ref mechanism) Same failure family as the sparse-checkout slot poisoning already disarmed at job start. New block deletes ONLY refs whose target object is missing (for-each-ref + cat-file -e + update-ref -d), preserving the incremental cache that #14285 bought (~40-51 s/job) -- unlike the rm -rf purge reserved for the armed-sparse case. Activation: entrypoint.sh ships inside the runner image; the #14801 freshness guard refuses slots whose image entrypoint sha differs from the repo, so the fleet picks the fix up at the next image rebuild. Tests: test_entrypoint_disarm.sh extracts the real block (section markers) and runs it against git fixtures -- dangling ref (loose-file fabrication, since git refuses update-ref to a missing object) deleted, healthy ref and witness repo untouched, working tree/status/history preserved, silent second pass. 10 PASS / 0 FAIL; sibling test_supervise_guards.sh 39 PASS / 0 FAIL. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
…oint (#15226) * fix(ci,#15089): disarm dangling remote-tracking refs in runner entrypoint The persistent per-slot _work volume (#14285/#14288) keeps refs/remotes/origin/* across jobs, but actions/checkout fetches with an EXPLICIT refspec (+<sha>:refs/remotes/pull/N/merge, --depth=1) which updates neither nor prunes the other remote refs. When a branch is rebased/force-pushed on origin, a slot's stale tracking ref points at an object absent from the shallow store, and the NEXT job on that slot dies before any useful step: git checkout --force <ref> -> fatal: bad object refs/remotes/origin/chore/11840-iit-zero-pad -> all steps skipped except the if:always() poster (PR #15089, job 101812399772, 2026-09-07; branch still exists on origin at a newer sha, confirming the stale-local-ref mechanism) Same failure family as the sparse-checkout slot poisoning already disarmed at job start. New block deletes ONLY refs whose target object is missing (for-each-ref + cat-file -e + update-ref -d), preserving the incremental cache that #14285 bought (~40-51 s/job) -- unlike the rm -rf purge reserved for the armed-sparse case. Activation: entrypoint.sh ships inside the runner image; the #14801 freshness guard refuses slots whose image entrypoint sha differs from the repo, so the fleet picks the fix up at the next image rebuild. Tests: test_entrypoint_disarm.sh extracts the real block (section markers) and runs it against git fixtures -- dangling ref (loose-file fabrication, since git refuses update-ref to a missing object) deleted, healthy ref and witness repo untouched, working tree/status/history preserved, silent second pass. 10 PASS / 0 FAIL; sibling test_supervise_guards.sh 39 PASS / 0 FAIL. Co-Authored-By: Claude-Code <noreply@anthropic.com> * test(ci,#15226): wire linux-runner test_*.sh into bash-syntax-advisory The dangling-refs disarm block (entrypoint.sh) shipped with a bash test that no workflow ran; bash-syntax-advisory only does `bash -n` and scripts-tests is pytest. A semantic regression of the block could land unappercu (NanoClaw reserve, PR #15226 review 16:54:37Z). Add a dedicated job that globs and runs scripts/ci/docker/linux-runner/test_*.sh (bash + git only), so the new test and its siblings (test_supervise_guards.sh) are wired automatically. Same self-hosted jambe as syntax-check; queued while that runner is starved, exactly like the existing jobs. Co-Authored-By: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude-Code <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
Defaut corrige
Le verdict NO-BEATS en OOT reel de L4 (Decision Transformer, run
holdout_oot_20260904_164308du 04/09 : train gele <= 2025-06-30, holdout absent de tous les folds, 0/5 seeds, edge -5.38 sigma) est documente dansdocs/L4_decision_transformer.mddepuis le 05/09 — mais toutes les surfaces de resume portaient encore l'etat d'avant, dont une ligne 592 qui presentait la validation hors-echantillon comme etape a venir alors qu'elle a ete faite et revenue negative. Recurrence de #10211/#131257a79 : un verdict qui change doit balayer ses referents (geste #11468 : 13 fichiers).Balayage (20 fichiers, un seul changement logique)
README.mdpipelineREADME.en.mdCURRICULUM.mdl.19QuantConnect/README.mdl.533,docs/OVERVIEW.mdtimeline, partner-course FR/EN,M12_HF_PROPOSAL.md, foundation chronos/kronos/m15_lstm_etf,m15_lstm_etf/verdict.md, archives (ml-trading-state.mdx2,INDEX.md), ledger3801-sota-axe2.md, docstringssweep_l6_dt_extension.py, markdown des notebooks L1/L2/L3docs/L4_decision_transformer.mdapres le verdict OOT : pourquoi les JSON de verdict et datasets restent gitignored (artefacts machine-local, politique du pipeline), ce qui est cite (bornes, sha25671d8aee9d0bda18b, series par seed dans le JSON), et la voie de rejeu (yfinance + verification sha256 +train_dt_multiseed --train-end 2025-06-30+validate_xrp_dt_holdout, hash recalcule sur la tranche gelee)Acceptance
git grep -n -i -E "seul BEATS|24/26"— le residu est exclusivement les 3 categories justifiees :docs/L4_decision_transformer.mdl.9/43/73 : la source de verite elle-meme, auto-qualifiee par sa section « Portee reelle de L4 » (l.89-92) et son §OOT ;m5_hmm_regime_research.ipynbl.31/402 : claims M5/ETH (« le seul BEATS » de la jambe ETH h=1), pas L4 ;research_l4_decision_transformer.ipynbl.515/529 : sorties de run commitees (releve factuel de l'analyse panel — jamais editees a la main).po-2024/26dansdocs/reference/kernels-runtime.mdl.303 = liste de machines, pas la fraction de seeds.results/.Notes de revue
---->***, role nominal du hook).ml-trading-state.mdest le verdict canonique cite parpr-review-discipline.md§C — le qualificatif y est load-bearing.Closes #15014
Grain: MED/docs -- lane myia-po-2026:CoursIA -- prev: MED/notebook-python #15056