Repository navigation
fix(equivalence,#19562): verdict NOTHING_TO_COMPARE rc=5, distinct d'EQUIVALENT 0/0 - #19679
Conversation
…EQUIVALENT 0/0 Avant ce fix, un carnet sans aucune ligne comparable (toutes sorties en MIME riche ignore par la regle du rendu Quarto, ou carnet vide) rendait EQUIVALENT 0/0 -- un faux vert : une page qui aurait perdu toutes ses sorties HTML rendrait le meme verdict. Le CI (#18911) le traitait comme verifie alors qu'il ne l'etait pas. Le fix introduit un verdict dedie NOTHING_TO_COMPARE (rc=5), distinct d'EQUIVALENT (rc=0). Le docstring du module documente les 6 codes de sortie, et l'epilog argparse les rappelle au --help. Couverture : 7 tests dedies (test_mime_riche_uniquement_rien_a_comparer, test_text_plain_pas_nothing_to_compare, test_text_plain_manquant_donne_lost_outputs, test_carnet_vide_aucune_sortie, test_sortie_dans_sources_est_exclue, test_rc_distinct_equivalent_et_nothing_to_compare, test_help_documentation). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Le commit 0df8f6d (c.220) visait un STALE_LINK #13025 mais le fix a casse la gate `check-links` (REGRETS dropoff non mesure) : - `.html` est valide UNIQUEMENT si le notebook sibling est dans `_quarto.yml` (cf. `check_docs_links._is_quarto_render_target`). - CB-00 n'est pas dans `_quarto.yml` (PR n'y touche pas), donc `CausalBridges-00-PearlLadder-Intro-Python.html` n'est pas un Quarto render target -> REGRESSION check-links. - Convention : les 8 autres carnets CB-01..08 utilisent `.ipynb` dans ce README. CB-00 doit s'aligner. Revert vers `.ipynb` (le fichier existe sur la branche). `check_docs_links --check --base origin/main` rend 0 violation sur la nouvelle tete. Lane myia-ai-01:CoursIA-2. Grain: LIGHT/docs -- lane myia-ai-01:CoursIA-2 -- prev: MED/tooling #19679 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
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 |
Le fix check_equivalence #19562 introduit NOTHING_TO_COMPARE pour le cas 0 ligne comparable (matplotlib image/png ignore par Quarto, text/plain non rendu). Le test test_matplotlib_figure_is_equivalent attendait encore EQUIVALENT 0/0 (l'ancien comportement, qui etait un faux vert : une page ayant perdu ses sorties HTML aurait rendu le meme verdict). Le verdict EQUIVALENT reste correct pour les 4 autres assertions du fichier (lignes 412, 442, 476, 648 : stream outputs avec text/plain reel, found_lines >= 1). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Path-collision (organ #13359/#13615)Cette PR #19679 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
[ADJOINT PREFLIGHT] |
…i 1 Origami causal) (#19368) * feat(probas,#19310): CausalBridges-00 — Pearl Ladder introductive (Pli 1 Origami causal) Pli 1 de l'EPIC origami #19309 (constellation causale). Socle d'entree commun aux 8 plis a venir (CB-01..CB-08). 20 cellules (10 markdown + 10 code) : - Motivation historique : Snow/cholera 1854 + Doll-Hill 1950, figures matplotlib (4 quartiers fictifs Soho/Bloomsbury/Westminster/Camden, DGP illustre avec confounding par zone) - DAG 4 noeuds : Z (aptitude, confondeur) -> X (mentorat) -> M (effort, mediateur) -> Y (score), avec Z -> Y en plus (effet direct) - P(Y|X) : association naive, simulation 100k unites, biais de selection par Z - P(Y|do(X)) : ajustement backdoor par Z (Pearl §3.3.1), comparaison avec l'association naive - Contrefactuel individuel : Alice-like (X=0, Y=0.6) -> contrefactuel Y sous X=1, par abduction-action-prediction (Pearl §9) - 5 exercices C.1 : 2e confondeur W, identifiabilite, contrefactuel inverse, paradoxe de Simpson, barometre/tempete Stack : numpy, scipy, networkx, matplotlib (SOTA-OK, installable via pip, aucun GPU/reseau/secret). Cellule-type verifiee pour 3 cellules (association naive, intervention mutilée, contrefactuel individuel). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(ci,#19368): nav back-link CB-00 -> CB-01 (resout orphan_entry) Diagnostic : \`check-notebook-nav-chain\` rougit sur #19368 (\`[orphan_entry] CausalBridges-00-PearlLadder-Intro-Python.ipynb\`) : le carnet a 0 inbound link dans la serie Causal-Bridges, et la serie elle-meme est multi-entries (CB-02..CB-08 inatteignables les uns des autres, probleme pre-existant hors PR). Cause : la nav-chain sort CB-00 comme une entree supplementaire dans une serie deja multi-entries. Le check rougit sur les NEW findings imputables au diff (decision c.5854935546) -- CB-00 etant le seul notebook du diff, il est le seul a etre rapporte. Correctif : un seul back-link nav dans la cellule 0 de CB-01 vers CB-00 (2 lignes : ligne vide + lien markdown) suffit a fermer l'inbound de CB-00. Les findings pour CB-02..CB-08 ne sont pas rapportes (pas imputables au diff). Verification : \`check_notebook_nav_chain.py --check --diff-files {CB-00, CB-01}\` -> "OK: 0 NEW finding vs baseline (383 connus, 1479 notebook(s) au graphe)" en local. Effet sur PR : #19368 devrait passer check-nav-chain (rouge reel leve). PR gate aggregator c.85 stale devrait suivre au prochain sweep. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(probas,#19368): ajouter entree CB-00 dans table Contenu du README Causal-Bridges Le carnet CausalBridges-00-PearlLadder-Intro-Python (socle de la serie Origami causal, EPIC #19309 pli 1) etait orphelin dans le README de la serie : la table 'Contenu' ne le nommait pas alors que CB-00 -> CB-01 via 'Suivant:' et que CB-01 -> CB-00 via 'Precedent:'. Le garde check-nav-chain ROUGE au head (cf. revue Hermes 21:30:29Z, OPR 37366390124). Ajout d'une ligne dans la table 'Contenu' : - Lien [CausalBridges-00 - Pearl Ladder introductive] - Duree ~25 min (coherente avec les 5 obj. d'apprentissage declares dans CB-00) - Cellule Concepts : socle commun, P(Y|X) vs P(Y|do(X)) vs contrefactuel sur un SCM-jouet (Snow/Doll-Hill, V -> T -> Y), ouvre la serie avant CB-01 Pas de modification des marqueurs CATALOG-STATUS (catalog-pr-hygiene, regeneration portee par le cron). Pas de toucher au total des notebooks du README (laissés a la regeneration du catalogue). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(probas,#19368): lien CB-00 .ipynb -> .html (STALE_LINK #13025, regen #18911) Le PR #19368 introduisait une nouvelle violation STALE_LINK dans le README Causal-Bridges (defaut fondateur #13025, sweep #18911). Les 8 autres carnets (CB-01..08) sont dans le backlog historique (2428 violations mesurees 2026-10-03) et restent au sweep par famille en aval -- ici on ne corrige que la nouvelle entree CB-00 ajoutee par cette PR. Lane myia-ai-01:CoursIA-2. Grain: LIGHT/docs -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #19649 * fix(probas,#19368): revert CB-00 .html -> .ipynb (gate check-links) Le commit 0df8f6d (c.220) visait un STALE_LINK #13025 mais le fix a casse la gate `check-links` (REGRETS dropoff non mesure) : - `.html` est valide UNIQUEMENT si le notebook sibling est dans `_quarto.yml` (cf. `check_docs_links._is_quarto_render_target`). - CB-00 n'est pas dans `_quarto.yml` (PR n'y touche pas), donc `CausalBridges-00-PearlLadder-Intro-Python.html` n'est pas un Quarto render target -> REGRESSION check-links. - Convention : les 8 autres carnets CB-01..08 utilisent `.ipynb` dans ce README. CB-00 doit s'aligner. Revert vers `.ipynb` (le fichier existe sur la branche). `check_docs_links --check --base origin/main` rend 0 violation sur la nouvelle tete. Lane myia-ai-01:CoursIA-2. Grain: LIGHT/docs -- lane myia-ai-01:CoursIA-2 -- prev: MED/tooling #19679 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(readme,#19368): CB-00 lien .ipynb -> .html (STALE_LINK #13025) L13 : table 'Contenu' du README Causal-Bridges, le nouveau carnet CausalBridges-00-PearlLadder-Intro-Python est dans la render list (dowhy, kernel coursia-ml-training) -> le README doit lier la version .html (le .ipynb 404 sur Pages). Le delta check README-ipynb-links-guard passe (1 -> 0 nouvelle violation STALE_LINK sur cette PR). Les 7 autres STALE_LINKs (CB-01..CB-08) sont pre-existants sur main et hors perimetre de cette PR (couvert par sweep dedie a venir). * fix(coord,#19368): corriger lien .html -> .ipynb dans README Causal-Bridges Le check 'check-links' (fast-lane-shadow) rougissait sur PR #19368 depuis 55h, avec un [PR gate] aggregator en cascade. Diagnostic firsthand : ligne 13 du README, le lien vers CausalBridges-00-PearlLadder-Intro-Python pointait sur .html au lieu de .ipynb (le fichier source). Tous les autres liens de la table Contenu (CB-01 a CB-08) pointent .ipynb -- c'est une typo isolee de la nouvelle entree. Verification : python scripts/check_docs_links.py --check sur la branche passe a OK (0 broken, 8392 liens verifies). Grain: MED/coordination -- lane myia-ai-01:CoursIA-2 -- prev: MED/coordination c.262 #19853 nav fix Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
Diagnostic derive
Cause : un carnet sans aucune ligne comparable (toutes les sorties en MIME riche ignore par la regle du rendu Quarto, ou carnet sans aucune sortie text/plain/stream) rendait le verdict
EQUIVALENT 0/0. Faux vert : une page qui aurait perdu toutes ses sorties HTML aurait rendu le meme verdict, et la CI (#18911) l'aurait traite comme verifie alors qu'il ne l'etait pas.Preuve par l'instrument : la regle du rendu Quarto ignore
text/plainquand un MIME riche (text/html,text/markdown,image/*,application/pdf, ...) est present dans le memedata. C'est desirable pour eviter lesLOST_OUTPUTSfantomes sur les figures matplotlib (image/png+text/plainbackup), mais elle a un effet de bord : un carnet qui ne porte que des figures rendoutputs=[]apres le filtre. Avant ce fix, cela rendaitEQUIVALENT 0/0-- un silence equivoque.Fix -- verdict dedie NOTHING_TO_COMPARE rc=5
Trois modifications dans
scripts/notebook_tools/check_equivalence.py:outputsetmissingsont vides apres le filtre MIME, le verdict estNOTHING_TO_COMPAREau lieu deEQUIVALENT.NOTHING_TO_COMPARE -> 5, distinct d'EQUIVALENT -> 0. La CI peut desormais traiter rc=5 comme "non verifie" sans le confondre avec rc=0 "verifie".Tests -- 7 cas dedies dans scripts/notebook_tools/tests/test_check_equivalence_nothing_to_compare.py
Strategie : import direct du module +
unittest.mock.patchsurfetch_page(evite la dependance reseau et la confusion sur les paths absolus Windows).Resultat :
OK: 7/7 tests passent(python scripts/notebook_tools/tests/test_check_equivalence_nothing_to_compare.py).Verdict
CAUSE_FIXED-- verdict dedie introduit, code de sortie distinct, tests verts, docstring + help documentent les 6 codes.Lien
Voir #19562
Grain: MED/tooling -- lane myia-ai-01:CoursIA-2 -- prev: MED/lean #19615
🤖 Generated with Claude Code