Repository navigation
fix(ict,#17211): ICT-03-Robustness — 3 findings (lecture avant figure, empilement 10/12, épisodes lus comme durées) — redressement #17040 - #17354
Conversation
…, empilement 10/12, episodes lus comme durees) F1+F2 joints (prescription audit) : cells 9-10 supprimees, contenu unique fondue dans la lecture post-figure 12 (ancres numeriques tableau 0.75->0.59 / 0.86->0.62 / 0.64->0.53). F3 : compteurs d'episodes (91,4/89,8) lus comme des durees -> frequence/comptage + plage min-max. Markdown-only, exception C.2 : code + outputs byte-identiques a origin/main (11 cellules code, verifie). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
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) |
Path-collision (organ #13359/#13615)Cette PR #17354 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
[ADJOINT PREFLIGHT] Verifications firsthand : checks latest-wins vertes au head, B.0 rc=0, corps lu integralement (3 findings Hermes #17211 reparés, consolidation documentée cellule par cellule, suppression = fusion du contenu unique dans la lecture post-figure 12). Commentaires relus : advisory path-collision bot uniquement, aucune réserve d'auteur. |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
[ADJOINT PREFLIGHT] Re-emission, pas un PATCH en place — deux raisons mesurees, dont aucune n'est reparee par une reecriture sur place :
Attestation a la tete
Non verifie par moi : je n'ai pas rejoue les organes de qualite listes dans le body (rendu markdown, cellules de lecture scindees, accents) ; je constate la tete de check-runs et le notebook a la tete. |
Grain: CONTENU/notebook-python -- lane myia-po-2026:CoursIA -- prev: CONTENU/notebook-python #17352
ICT-03-RobustnessDelayedGratification — 3 findings Hermes réparés (#17211, audit jsboige 12:41Z)
F1 —
navigation-misplaced(cell 9, lecture « La visualisation confirme la dégradation gracieuse… ») : elle apparaissait avant la cellule 11 qui produit la figure — l'apprenant lisait un commentaire d'image inexistante (la sortie précédente, cell 8, est un tableau texte). Vérifié firsthand : l'errorbar passive/obstacle est bien en cell 11. F1 était aussi factuellement faux : « sans effondrement brutal » ne décrit que le panneaupassive— le panneauobstaclechute justement de façon brutale (cf lecture cell 12 : « la chute est plus brutale dès les premiers pourcents »).F2 —
paraphrase-stack(cells 10 / 12) : la cell 10 paraphrasait le tableau de la cell 8 (0,75→0,59 contre 0,64→0,53), la cell 12 post-figure reprenait la même analyse en plus riche.Résolution jointe F1+F2 (prescription de l'audit : repositionner 9 après la figure / fondre 10 dans 12 — repositionner 9 après 11 l'aurait empilée avec 12) : cells 9 et 10 supprimées, leur contenu unique fondu dans la lecture post-figure 12 — les ancrages numériques du tableau y sont intégrés (0,75→0,59 pour
bubble, 0,86→0,62 pourinsertionenpassive; trajectoire identique 0,64→0,53 des deux algotypes enobstacle, fait que seule l'ancienne cell 10 montrait). Le faux « sans effondrement brutal » disparaît avec la cell 9 : la lecture restante (12) distingue correctement les deux régimes. C'est l'application de la règle #13410 « réécrire l'existante » ; la suppression est une consolidation (contenu unique préservé), pas une perte.F3 —
output-uninterpreted(cell 20) : la sortie de la cell 19 compte des épisodes (delayed_gratification_events: moyenne=91,4 / 89,8) et la lecture les décrivait comme des durées (« épisodes… plus longs… avant de reprendre sa progression ») — contredite par la cell 22 qui dit correctement « ~90 épisodes en moyenne… bubble en exhibant marginalement plus ». Fix : « légèrement plus nombreux… ce sont des compteurs d'épisodes — le système s'offre un petit supplément de descentes locales en route vers l'ordre, pas des épisodes plus longs », avec la plage min–max (85–98 / 81–99) absente de la cell 22 — sans préempter sa conclusion paradigme (pas de nouvel empilement 20/22).Signalé hors scope audit (non traité ici) : les cells 15/17 (section 2) présentent une ressemblance duale (15 relit le tableau, 17 la figure, chevauchement partiel « 24/24 réparés, médianes 1050 vs 1204 ») — l'organe ne la signale pas et la lecture 17 apporte un contenu distinct (distribution large vs constante) ; à réexaminer si un audit la flotte.
Validation
execution_countbyte-identiques àorigin/main(source, ec, outputs)exacte)detect_markdown_rendering.pycheck_split_reading_cells.pyrestore_accents_canonical.py --checkenrich_quality_ci.py(base blob main)check_null_exec.pyVolets non couverts : le reste de la partition #17211 (ICT-08 livré #17352, ICT-03 livré ici — partition à suivre).
See #17211 (contribution partielle : volet ICT-03).
Requalification — correctif indépendant de la campagne gelée (#17040)
Le gel s'applique parce que le body cite
#13410(le filtre d'entrée lit titre et body). Mesure du diff à la têteaff5f2cafe1: cette PR n'ajoute pas de contenu de campagne, elle en consolide les dégâts.e8d76767e3Les deux cellules supprimées (9 et 10) sont fusionnées dans la lecture post-figure : c'est la règle 1 du veto (une sortie = au plus une lecture, consolider plutôt qu'empiler), appliquée dans le sens de la réduction.
python scripts/notebook_tools/check_split_reading_cells.py <nb>→ clean (rc=0) à cette tête.main. Aucune branche de PR#13410n'est touchée.grep -c 1200→ 0).🤖 Generated with Claude Code