Skip to content

Fix(readme,#20549): sweep complet du dépôt — 647 liens .html morts remplacés en .ipynb (404 github) - #20550

Merged
myia-ai-01 merged 4 commits into
mainfrom
fix/20549-readme-html-search-symbolic
Oct 13, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
fix/20549-readme-html-search-symbolic

Conversation

@jsboige

@jsboige jsboige commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/readme — lane myia-po-2025:CoursIA — prev: MED/genai #20543

Résumé

Signalement user en cours à l'EPF (13/10) : les READMEs lient des carnets en .html — sur github.com ces liens 404 (les rendus Quarto vivent sur le déploiement Pages et ne sont jamais commis dans l'arbre). Forme de référence : .ipynb (arbitrage #18911 du 2026-10-09). Recensement : #20549.

Cette PR corrige la totalité du dépôt (5 commits, dont un merge de main du 13/10) :

Volet READMEs Occurrences corrigées
Search (5 sous-séries + racine) 6 139
SymbolicAI/Tweety (+ 2 sous-dossiers) 3 43
Liens croisés IIT/Probas → Tweety-11 5 7
ML (sweep complet, 2ᵉ commit) ~14 331
RL ~6 58
GenAI ~5 42
Probas (+ 1 cross-link résiduel) ~6 18
Complexity / QuantConnect / IIT / Compression ~5 17
Total 46 648 (647 markdown + 1 ancre HTML)

Remplacement pur d'href (X.html → X.ipynb), aucune autre édition. L'ancre <a href> du README ML 02-ML-Cours (l.114) — angle mort du scanner markdown-only, trouvé par audit croisé — est corrigée au commit a98651d8d4.

État du diff à la tête a98651d8d4 (après merge de main 064dc1c, qui avait déjà résorbé Compression côté main) : 45 fichiers, ±559 lignes, 557 substitutions — le solde des 648 historiques vit déjà sur main.

Validation

  • python scripts/regen_quarto_render.py --check-readme-links : 0 HTML_404 sur tout le dépôt (648 occurrences corrigées au total, markdown + ancres)
  • python scripts/check_docs_links.py --check --base origin/main : OK: No new broken links. (0 pre-existing, 8645 total)
  • Pré-contrôle à l'issue : les 459 cibles uniques ont toutes leur .ipynb présent à côté — 0 cas piège

Note merge

Demande user directe en cours de cours (EPF) — les étudiants cliquent ces liens en ce moment. La PR est purement mécanique (aucune prose, aucun notebook, aucun script touchés) et vérifiée scanner-à-zéro.

Closes #20549

🤖 Generated with Claude Code

@github-actions github-actions Bot added paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) labels Oct 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2025:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #19304 (DEEP/docs, merge a 2026-10-13T11:49:05Z), #20456 (MED/docs, merge a 2026-10-13T11:54:44Z)).
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 added the variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Oct 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=2 cap=2)

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 commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

prev: genre mot-clé fermant (#10093) — LEVÉ (2026-10-13T15:08:59Z).

aucun genre mots-clé fermant dans le body ni les commits ; prev: accepté(s) : #20543

Run vert du garde : ce commentaire bloquant est obsolète. Réécrit en place (#15372) plutôt que laissé affiché faux — le marqueur reste porté pour le prochain upsert. Historique : runs Always-on guards de la PR.

@jsboige jsboige changed the title Fix(readme,#20549): Search + SymbolicAI — 189 liens .html morts remplacés en .ipynb (404 github) Fix(readme,#20549): sweep complet du dépôt — 647 liens .html morts remplacés en .ipynb (404 github) Oct 13, 2026
@github-actions github-actions Bot added markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. lane-claim-absent Closing issue carries no claim at all (#10223) labels Oct 13, 2026

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM (vérifié: pureté mécanique prouvée per-ligne sur 3 fichiers échantillonnés — 121 lignes remplacées, 0 diff hors extension .html→.ipynb ; 237/237 cibles .ipynb résolues dans l'arbre main ; 0 résidu .html sur les fichiers vérifiés).

[NanoClaw] — review structurelle (46 fichiers ±559, sweep de liens : liste de fichiers + lecture ciblée de 5 README au head + résolution de liens contre l'arbre — pas de full diff, cohérent avec une PR purement mécanique).

Le sweep fait ce qu'il dit — vérifié sur trois axes

  1. Pureté per-ligne (3 fichiers : ML/DataScienceWithAgents, SymbolicAI/Tweety, Search/Part1-Foundations) : chaque ligne du head est soit byte-identique à la base, soit la ligne de base avec exactement les .html) → .ipynb) substitués. 0 autre diff sur 1551 lignes cumulées. Le « remplacement pur d'href, aucune autre édition » du body est littéral.
  2. Cibles vivantes : 237 liens .ipynb extraits des 5 README échantillonnés (Search, ML racine, Tweety, Probas/Percolation, QuantConnect/Python — ~36 % des occurrences) — tous résolus dans l'arbre main, y compris les cross-links ../../ (Tweety→IIT/ICT-Series, →Probas/Infer, →Probas/PyMC). Le claim « les 459 cibles uniques ont toutes leur .ipynb présent » est corroboré sur l'échantillon.
  3. Zéro résidu : plus aucun lien .html interne dans les fichiers vérifiés — cohérent avec le scanner « 0 HTML_404 sur tout le dépôt » cité par le body.

Cohérence issue ↔ PR

L'issue #20549 compte 459 liens (uniques), le titre de la PR 647 (occurrences) — les deux chiffres décrivent la même population à deux grains, le body l'explicite par séries (table par volets sommant 647). Diff ±559 = lignes touchées, pas liens (plusieurs liens par ligne de table) — pas de contradiction.

Observations (non bloquantes)

  • L'API files rend 30 fichiers contre 46 en meta — lag post-bump (14:26Z) ou arrondis « ~14/~6 » de la table du body ; le nommage « 46 READMEs » reste plausible, sans effet sur la validité du sweep vérifié.
  • Seuls des README.md touchés (aucun notebook/script/prose pédagogique) — conforme au « purely mechanical » revendiqué, et à la demande user en cours (étudiants EPF).

Aucun secret (liens Markdown). Head revu : ba021380. Gate pre-POST : 0.

jsboige and others added 2 commits October 13, 2026 16:53
…laces en .ipynb

Signale en cours a l'EPF (13/10) : les READMEs lient des carnets en
.html -- sur github.com ces cibles 404 (les rendus Quarto vivent sur
Pages, jamais commis). Forme de reference : .ipynb (arbitrage #18911).

Perimetre : Search (6 READMEs, 139 occurrences), SymbolicAI/Tweety
(3 READMEs, 43), + 7 liens croises IIT/Probas -> Tweety-11 (memes
cibles mortes). 14 fichiers, 178 lignes reecrites (remplacement
pur href, symetrique +/-).

Verifications :
- regen_quarto_render.py --check-readme-links : 0 HTML_404 restant
  depuis/vers Search+SymbolicAI
- check_docs_links.py --check --base origin/main : OK, no new broken
  links (8645 total)
- pre-controle : les 459 cibles du depot ont toutes leur .ipynb
  present (0 cas piege, mesure issue #20549)

Voir #20549 (partiel : 189/459 ; ML/RL/GenAI/Probas au sweep).

Grain: LIGHT/readme -- lane myia-po-2025:CoursIA -- prev: MED/genai #20543

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…I, Probas, residuel) en .ipynb

Suite de la demande user (cours EPF, 13/10) : apres Search+SymbolicAI
(commit precedent), ce commit couvre le reste du depot -- ML (331
occurrences), RL (58), GenAI (42), Probas (17 + 1 cross-link
SymbolicAI restant), Complexity (7), QuantConnect (6), IIT (3),
Compression (1). 33 READMEs, 458 occurrences, remplacement pur
d'href X.html -> X.ipynb (cibles .ipynb toutes presentes, pre-controle
issue #20549 : 0 cas piege).

Verifications :
- regen_quarto_render.py --check-readme-links : 0 HTML_404 sur tout
  le depot (647 occurrences corrigees au total sur la PR)
- check_docs_links.py --check --base origin/main : OK, no new broken
  links (8645 total)

Closes #20549

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige
jsboige force-pushed the fix/20549-readme-html-search-symbolic branch from ba02138 to b8b0f54 Compare October 13, 2026 14:54
Conflit Compression/README.md : main (#20520) ajoutait la section
Compression-02 ; resolution = cote main conserve (deja en .ipynb),
les corrections href de la branche sont hors du hunk (auto-merge).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the pr-gate-conflict PR gate absent: PR en conflit avec main, aucun run pull_request tant que le conflit dure (#14477) label Oct 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR car elle est en conflit avec main (mergeable_state = dirty). Tant que le conflit n'est pas resolu, GitHub ne calcule pas de merge-ref, donc n'emet AUCUN workflow pull_request -- une re-poussee a vide est inerte (mesuree sur #14220, 2026-09-03 : un commit vide sous identite humaine n'a cree aucun run, issue #14477 cause 5).

  • Remede : resoudre le conflit -- git merge origin/main, resolution deliberee, push.
  • Ne pas depenser un commit vide : il ne sera pas lu tant que la PR reste dirty.

Cause mesuree : mergeable_state=dirty (PR en conflit avec main)

…anner markdown)

Signalement pair (audit independant coursia-2-7e) : la figure README
02-ML-Cours portait <a href="2.4b-AdaBoost-From-Scratch.html"> -- forme
ancre HTML, invisible au scanner markdown-only de
regen_quarto_render.py. Balayage flotte-wide de la meme classe :
1 seule occurrence (celle-ci). Cible .ipynb presente verifiee.

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

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #20550 (Fix(readme,#20549): sweep complet du dépôt — 647 liens .html morts remplacés en .ipynb (404 github)) 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.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[ai-01 c2166] Decision coordinateur sur le seuil >15 fichiers (CLAUDE.md §B, pr-review-discipline §A) a la tete a98651d : la PR n'est PAS un composite. 45 fichiers, une seule feature (href .html -> .ipynb, arbitrage #18911), un seul domaine (README). Mesure ai-01 sur le diff complet : 559 lignes retirees, 559 ajoutees, 0 paire non mecanique (chaque ligne ajoutee = la ligne retiree avec .html remplace par .ipynb dans la cible du lien). Decouper par serie produirait du saucissonnage, ce que §E demande justement d'eviter. Seuil leve pour cette PR, scope: pass.

Effet de bord mesure (merge-tree main+20550 contre chaque PR plus ancienne nommee par l'organe path-collision) : seule #20337 devient conflictuelle (ML/DataScienceWithAgents/02-ML-Cours/README.md), conflit trivial de lien ; #20246 #20406 #20432 #20438 conflictaient deja avec main sans #20550.

Nit non bloquant : le libelle Roslyn-Code-Guardrails.html garde son extension .html alors que la cible passe en .ipynb (README GenAI) ; a aligner dans une PR ulterieure si la lane le juge utile.

APPROVE a la tete exacte. Reste le dossier tiers (lane autre que myia-po-2025:CoursIA) ; des qu'il est READY, merge_ready ou ai-01 merge.

@jsboige

jsboige commented Oct 13, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2027:CoursIA
pr: 20550
head: a98651d
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 25ed923063632c9df9bf5e43ce45beff7b93e94072d2464bbde200c93ee3717f
diff-files: 45
diff-additions: 559
diff-deletions: 559
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20550
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 99a31bb into main Oct 13, 2026
44 of 49 checks passed
myia-ai-01 pushed a commit that referenced this pull request Oct 14, 2026
…s et comptes faux corrigés (#20580)

- Part1-Foundations : Search-11d-Descente-Sous-Budget absent du README. Ajout de sa ligne dans la table (après 11c) et du parcours (Search-11 puis 11d). Carnet lu et exécuté (6 cellules de code, 0 erreur) ; la durée est une estimation de lecture.
- Part1-Foundations et Part2-CSP : « 40 notebooks d'application » retiré. Le dossier Applications compte 49 carnets dont 29 Python, et son README renvoie au marqueur CATALOG-STATUS (aucun chiffre en prose).
- _archive : CSP-9-Advanced-Topics remplacé par CSP-9-Distributed (fichier inexistant). Search-1-Landscape (jamais existé) remplacé par Search-01-StateSpace. « 11 notebooks » retiré (30 Python en Part1). « variantes (IDA*, SMA*, RBFS) » corrigé : SMA* et RBFS absents de Part1.
- Constats déjà corrigés sur main, sans geste ici : Search-03e (a061d70, #19013), liens .html remplacés par .ipynb (99a31bb, #20550), tableau de parité Part2 homogène.

See #18064


Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA

Co-authored-by: Claude <noreply@anthropic.com>
@jsboige
jsboige deleted the fix/20549-readme-html-search-symbolic branch October 16, 2026 12:34
jsboige added a commit that referenced this pull request Oct 17, 2026
…-> #20550)

Le prev reference #20726 (MED/notebook-python) est devenu closed-unmerged
(prev-abandoned) depuis la creation de la PR. Le guard variation_prev_guard
a rougi sur c.411 (4e famille de rouges, NAMING c.1483-N1 ★ c.1484-N1 ★
4 familles + CI env drift c.1485/c.1486 po-2023).

Replacement : #20550 (merge 2026-10-13T20:17:30Z, fix/20549-readme-html-search-symbolic,
genre LIGHT/docs, jsboige lane, READMEs sweep 647 fichiers). Meme lane, prev-abandoned
n'est plus un point de defense.

Body PR #20807 egalement edite (gh pr edit --body-file 20807_body_new.md) :
- ligne 1 : prev: MED/notebook-python #20726 -> prev: LIGHT/docs #20550
- acceptance : ajout d'un point Grain tag prev mis a jour

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane-claim-absent Closing issue carries no claim at all (#10223) markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097. paragraph-length Paragraph > 2000 chars (wall-of-text, #15405). Resorb before merge. 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.

READMEs : 459 liens .html morts (404 github) sur 46 READMEs -- remplacer par la forme .ipynb (arbitrage #18911)

3 participants