Skip to content

docs(quantconnect,#15014): propagate L4 OOT NO-BEATS verdict to every referent - #15089

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/15014-l4-readme-verdict
Sep 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/15014-l4-readme-verdict

Conversation

@jsboige

@jsboige jsboige commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Defaut corrige

Le verdict NO-BEATS en OOT reel de L4 (Decision Transformer, run holdout_oot_20260904_164308 du 04/09 : train gele <= 2025-06-30, holdout absent de tous les folds, 0/5 seeds, edge -5.38 sigma) est documente dans docs/L4_decision_transformer.md depuis 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)

Surface Geste
README.md pipeline l.58 tableau notebooks, noeud mermaid RES1, prose verdict consolide, ligne ladder (OOT appende), item 2 des prochaines etapes reecrit (nomme le resultat au lieu de l'annoncer futur)
README.en.md jumeaux EN des 2 lignes touchees, en parallele
CURRICULUM.md l.19 « not yet robust out-of-sample in time » -> le run 04/09 l'a tranche : NO-BEATS
Referents qualifies (panel @10bps ; OOT la ou la claim vit) QuantConnect/README.md l.533, docs/OVERVIEW.md timeline, partner-course FR/EN, M12_HF_PROPOSAL.md, foundation chronos/kronos/m15_lstm_etf, m15_lstm_etf/verdict.md, archives (ml-trading-state.md x2, INDEX.md), ledger 3801-sota-axe2.md, docstrings sweep_l6_dt_extension.py, markdown des notebooks L1/L2/L3
Volet reproductibilite (acceptance 4, voie documentaire) note ajoutee dans docs/L4_decision_transformer.md apres le verdict OOT : pourquoi les JSON de verdict et datasets restent gitignored (artefacts machine-local, politique du pipeline), ce qui est cite (bornes, sha256 71d8aee9d0bda18b, 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

  1. « seul BEATS du ladder » ne subsiste nulle part sans sa portee (panel @10bps) — les quatre lignes nommees par l'issue (58, 517 noeud mermaid, 585-zone prose, 592) + tous les referents du balayage.
  2. La ligne 592 ne present plus la validation hors-echantillon comme future ; elle nomme son resultat (NO-BEATS, 0/5 seeds, -5.38 sigma, renvoi §Protocole OOT).
  3. git grep -n -i -E "seul BEATS|24/26" — le residu est exclusivement les 3 categories justifiees :
    • docs/L4_decision_transformer.md l.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.ipynb l.31/402 : claims M5/ETH (« le seul BEATS » de la jambe ETH h=1), pas L4 ;
    • research_l4_decision_transformer.ipynb l.515/529 : sorties de run commitees (releve factuel de l'analyse panel — jamais editees a la main).
    • Faux positif documente : po-2024/26 dans docs/reference/kernels-runtime.md l.303 = liste de machines, pas la fraction de seeds.
  4. Volet reproductibilite tranche par la voie documentaire (ci-dessus) — sans changement de politique d'ignorance des results/.

Notes de revue

  • 20 fichiers depassent le seuil G.4 (15) : c'est le balayage que l'acceptance 3 exige — chaque fichier porte un append de qualificatif d'une ligne, un seul changement logique (propager le verdict). Split = laisser le grep non satisfait par PR.
  • Notebooks L1/L2/L3 : markdown uniquement (exception C.2 — outputs/execution_count intacts, verifie byte-level) ; une normalisation hook pre-commit incluse dans research_l1 (cellule decorative --- -> ***, role nominal du hook).
  • Archives editees au qualify-only (append de portee, pas de reecriture historique) : ml-trading-state.md est le verdict canonique cite par pr-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

… 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>
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.4s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.6s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 19.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 8.5s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 25
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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)

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15089 (docs(quantconnect,#15014): propagate L4 OOT NO-BEATS verdict to every referent) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

jsboige added a commit that referenced this pull request Sep 9, 2026
…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>
@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #15180 (LIGHT/docs, merge a 2026-09-09T03:11:19Z), #15240 (MED/guard, merge a 2026-09-09T03:40:08Z), #15336 (LIGHT/ledger, merge a 2026-09-09T07:13:16Z), #15314 (LIGHT/docs, merge a 2026-09-09T08:51:48Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@myia-ai-01
myia-ai-01 merged commit 5ef6d25 into main Sep 9, 2026
72 of 75 checks passed
myia-ai-01 added a commit that referenced this pull request Sep 9, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

2 participants