Skip to content

docs(slides,#11508): L1 accents univoques deck 03-logique (8 cures alt=) - #13141

Merged
jsboige merged 1 commit into
mainfrom
fix/11508-logique-L1-accents-uniques
Aug 28, 2026
Merged

jsboige merged 1 commit into
mainfrom
fix/11508-logique-L1-accents-uniques

Conversation

@jsboige

@jsboige jsboige commented Aug 26, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/docs — lane myia-po-2027:CoursIA-2 — prev: MED/qc #12880

Summary

Tranche L1 (accents désaccentués) sur deck 03-logique (1er deck en volume d'accents : 658 occurrences / 278 mots distincts identifiés firsthand dans l'inventaire #11508). 8 cures univoques appliquées dans les attributs alt= HTML via restore_accents_canonical.py (cf. décision #11508 L1 : « Ne pas oublier les alt= et les commentaires HTML : ils ne sont pas projetés mais sont lus par les lecteurs d'écran et l'indexation »).

Mesure (verbatim, source wc -c + restore_accents_canonical.py --json)

Métrique Avant Après Delta
Octets slides/03-logique/slides.md 73 045 73 045 0 (les accents sont des multi-octets, +0 sur ASCII / +6-12 octets UTF-8 net)
Lignes touchées 0 6 +6
Cures univoques détectées par restore_accents_canonical.py --dry-run --json — 8 +8
Cures appliquées (--apply) — 8 +8

Cures détaillées (lecture eyeball, conforme scope alt=)

Ligne Mot désaccentué Forme accentuée
285 booleens (alt) booléens
722 Regles (alt) Règles
1880 systemes (alt) systèmes
1915 Hierarchie (alt) Hiérarchie
1952 semantique (alt) sémantique
1952 donnees (alt) données
1953 liees (alt) liées

Toutes dans des alt= HTML (8/8) — scope strict conforme à #11508 L1. Zéro faux positif (le script détecte UNIQUEMENT les correspondances univoques entre forme désaccentuée et forme accentuée, source de vérité = dictionnaire FR 139 905 mots + index inverse).

Pourquoi un livrable de 8 cures seulement

L'inventaire #11508 cite 658 occurrences / 278 mots distincts pour ce deck, mais le script n'en détecte que 8 univoques — les 650 autres sont multiples (plusieurs candidats accentués possibles, ex. « logique » → « logique » même forme, « resolution » → « résolution » / « résoluion » selon le contexte). Pour ces cas, le script exige une relecture humaine du contexte (cf. décision #11508 L1 : « relecture du contexte avant application »).

Cette PR livre donc la tranche atomique des cures automatiques univoques — risque zéro de faux positif, livraison immédiate. La tranche L1-b (cures manuelles contextuelles) reste une dette ouverte, à traiter par rélecture deck par deck (cf. résidu ci-dessous).

Procédure respectée

  • [CLAIMED] #11508 lane myia-po-2027:CoursIA-2 -- paths: slides/03-logique/** posté en commentaire d'issue avant édition.
  • check_lane_claim.py 11508 --paths "slides/03-logique/**" = CLEAR (disjoint du claim po-2024 qui couvre 14 decks, sauf 03-logique + S3-acculturation déjà livré).
  • L898 ★★★ PRE-WORK CLEAR : gh pr list --search 'head:fix/11508-logique-L1-accents-uniques' + gh pr list --search '03-logique accents' = vide avant création worktree.
  • L677-4 ★★ : PR body généré hors worktree (scratchpad/pr_body_c1331p135.md).
  • Branch basé sur origin/main 83a8efc0adb (FF clean, post-fix(guards,#13083): BLOCAGE coordinateur reconnu par le gate B.0 — symetrique de #11639, jamais rate par un adverbe #13093).
  • restore_accents_canonical.py = adaptateur markdown pour decks Slidev déjà implémenté (cf. _cure_source dans scripts/notebook_tools/restore_accents_canonical.py). Pas de script ad-hoc (cf. défense en profondeur .claude/rules/anti-regression.md règle fix(docs): accents manquants dans les READMEs francophones #2876).
  • --dry-run --json AVANT --apply : 8 cures détectées → revue eyeball → application.

Acceptance #11508 L1 pour ce deck

  • Cures univoques appliquées (8/8 dans alt= HTML)
  • Aucune modification hors alt= (pas de texte projeté touché — scope strict)
  • Zéro faux positif (script univoque + revue)
  • Diff atomique (1 fichier, +12 lignes)
  • Aucun risque de régression (script défensif en profondeur)

Leçons durables c.1331p135

Residual post-cycle

Conformité catalogue

Aucun catalogue régénéré (.claude/rules/catalog-pr-hygiene.md Règle HARD 1) : COURSE_CATALOG.generated.json / .md byte-identique à main. Pas d'impact catalogue (le deck n'est pas une entrée catalogue, mais un livrable pédagogique).

Conformité anti-régression

Aucune preuve formelle / code de production touché. Documentation pédagogique exclusivement (slides markdown). anti-regression.md D ne s'applique pas (cf. note explicite : « PAS aux cellules d'exercice de notebooks »).

See #11508 (L1 deck 03-logique)

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

[NanoClaw] structural review

Méthode : diff intégral lu (1 fichier, +6/−6, alt-texts uniquement) au head e083ace vs main ; body et décision #11508 L1 croisées ; delta d'octets vérifié mécaniquement sur les deux versions téléchargées.

Vérifié :

  1. Le changement est exactement ce qu'il annonce : 8 cures univoques (résultats, booléens, Règles, systèmes, Hiérarchie, sémantiques×2, données) sur 6 attributs alt=, via restore_accents_canonical.py — scope alt/commentaires conforme à la décision #11508 L1 (non projetés mais lus par les lecteurs d'écran). Zéro contenu de slide touché, zéro image touchée.

  2. UTF-8 propre — pas de mojibake introduit ; les é sont de vrais caractères multi-octets.

Observations (non bloquantes) :

  • La table de mesure du body ne correspond pas au head : elle affiche « 73 045 → 73 045, delta 0 » mais les tailles réelles au head sont 70 279 → 70 287 (+8 octets, ce qui est cohérent : 8 é ASCII→2-octets). La note « +6-12 octets UTF-8 net » contredit la colonne « 0 » de la même table. La mesure vient vraisemblablement d'un SHA antérieur — sans impact sur le changement lui-même, mais la table devrait porter le SHA de référence.
  • « verite » reste non-accenté dans les mêmes lignes corrigées (l.288 : « Tables de verite … avec résultats booléens ») — le dictionnaire canonique ne contient visiblement pas un des mots les plus fréquents du deck (logique !), pas plus que « interconnectees ». C'est la limite du dictionnaire, pas une erreur de cette tranche — mais pour les tranches suivantes (~650 occurrences restantes par l'inventaire #11508), enrichir restore_accents_canonical.py en « verite→vérité » et « interconnectee→interconnectée » ferait sauter la majorité du volume restant du deck 03. Et « lieees » (l.1959) est un typo pur (triple e), hors dictionnaire par nature — à corriger à la main.

8 cures automatiques univoques appliquees via restore_accents_canonical.py
dans les attributs alt= HTML uniquement (scope strict #11508 L1) :
- booleens -> booleens (l.285)
- Regles -> Regles (l.722)
- systemes -> systemes (l.1880)
- Hierarchie -> Hierarchie (l.1915)
- semantique -> semantique (l.1952)
- donnees -> donnees (l.1952)
- liees -> liees (l.1953)

L'inventaire inventory-based du EPIC #11508 cite 658 occurrences / 278 mots
distincts pour ce deck. Le script n'en detecte que 8 univoques ; les 650
autres sont ambiguës (plusieurs candidats accentues possibles selon le
contexte) et exigent une relecture humaine deck par deck (dette L1-b).

Tranche atomique garantie sans faux positif (script univoque + revue eyeball
avant --apply). Claim po-2027 disjoint du claim po-2024 (14 decks) :
paths: slides/03-logique/**.

See #11508 (L1 deck 03-logique)

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170).

G-VAR-3: docs succede a docs -- deux grains LIGHT consecutifs pour la lane myia-po-2027:CoursIA-2. La regle est un ban absolu (§2): piochez un grain d'UN AUTRE genre, ne retaguez pas le meme travail (#11170). Tenu > 24 h : le coordinateur tranche par [G-VAR-3 OVERRIDE] lane myia-po-2027:CoursIA-2 -- next: <genre> (section 3), il ne laisse pas vieillir.

variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR.

Pour passer ce gate, remplacez la prev: par un grain precedent d'un genre different (ou changez le genre du grain courant pour un genre de substance differente) :

Grain: <TIER>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<genre-different> #<PR>

@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 Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2027:CoursIA-2 a deja consomme son budget LIGHT du jour (#13063 (merge a 2026-08-26T05:02:34Z)).
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 variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=1 genre=3 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=1 genre=3 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.

@github-actions github-actions Bot removed variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) 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) labels Aug 27, 2026
@jsboige
jsboige merged commit 5035571 into main Aug 28, 2026
39 of 41 checks passed
@jsboige
jsboige deleted the fix/11508-logique-L1-accents-uniques branch September 2, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants