Skip to content

Fix(docs,#14623): les 2 derniers rapports dates hors lane -> transients balises - #22988

Open
jsboige wants to merge 2 commits into
mainfrom
docs/14623-transients-hors-lanes
Open

jsboige wants to merge 2 commits into
mainfrom
docs/14623-transients-hors-lanes

Conversation

@jsboige

@jsboige jsboige commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs — lane myia-po-2024:CoursIA — prev: MED/tooling #22986

Tranche #14623 : les 2 derniers rapports datés hors lane -> transients balisés (critère 3)

Claim : c.6448953630, scope paths: docs/ict/extensions-2026-07.md, docs/reference/agents-roster-2026-10-08.md (les 15 PRs ouvertes de la collision initiale ne touchent que docs/README.md, réferent traité ici sans conflit de contenu — lignes différentes de toute PR ouverte, vérifié gh pr list --json files).

Ce que la mesure disait (main eae2eb24d19)

Les douze transients historiques de l'acceptance sont tous traités par les tranches précédentes ; il restait deux rapports datés hors archive/ et transients/ :

Le geste (chacun nommé, per l'acceptance « traités un par un, en nommant lequel »)

Fichier Verdict Destination
extensions-2026-07.md dates-et-placé (rapport figé à son cadrage, aucun flux vivant) docs/transients/2026-07-23-ict-extensions-quatre-fronts.md
agents-roster-2026-10-08.md dates-et-placé (roster frontal type: ephemeral, régénéré par cycle, jamais distillé) docs/transients/2026-10-08-roster-machine-workspace.md
  • En-tête > RAPPORT — <date> — <périmètre> — figé posé sur chacun ; frontmatter du roster retiré (sa fenêtre de 9 lignes dépasse les 5 lignes de position d'en-tête de l'organe ; date et périmètre vivent dans l'en-tête, parents cités dans une ligne de provenance).
  • Liens internes du roster recalculés pour la nouvelle profondeur (../reference/cluster-agents.md, ../../.claude/rules/lane-claim-protocol.md). Ce second lien était écrit d'un cran trop haut au premier jet ; check-links l'a attrapé, la profondeur est corrigée au commit b6a109f et le job repasse au vert à cette tête. Le déplacement docs/reference/ → docs/transients/ est à profondeur égale : le lien n'avait pas à changer.

Référents balayés (aucun lien mort)

Référent Ligne Geste
docs/ict/README.md:58 table des extensions retarget ../transients/…
docs/README.md:37 index des docs retarget transients/… + mention « figé dans la lane transiente »
_quarto.yml:628 manifeste render retarget
MyIA.AI.Notebooks/IIT/ICT-Series/ICT-0-Framing.md:349 pointeur de déport verbatim retarget + mention

Vérifié post-geste : grep -rn "extensions-2026-07\|agents-roster-2026-10-08" ne rend plus que le slug name: interne du rapport déplacé (corrigé en cohérence). Ce grep mesure le départ des anciens chemins, pas l'arrivée des nouveaux : c'est check_docs_links.py qui mesure les liens recalculés.

Organes (validation du livrable, relancée après le dernier commit)

  • python scripts/check_docs_links.py --check --base origin/main → OK, 9256 liens, 0 nouveau cassé (mesure à la tête b6a109fd993). C'est l'instrument qui voit un lien mal recalé vers une cible neuve ; le grep d'anciens chemins ne le peut pas — la review de la tête 643f8c12 l'a prouvé en trouvant un lien d'un cran trop haut, corrigé depuis.
  • python scripts/notebook_tools/check_prose_quantitative_claims.py --diff origin/main...HEAD → [OK] aucun compteur quantitatif en prose à la tête b6a109fd993.
  • python scripts/check_docs_transients_lane.py → CONFORME — les 2 sens du contrat tiennent (les rapports de la lane sont balisés ; aucun rapport daté ne subsiste hors lane, et le périmètre hors-lane ne porte plus d'en-tête gelé attendu — les deux rapports datés n'y sont plus).
  • scripts/check_docs_reference_lane.py (organe de PR Add(docs,#14623): balisage perenne — organe sens reference + premiere vague notebook-metadata #22527) : absent de main — non applicable ici ; cette PR ne retire aucun balisage pérenne (aucun document balisé REFERENCE n'est touché).

Portée

Markdown/YAML seul, aucun notebook, aucune cellule de code : pas de ré-exécution due (C.2). docs/archive/ non touché (stock à résorber = hors tranche).

Diff réel contre origin/main à la tête b6a109fd993 : +10/-16, deux lignes par référent retargé et deux lignes par rapport renommé. Les 713 lignes de bruit de fin de ligne qui gonflaient la première tête ont été retirées (voir ci-dessous).

Correctifs post-review (tête b6a109fd993)

  • Lien du roster recalé : docs/transients/2026-10-08-roster-machine-workspace.md:82 pointait ../../../.claude/rules/lane-claim-protocol.md. Le déplacement docs/reference/ -> docs/transients/ conserve la profondeur, donc la cible reste à deux niveaux — ../../.claude/rules/…, comme les deux autres rapports du même dossier. Trouvé par check-links, invisible au grep d'anciens chemins.
  • Fin de ligne normalisées en LF : core.autocrlf est false sur ce siège et .gitattributes ne porte aucune entrée pour docs/**, donc l'édition Windows avait basculé les quatre markdown en CRLF (0 -> 499, 78, 53, 83). Retour en LF sans changement de contenu. Effet de bord évité : docs/README.md est aussi modifié par Fix(docs,#19283): tranche 3 -- racine reduite a ses quatre roles d'entree, section ICT dedoublee #22505, un conflit whole-file était garanti au rebase.
  • Le défaut EOL avait aussi rougi prose-counts : le flip CRLF faisait apparaître les 499 lignes de docs/README.md comme ajoutées, donc leurs compteurs existants redevenaient « prose ajoutée ». Après normalisation, l'organe rend [OK] aucun compteur quantitatif en prose.

See #14623 (critère 3 « 12 transients hors archive » : les 2 derniers résiduels ; les 10 de la liste initiale étaient déjà traités par les tranches 3a/3b). Ne clôt pas l'issue : restent le balisage pérenne (0/70, PR #22527 ouverte) et le flux de distillation.

🤖 Generated with Claude Code

…ts balises

- docs/ict/extensions-2026-07.md -> docs/transients/2026-07-23-ict-extensions-quatre-fronts.md
- docs/reference/agents-roster-2026-10-08.md -> docs/transients/2026-10-08-roster-machine-workspace.md
- en-tetes RAPPORT date+perimetre+fige ; frontmatter du roster retire (fenetre organe = 5 lignes)
- referents balayes : docs/README.md, docs/ict/README.md, _quarto.yml, ICT-0-Framing.md
- organes : check_docs_transients_lane.py CONFORME (2 sens)

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

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2024:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #22826 (MED/guard, merge a 2026-10-27T10:07:45Z)).
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.

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

Review — #22988, head 643f8c12 (premier avis sur cette PR)

Périmètre : 6 fichiers (docs/README.md, docs/ict/README.md, _quarto.yml, ICT-0-Framing.md, 2 renommages). Scan secrets : 0 hit. Le check-links du head est ROUGE, et il a raison — je l'ai reproduit et j'ai trouvé la cause, qui est dans le diff.

🔴 check-links FAILURE : le lien recalculé du roster pointe un niveau trop haut

check-links au head 643f8c12 (docs-link-check.yml) :

REGRESSION: 1 new broken link(s):
  docs/transients/2026-10-08-roster-machine-workspace.md:82 -> ../../../.claude/rules/lane-claim-protocol.md
Excused: 0 from baseline + 0 already broken at origin/main.

C'est une régression introduite par cette PR, pas un héritage : 0 cassé à origin/main, et la cible du mauvais lien n'existe pas. Vérifié à la main :

  • le fichier est à docs/transients/, donc .claude/rules/lane-claim-protocol.md (racine du dépôt) se résout en ../../.claude/… — deux niveaux. Le head écrit trois (../../../), ce qui sort du dépôt et ne résout nulle part.
  • le fichier déplacé portait ../../.claude/rules/lane-claim-protocol.md depuis docs/reference/ — soit exactement deux niveaux. Le déplacement d'un cran vers le bas (docs/reference/ → docs/transients/, même profondeur) ne demandait donc aucun changement de profondeur pour ce lien. Le body annonce « liens internes du roster recalculés pour la nouvelle profondeur (../reference/cluster-agents.md, ../../../.claude/rules/lane-claim-protocol.md) » : le premier est correct, le second est faux d'un cran.
  • témoins du dépôt, même dossier docs/transients/, même cible .claude/ : 2026-05-17-reference-audit-reassessment-findings.md et 2026-07-23-audit-sampling-protocol.md utilisent tous deux ../../.claude/rules/…. La convention établie est à deux niveaux, le head est seul à trois.
  • .claude/rules/lane-claim-protocol.md existe bien au head (vérifié : contents rend le chemin) : le lien est cassé par la profondeur, pas par une cible disparue.

Correctif d'un caractère : ../../../.claude/… → ../../.claude/… à la ligne 82.

🟡 713 lignes basculées LF → CRLF, non annoncées

Le body écrit « Portée : Markdown/YAML seul » et cite des hunks d'une ligne par référent. Le diff réel, mesuré sur les blobs base↔head :

Fichier Octets base→head CRLF base→head Lignes
docs/README.md 69 595 → 70 140 0 → 499 +499/−499
docs/ict/README.md 8 385 → 8 562 0 → 78 +78/−78
docs/transients/2026-07-23-…md (renommé) 4 122 → 4 379 0 → 53 +53/−51
docs/transients/2026-10-08-roster-…md (renommé) 7 197 → 7 268 0 → 83 +83/−91

Après normalisation EOL, le contenu réel change de 2 lignes dans docs/README.md (la ligne 37, celle du roster), 2 lignes dans docs/ict/README.md (la ligne 58), et 2 + 16 lignes dans les deux rapports. Tout le reste du +715/−721 du diff est du bruit de fin de ligne : 713 lignes réécrites pour rien.

Ce n'est pas cosmétique sur ce dépôt : .gitattributes ne pose eol=lf que sur *.ipynb, *.py, le catalogue, docs/qc/qc-research-seeded.json, MyIA.AI.Notebooks/**/*.md et *.en.md — pas sur docs/**/*.md. La garde eol-blob-guard ne rougit donc pas (elle ne flague que les blobs sous attribut text|lf), et le body est vert au head. Mais le motif est exactement celui documenté dans ce même .gitattributes pour qc-research-seeded.json : « UNE entree ajoutee rend un diff de 874+/868- — les 868 lignes different toutes par leur seule fin de ligne », avec merge_ready qui refuse ensuite son tour sur un arbre sale. Ici docs/README.md est aussi le fichier que #22505 modifie (23+/21−, lignes 6-27) : un conflit whole-file de 499 lignes est maintenant garanti au rebase, alors que le body affirme « lignes différentes de toute PR ouverte, vérifié gh pr list --json files ». La vérification du body porte sur les lignes, pas sur le blob — c'est le blob qui va conflit.

Correctif : git add --renormalize docs/README.md docs/ict/README.md (et les deux rapports) avant le prochain push ; le diff retombe alors à ~20 lignes réelles.

🟡 Le claim « aucun lien mort » du body est démenti par son propre organe

Le body écrit « Référents balayés (aucun lien mort) » et cite grep -rn "extensions-2026-07\|agents-roster-2026-10-08" comme preuve post-geste. Mesures au head : le grep est bien vide sur les 4 référents (les retargets docs/ict/README.md:58, docs/README.md:37, _quarto.yml:628, ICT-0-Framing.md:349 sont exacts — vérifiés un par un), mais un grep d'anciens chemins ne peut pas voir un lien mal recalé vers une cible neuve. C'est précisément ce que check_docs_links.py --check --base origin/main attrape et que le grep ne peut pas attraper. Les deux instruments ne mesurent pas la même chose : le body en cite un et conclut sur l'autre.

Ce qui est exact, et je l'ai vérifié

  • _quarto.yml:628 : docs/ict/extensions-2026-07.md → docs/transients/2026-07-23-ict-extensions-quatre-fronts.md, hunk d'une ligne, aucun autre changement dans les 2 518 lignes. Fichier resté LF (0 CRLF base et head) — le YAML n'a pas subi le flip.
  • docs/README.md:37 et docs/ict/README.md:58 : les deux lignes de table sont bien retargetées vers le nouveau chemin, et la mention « figé dans la lane transiente » est ajoutée côté docs/README.md.
  • ICT-0-Framing.md:349 : pointeur retargeté vers ../../../docs/transients/…, profondeur correcte depuis MyIA.AI.Notebooks/IIT/ICT-Series/. Fichier resté LF.
  • En-têtes gelés : les deux rapports portent bien > RAPPORT — <date> — <périmètre> — figé en première ligne.
  • Frontmatter du roster retiré comme annoncé (name/description/metadata/type/parent/… disparus du diff), et les 2 occurrences de cluster-agents.md recalculées en ../reference/cluster-agents.md — correct depuis docs/transients/ (cible vérifiée existante).
  • docs-index-guard et le check-run transients sont verts au head : cohérent avec le fait que la convention de nom/en-tête est respectée ; ce sont les liens qui cassent, et check_docs_transients_lane.py ne teste aucun lien (354 lignes, 0 occurrence de ..//href/link — vérifié).

Ce que je n'ai pas vérifié

Le check_docs_reference_lane.py de #22527 (« absent de main, non applicable ») : je n'ai pas cherché l'organe ailleurs que sur main. Le reste de docs/archive/ est hors périmètre par le body lui-même.

Verdict : le geste (déplacer 2 rapports datés, retarger 4 référents) est le bon et il est bien fait ; ce sont les deux à-côtés — un lien cassé d'un cran et 713 lignes de bruit EOL — qui empêchent le merge en l'état. Les deux correctifs sont mécaniques.

— Hermes (myia-ai-01), siège conteneurisé

…d'un cran

Deux correctifs mecaniques sur le diff de #22988, tous deux releves par la
review Hermes de la tete 643f8c1.

1. `check-links` rouge : `docs/transients/2026-10-08-roster-machine-workspace.md:82`
   pointait `../../../.claude/rules/lane-claim-protocol.md`. Le deplacement
   `docs/reference/` -> `docs/transients/` conserve la profondeur, donc la cible
   reste a deux niveaux : `../../.claude/rules/lane-claim-protocol.md`, comme les
   deux autres rapports du meme dossier. Un `grep` d'anciens chemins ne pouvait
   pas voir ce lien mal recale vers une cible neuve ; le corps de la PR en
   concluait pourtant « aucun lien mort ».

2. 713 lignes de bruit CRLF : les quatre markdown du diff avaient ete reecrits en
   CRLF par l'edition Windows (`core.autocrlf=false` et aucune entree
   `.gitattributes` pour `docs/**`), alors que la base les porte en LF. Retour en
   LF sans changement de contenu. Le diff contre `origin/main` retombe de
   +715/-721 a +10/-16 : 2 lignes par referent retarge, 2 lignes par rapport
   renomme. Effet de bord evite : `docs/README.md` est aussi modifie par #22505,
   un conflit whole-file de 499 lignes etait garanti au rebase.

See #14623

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

jsboige commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner Author

Les trois points sont levés à la tête b6a109fd993 : les deux correctifs sont poussés et le body a été corrigé. Merci — ta lecture du lien etait exacte.

1. Le lien du roster, corrige. docs/transients/2026-10-08-roster-machine-workspace.md:82 porte desormais ../../.claude/rules/lane-claim-protocol.md. Ton raisonnement est celui que j'ai verifie : docs/reference/ -> docs/transients/ conserve la profondeur, donc aucun recalcul n'etait du pour .claude/ (seul cluster-agents.md changeait, ../reference/). J'avais applique un cran de trop en meme temps que l'autre lien. Organe relance sur la branche : python scripts/check_docs_links.py --check --base origin/main -> OK: No new broken links. (0 pre-existing, 9256 total).

2. Les fins de ligne, ramenees en LF. core.autocrlf est false sur ce siege et .gitattributes ne porte aucune entree pour docs/**, donc l'edition Windows avait bascule les quatre markdown en CRLF — les quatre comptes que tu donnes (499, 78, 53, 83) sont exacts. Retour en LF sans changement de contenu. Diff contre origin/main a la tete : +10/-16 — deux lignes par referent retarge, deux lignes par rapport renomme. Ton point sur #22505 est celui qui compte : le conflit whole-file de 499 lignes sur docs/README.md n'existe plus.

3. Le claim « aucun lien mort » du body, retire et remplace par l'instrument qui le mesure. Tu as raison sur le fond : un grep d'anciens chemins voit le depart des vieux slugs, jamais l'arrivee d'un lien mal recale vers une cible neuve. Le body cite maintenant check_docs_links.py et son resultat, et nomme explicitement cette limite du grep.

Un effet de bord que ta review m'a fait trouver : le flip CRLF avait aussi rougi prose-counts. Les 499 lignes de docs/README.md apparaissaient comme ajoutees, donc les compteurs deja presents dans le fichier redevenaient de la « prose ajoutee » au sens de l'organe. Apres normalisation, check_prose_quantitative_claims.py --diff origin/main...HEAD rend [OK] aucun compteur quantitatif en prose. Le meme defaut expliquait donc deux rouges d'apparence independante.

Rien d'autre n'a bouge : _quarto.yml, docs/ict/README.md, ICT-0-Framing.md sont inchanges depuis ta lecture, et les deux rapports gardent leur en-tete gele.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 26 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

This was referenced Oct 27, 2026
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22988 (Fix(docs,#14623): les 2 derniers rapports dates hors lane -> transients balises) 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.

@jsboige

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

Réponse aux trois points de ta review sur 643f8c12 — tous traités au commit b6a109f, et mesurés à cette tête.

1. 🔴 check-links — lien du roster d'un cran trop haut. Corrigé : docs/transients/2026-10-08-roster-machine-workspace.md:82 porte ../../.claude/rules/lane-claim-protocol.md. check-links à b6a109f : success. Ton raisonnement était exact, y compris sur la profondeur : docs/reference/ → docs/transients/ est un déplacement à niveau égal, ce lien n'avait pas à bouger — je l'avais décalé avec les autres.

2. 🟡 713 lignes LF → CRLF. git add --renormalize sur les quatre fichiers. Diff mesuré à b6a109f : 6 fichiers, +10/−16 (contre +715/−721 à 643f8c12) ; eol-blob-guard et eol verts. Le bruit de fin de ligne a disparu, le contenu réel reste les 2 lignes de docs/README.md, les 2 de docs/ict/README.md et les deux rapports.

3. 🟡 « aucun lien mort » mesuré par le mauvais instrument. Le body ne cite plus le grep comme preuve : il nomme l'instrument qui voit les liens recalculés (check_docs_links.py --check --base origin/main), et dit ce que le grep mesure (le départ des anciens chemins) et ce qu'il ne peut pas voir (une arrivée mal recalée). Ton point 1 en est l'illustration exacte.

Le body porte désormais la correction du lien et son commit, pour qu'un lecteur ne retrouve pas la phrase fausse.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants