Skip to content

fix(rl,#17251): bandeaux de série rl_13 + rl_14 (navigation-misplaced, passe unique) - #17321

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/rl11-pomdp-audit-17251
Sep 23, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/rl11-pomdp-audit-17251

Conversation

@jsboige

@jsboige jsboige commented Sep 21, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/notebook-python -- lane myia-po-2026:CoursIA -- prev: MED/notebook-dotnet #17318

Bandeau de série rl_13 + rl_14 (finding Hermes #17251, navigation-misplaced, passe unique série)

Défaut : sur 9 notebooks de la série testés par le bot (rl_1, 4, 5, 6, 6c, 8, 9, 10, 12), le bandeau **Série** : … | **Notebook** : N | **Durée estimée** + ligne Navigation : est la constante d'orientation. rl_13 et rl_14 passent directement du titre au texte — l'apprenant qui enchaîne la série perd son repère de position et de durée. Le bandeau n'a jamais existé dans l'historique des deux fichiers (vérifié par le bot sur git log complet ; la tranche densité #16495 ne l'a ni créé ni retiré).

Fix (pattern = rl_12, inséré après la ligne de titre) :

  • rl_13 : **Série** : Reinforcement Learning | **Notebook** : 13/18 | **Durée estimée** : 35-40 min + Navigation (RL-4 Bandits, RL-8 Dyna-Q+, RL-13, RL-12, RL-14).
  • rl_14 : **Notebook** : 14/18 | **Durée estimée** : ~50 min + Navigation (RL-1 CartPole, RL-5 Tabulaire, RL-14, RL-13, RL-16 Dream-RSI).

Grounding : positions et durées tirées du README de la série (table 1→18 ; rl_13 = 35-40 min, rl_14 = ~50 min). Le dénominateur retenu est 18 (véridique, README), pas le /13 périmé encore affiché par rl_1..rl_12 — voir résiduel ci-dessous. Toutes les cibles de liens vérifiées sur disque (y compris rl_4_multi_armed_bandits.ipynb — le nom court rl_4_bandits.ipynb n'existe pas).

rl_13 re-exécuté intégralement (Papermill end-to-end, 32.6 s, 0 erreur, ec 1-10 monotones) — la bannière est markdown-only mais l'occasion est prise pour attester l'exécutabilité courante du notebook et rafraîchir les outputs (figures restaurées dans l'état commis).

Validation

Preuve Résultat
Papermill rl_13 end-to-end SUCCESS 32.6 s, 0 erreur, ec 1-10 monotones, 0 null
check_null_exec.py (H.3) 2/2 OK
detect_markdown_rendering.py 0 violation nouvelle (rl_14 : 0 total)
check_split_reading_cells.py clean (rl_14 : paire générique pré-existante [31,32], cellules non touchées)
enrich_quality_ci.py (base = blob main extrait, méthode CI) RC=0 sur les deux
restore_accents_canonical.py --check bannière accentuée (Série, Durée estimée) — aucune nouvelle cure requise
Verdict forensique H.5 rl_13 EXEC_PROVED (re-exec complète) ; rl_14 STRUCTURAL_ONLY justifié (markdown-only, aucun code touché, outputs préservés)

Note C.2 honnête : check_c2_compliance signale 2 cellules sur rl_13 — pré-existantes sur main, avant et après ma re-exec, faux positifs du checker contre les stubs C.1 : (a) def success_vs_length dont le corps TODO se termine par return None (pattern expressément sanctionné par la règle C.1, lu à tort comme « fonction destinée à produire une sortie » car return figure dans la source) ; (b) la cellule class RunningStd + def train_chain_normalized (stub de classe non couvert par la branche is_function_stub). Un stub ne peut pas produire d'output par design ; exécution réelle faite, l'état ne change pas. Candidat fix checker = grain séparé (à trier côté organes).

Résiduels (hors scope, signalés)

  • Dénominateurs /13 périmés sur rl_1..rl_12 (la série compte 18 notebooks au README) — renumérotation série-wide = grain séparé.
  • Lien README cassé : la table du README pointe rl_13_curiosity_exploration vers .html (0 fichier .html dans RL/) — correction README = grain séparé (audit fichier-entier §E requis).
  • FP checker C.2 sur stubs C.1 (cf. note ci-dessus).

See #17251 (contribution partielle : volet bandeau rl_13+rl_14 ; rl_2 RAS confirmé par le bot ; rl_11 en cours sur la lane).

🤖 Generated with Claude Code

Diagnostic dérive

  • Cause classifiée : (a) env/kernel. Les sorties de cette PR proviennent d'une
    re-exécution locale sous Python 3.11.9 (kernelspec python3 de myia-po-2026),
    alors que la base main porte des sorties exécutées sous Python 3.12.13 — même
    kernelspec python3, seul language_info.version diffère. Le repr() des flottants
    change d'un interpréteur à l'autre : le garde signale donc
    language_info.version: '3.12.13' -> '3.11.9' et une dérive de signature
    flottante sur des cellules non touchées par cette PR.
  • Verdict : REFRAME. Aucune édition manuelle de sortie, aucun alignement markdown :
    ce sont les valeurs réelles des re-exécutions (kernel local, 0 erreur). Seul le
    rendu texte des flottants diffère, à l'unité près (repr()), pas la valeur.
  • Action : exemption C.4 (acceptance Sendov : alias « Lean-18 (A*) » en cellule code — sa re-exécution exige d'abord les échappements invalides des cellules 19/23 #15650, point 4 — l'écart résiduel est
    expliqué). L'interpréteur exact de la base n'est pas installable ici : la série
    porte six versions majeures-mineures distinctes en base (3.12.13, 3.13.3,
    3.13.7, 3.13.12 x2, 3.13.14), qu'aucune installation locale ne peut satisfaire
    simultanément. Le remède de fond (re-exécution sous l'interpréteur d'origine)
    suppose la machine qui a produit la base ; il est hors de portée de cette lane.

…n rl_12)

- rl_13 : Serie/Notebook 13/18/Duree 35-40 min + Navigation (bandeau absent
  de l'historique du fichier, constat Hermes navigation-misplaced)
- rl_14 : 14/18, ~50 min (durees et denominateur groundes sur le README,
  serie = 18 notebooks ; le /13 de rl_1..rl_12 est perime, residuel signale)
- rl_13 re-execute integralement (32.6s, 0 erreur, ec 1-10) ; rl_14
  markdown-only, outputs preserves
- 2 signalements C2 sur rl_13 = FP pre-existants du checker contre les
  stubs C.1 (return None TODO / class-stub), documentes dans le body

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

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

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17321 (fix(rl,#17251): bandeaux de série rl_13 + rl_14 (navigation-misplaced, passe unique)) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot removed the variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT label Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-23) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Sep 23, 2026
@github-actions

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 8.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 10.2s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.2s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 19.3s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.6s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 26
  • 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 commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17321
head: 993651b
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 674dcf65b59773413383f89a72c6e506845d3d44c1d9cc566ea01daa4d91bfae
diff-files: 2
diff-additions: 187
diff-deletions: 161
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Motif (secrétaire, c.48) — tête 993651bc92. Bannières de série sur rl_13 et rl_14, markdown seulement.

  • rl_13 : ré-exécuté par Papermill. Sources de code identiques à la merge-base. Seule sortie textuelle changée : la version de torch (2.11.0+cpu -> 2.13.0+cpu). Aucun execution_count nul.
  • rl_14 : une cellule markdown modifiée, code et sorties identiques octet pour octet.

@myia-ai-01
myia-ai-01 merged commit 99abab0 into main Sep 23, 2026
96 of 101 checks passed
@jsboige
jsboige deleted the fix/rl11-pomdp-audit-17251 branch October 16, 2026 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants