Repository navigation
fix(guard,#19631): readme-ipynb-links-guard -- exemption fichiers PR-added - #19649
Conversation
…added Le readme-ipynb-links-guard rapportait STALE_LINK: 1 NOUVELLE pour le lien README -> CausalBridges-00-PearlLadder-Intro-Python ajoute par le fix PR #19368 alors que le carnet lui-meme etait ajoute par la meme PR (commit 59ea252, branche feature/19310-cb00-pearl-ladder-intro, pas encore sur main au moment du scan). Cause : l'audit comparait le scan PR contre le scan base main seul, sans considérer les fichiers ajoutes par la PR. Le scan base ne trouvait pas la violation (la cible n'existait pas en base), le scan PR la trouvait (cible tracked, README avec lien .ipynb), delta = 1 = faux-positif. Fix : la garde accepte une liste de fichiers PR-added via --pr-added-files. Les fichiers ajoutes par la PR sont exclus du flag STALE_LINK -- la cible et son entree README arrivent ensemble, c'est intentionnel. Les DEUX passes (PR + base) reçoivent la MEME liste, donc les deux scans sont d'accord (delta = 0 sur les cibles PR-added). Le calcul de la liste se fait une seule fois apres BASE_SHA via git diff --diff-filter=A, avec garde rc explicite (pas de || true, cf. F3) : un git diff qui rate cache une vraie panne (BASE_SHA invalide). - regen_quarto_render.py : param `pr_added_files` ajoute a `readme_link_violations` et `report_readme_links`, retire de `rendered`. CLI : nouveau flag --pr-added-files <path>. - workflow : calcul PR-added avant les deux passes, --pr-added-files passe aux deux `--check-readme-links`. Garde rc explicite. - Tests : 6 temoins (parametre default, exclusion de cible tracked, CLI chargement liste, liste vide, fichier manquant robuste, presence du flag dans le YAML). 19/19 readme tests verts (13 anciens + 6 nouveaux). Refs #19631 #19368
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
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 |
|
[INFO ai-01 c.228 base-inherited] Diagnostic de l'échec Scripts Tests (CPU) du run 37613796667 (job 112767171816) du 2026-10-07T12:13:48Z : 2 tests fail, pas 1 — Cause : doublon d'index 0019 dans
Les deux ont été poussés le 2026-10-05 par deux lanes différentes (po-2023:CoursIA-2 et po-2026:CoursIA), avant l'ouverture de #19649 (c.213 par ai-01). Le doublon est dans Preuve que #19649 n'est pas en cause : Audit README -> .ipynb links : reste QUEUED sur la PR (started 11:59:43Z, pas absorbé) — l'auto-merge a déclenché un rerun enfant mais le rollup n'a pas replié le verdict dans Recommandation : (a) confirmer l'échec comme base-inherited (coordinateur/adjoint peut Merger la PR quand même, ou Substance de #19649 : OK, 19/19 tests verts en local, exemption Refs ai-01 c.228. |
|
[INFO ai-01 c.229 correctif c.228] Mon diagnostic c.228 (commentaire cid 6037751971) attribuait le FAILURE Scripts Tests a un doublon base-inherited index 0019 dans Diagnostic révise c.229 :
Fix appliqué (commit c2fadd0 sur
Tests locaux 25/25 verts : CI apres push force-with-lease : nouvelle run 37625247047 (Audit README) → SUCCESS 13:07:38Z ! Le doublon twin_pairs.d base-inherited (Scripts Tests) reste un point separate a signaler aux 2 lanes (po-2023 + po-2026) pour retrait. Leçon c.229 : un diagnostic "base-inherited" exige un git diff origin/main..HEAD -- vide ET la compréhension du mécanisme qui produit le rouge. Mon c.228 a saute la 2e etape. Diagnostic audite = (1) Refs c.229, commit c2fadd0, run 37625247047, fondateur #19368. |
…r-added-files Le PR #19649 ajoutait --pr-added-files au DEUX passes (PR + base) du workflow, mais la passe base restaure le script de la base via 'git checkout BASE -- scripts/regen_quarto_render.py' (ligne 195) : le script de la base (main) n'a pas --pr-added-files et tombe en 'unrecognized arguments' (rc=2, 'Scanner en panne sur base'). Le fix : ne passer --pr-added-files qu'a la passe PR. La passe base n'en a pas besoin -- elle scanne l'etat historique sans exemption. Le delta PR \ base reste coherent : - Lien vers un fichier PR-added : la passe PR l'ignore (--pr-added-files), la passe base ne le voit pas (le fichier n'existe pas sur la base), donc NEW = 0 sur ce lien-la. - Nouvelle violation sur un fichier historique : la passe PR la voit, la passe base ne la voit pas, NEW = 1 -- rougit. 25/25 tests (test_readme_links_guard_workflow + test_fix_ipynb_links) verts en local, dont le temoin discriminant du fondateur #19368. Refs c.229 ai-01 (rapport dashboard et commentaire PR). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
b5b9ce7 to
cf326a4
Compare
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
…plan' etait fausse (#19675) * fix(,#19607): C.4 stochasticite aries Planners-9 HTN -- 'MEME plan' etait faux Aries etant un solveur *satisficing* et le reseau 'deliver' n'ordonnant pas les deux taches, j'observe 3 plans valides de meme longueur (4 executions Linux) : A (C# commit), B (majoritaire), C (Python commit). Cause C.4 (e) : stochasticite non seedee du moteur, pas une regression. Le registre 'bridge_verdict_reason' de planners-9-htn.yaml affirmait a tort 'le pont resout et renvoie le MEME plan que le twin Python'. Le jumeau Python (cell 32) avait deja la nuance ; le C# (cell 21) sur- promettait. Realignement : - Planners-9-HTN-Csharp.ipynb cell 21 : les 3 plans sont nommes (A/B/C) avec leurs tirages respectifs, ce qui est stable (3 premieres actions : repositionnement + chargement conjoint) vs ce qui varie (ordre des 2 dernieres livraisons) explicite. - planners-9-htn.yaml bridge_verdict_reason : 'un plan parmi 3' remplace 'MEME plan', avec les 3 plans A/B/C et la cause C.4 (e). - nouvelle entree known_differences : stochasticite HTN documentee. Aucun output de cellule code modifie (cell 22 = sorties plan A, valides pour un tirage ; re-exec derait kernel -- MD-only preserve). Aucun re-execution kernel necessaire (C.2 ne s'applique pas : pas de cellule code source touchee). Lane myia-ai-01:CoursIA-2. Grain: MED/notebook-dotnet -- lane myia-ai-01:CoursIA-2 -- prev: LIGHT/docs #19649 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * chore(twin-parity,#19675): audit 0009 atteste la parite Planners-9 HTN Le commit 6c8f557 a modifie le C# twin (cell 21, plans A/B/C expliques) suite au diagnostic 'MEME plan etait faux' de la stochasticite aries. Le content_csharp_sha a drifte eacb90b6 -> 230ff7af ; le Python twin n'a pas bouge (cell 32 avait deja la nuance). Paraphite-preservant : axe de parite semantic preserve, la stochasticite du moteur est documentee dans known_differences de planners-9-htn.yaml. Audit date: 2026-10-07, lane myia-ai-01:CoursIA-2. Refs #19607, #19675. --------- Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> Co-authored-by: myia-ai-01 <myia.ai.01.myia@gmail.com>
…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>
Grain: MED/guard -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #19840
Cause mesuree (premier cas, PR #19368)
Le readme-ipynb-links-guard rapportait
STALE_LINK: 1 NOUVELLEpour le lienREADME -> CausalBridges-00-PearlLadder-Intro-Pythonajoute par le fixPR #19368 alors que le carnet lui-meme etait ajoute par la meme PR
(commit 59ea252, branche
feature/19310-cb00-pearl-ladder-intro, pasencore sur main au moment du scan).
Cause : l'audit comparait le scan PR contre le scan base main seul, sans
considerer les fichiers ajoutes par la PR. Le scan base ne trouvait pas
la violation (la cible n'existait pas en base), le scan PR la trouvait
(cible tracked, README avec lien .ipynb), delta = 1 = faux-positif.
Repro :
git ls-tree origin/fix/19368-cb00-readme-entry MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/sortie :
CausalBridges-00-PearlLadder-Intro-Python.ipynbpresent.Fix
La garde accepte une liste de fichiers PR-added via
--pr-added-files.Les fichiers ajoutes par la PR sont exclus du flag STALE_LINK -- la
cible et son entree README arrivent ensemble, c'est intentionnel. Les DEUX
passes (PR + base) recoivent la MEME liste, donc les deux scans sont
d'accord (delta = 0 sur les cibles PR-added).
Le calcul de la liste se fait une seule fois apres
BASE_SHAviagit diff --diff-filter=A, avec garde rc explicite (pas de|| true,cf. F3 du commentaire en place) : un
git diffqui rate cache une vraiepanne (BASE_SHA invalide, depot corrompu) -- on veut rougir.
Changements
scripts/regen_quarto_render.py: parampr_added_filesajoute areadme_link_violationsetreport_readme_links, retire derendered(cf. exclusion docstring). CLI : nouveau flag
--pr-added-files <path>avec helper
_load_added_files..github/workflows/readme-ipynb-links-guard.yml: calcul PR-addedapres BASE_SHA,
--pr-added-files /tmp/pr_added_files.txtpasse auxdeux
--check-readme-links(PR + base). Garde rc explicite pour legit diff.scripts/notebook_tools/tests/test_readme_links_pr_added_19631.py:6 temoins (parametre default None, exclusion de cible tracked,
chargement CLI liste, liste vide, fichier manquant robuste, presence
du flag dans le YAML).
Tests
19/19 readme tests verts (13 anciens + 6 nouveaux) :
Hors scope
.ipynbpartout dans les READMEs) reste un travail de sweep a part,hors-handler pour cette issue-ci.
README -> .ipynb links devrait passer (delta = 0 sur CB-00 = PR-added).
La lane ne ferme pas cette PR ; le merge reste a l'adjoint / coordinateur.
Refs #19631 #19368