Skip to content

fix(guard,#19631): readme-ipynb-links-guard -- exemption fichiers PR-added - #19649

Merged
myia-ai-01 merged 3 commits into
mainfrom
fix/19631-readme-links-base-head
Oct 8, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
fix/19631-readme-links-base-head

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

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 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
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.ipynb present.

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_SHA via
git diff --diff-filter=A, avec garde rc explicite (pas de || true,
cf. F3 du commentaire en place) : un git diff qui rate cache une vraie
panne (BASE_SHA invalide, depot corrompu) -- on veut rougir.

Changements

  • scripts/regen_quarto_render.py : param pr_added_files ajoute a
    readme_link_violations et report_readme_links, retire de rendered
    (cf. exclusion docstring). CLI : nouveau flag --pr-added-files <path>
    avec helper _load_added_files.
  • .github/workflows/readme-ipynb-links-guard.yml : calcul PR-added
    apres BASE_SHA, --pr-added-files /tmp/pr_added_files.txt passe aux
    deux --check-readme-links (PR + base). Garde rc explicite pour le
    git 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) :

test_readme_link_violations.py ........................ 6 passed
test_readme_links_guard_workflow.py ................... 7 passed
test_readme_links_pr_added_19631.py ................... 6 passed

Hors scope

Refs #19631 #19368

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

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA-2 a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #19384 (MED/test, merge a 2026-10-07T01:36:52Z)).
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.

@github-actions

github-actions Bot commented Oct 7, 2026

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 added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=2 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=0 genre=2 cap=1)

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.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[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 — test_twin_registry_integrity et test_twin_index_collisions.

Cause : doublon d'index 0019 dans scripts/notebook_tools/twin_pairs.d/search-03-informed/ déjà présent sur origin/main avant cette PR. Vérification : git ls-tree -r origin/main scripts/notebook_tools/twin_pairs.d/search-03-informed montre deux blobs à l'index 0019 :

  • 0019-2026-10-05-myia-po-2023-CoursIA-2.yaml (blob b56b7198...)
  • 0019-2026-10-05-myia-po-2026-CoursIA.yaml (blob bfc3b11e...)

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 main lui-même, pas dans le diff de la PR.

Preuve que #19649 n'est pas en cause : git diff origin/main..05f297a28 -- scripts/notebook_tools/twin_pairs.d/ ne touche aucun fichier de ce dossier. Le diff porte uniquement sur scripts/regen_quarto_render.py (ajout argparse --pr-added-files + lecture pr_added_files.txt dans readme_link_violations + report_readme_links + helper _load_added_files).

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 statusCheckRollup. L'auto-rerun 11:46Z (run 37613796571) a FAILURE pour la même raison (Scripts Tests héritée base).

Recommandation : (a) confirmer l'échec comme base-inherited (coordinateur/adjoint peut Merger la PR quand même, ou gh run rerun 37613796667 --failed une fois le doublon 0019 retiré sur main par les 2 lanes propriétaires) ; (b) la lane qui voit un doublon twin_pairs.d/index NNNN le signale aux 2 lanes (po-2023 + po-2026 ici) avec l'index et la date de push, en DM dashboard.

Substance de #19649 : OK, 19/19 tests verts en local, exemption pr_added_files ajoutée proprement. Pas un fix de la PR, c'est une condition préalable de main qui s'est dégradée entre la rédaction et la CI.

Refs ai-01 c.228.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[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 twin_pairs.d/search-03-informed/. C'était faux pour le FAILURE Audit README.

Diagnostic révise c.229 :

  • Le FAILURE Audit README -> .ipynb links (run 37613796576, 11:23Z puis 12:20Z) était un bug du PR lui-même : la passe base invoque git checkout "${BASE_SHA}" -- ... scripts/regen_quarto_render.py (ligne 195) puis python scripts/regen_quarto_render.py --check-readme-links --pr-added-files /tmp/pr_added_files.txt. Le script de la base (main) n'a pas --pr-added-files, l'argument est inconnu, rc=2, "Scanner en panne sur base".
  • Le FAILURE Scripts Tests (CPU) test_twin_registry_integrity + test_twin_index_collisions (run 37613796667, 12:13Z) sur doublon index 0019 dans twin_pairs.d/search-03-informed/ EST base-inherited (c.228 confirmé : 2 blobs par po-2023:CoursIA-2 + po-2026:CoursIA, 2026-10-05, avant l'ouverture de fix(guard,#19631): readme-ipynb-links-guard -- exemption fichiers PR-added #19649). git diff origin/main..05f297a28 -- scripts/notebook_tools/twin_pairs.d/ = vide.

Fix appliqué (commit c2fadd0 sur fix/19631-readme-links-base-head) : retirer --pr-added-files de la passe base uniquement. La passe PR le garde. Le delta PR \ base reste coherent :

  • Lien vers un fichier PR-added : passe PR l'ignore (exempté), passe base ne le voit pas (fichier absent), NEW = 0 sur ce lien.
  • Nouvelle violation sur un fichier historique : vue par PR, pas par base, NEW = 1, rougit.

Tests locaux 25/25 verts : pytest scripts/notebook_tools/tests/test_readme_links_guard_workflow.py scripts/notebook_tools/tests/test_fix_ipynb_links.py -- 7/7 + 18/18, dont le temoin discriminant du fondateur #19368 (test_temoin_nouvelle_violation_stderr_2_3_1_rc1) qui exige head: 3, base: 2, NEW: 1.

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) git diff pour isoler, (2) lire le code qui produit le rouge (le workflow, le script), (3) hypotheses par elimination. J'ai combine (1) et une hypothese sans tester (2) sur la passe Audit README ; pour la passe Scripts Tests, (1) etait suffisant.

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>
@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19649
head: cf326a4
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e583a98481da1fbb4891ba619216c3eef1e605dbe22df8874e86fa4c3577b17a
diff-files: 3
diff-additions: 245
diff-deletions: 6
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19649
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19649
head: 48e583e
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: ce130645299474ecaa18e79651753af82a1f12634483c32ec95c7d6672f488ef
diff-files: 3
diff-additions: 245
diff-deletions: 6
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19649
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19649
head: 48e583e
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 9d0a7c7b850e3524c544fb02c889cf944ac808e372a6f2852d3ee1c02e321fcb
diff-files: 3
diff-additions: 245
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
supersedes: 7
supersedes-why: le BLOCKED du secretariat mesurait checks blocked a la tete 48e583e pendant que les 4 jambes tournaient ; fold latest-wins re-mesure a l emission (filter=all, cle (started_at,id)) : toutes jambes completed/success, 0 rouge, 0 en cours a la meme tete -- rien du BLOCKED ne tient plus, b0 clear
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19649
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 495a805 into main Oct 8, 2026
26 checks passed
myia-ai-01 added a commit that referenced this pull request Oct 8, 2026
…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>
myia-ai-01 added a commit that referenced this pull request Oct 8, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants