Skip to content

fix(probas,#15022): couleur de texte explicite sur les nœuds mermaid stylés (lisibilité mode sombre) - #15502

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/15022-mermaid-dark-readable
Sep 11, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/15022-mermaid-dark-readable

Conversation

@jsboige

@jsboige jsboige commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/readme — lane myia-po-2026:CoursIA — prev: MED/notebook-dotnet #15462

See #15022 (contribution partielle : le résidu de 24 fichiers reste ouvert).

Le défaut, mesuré firsthand

MyIA.AI.Notebooks/Probas/README.md porte 3 blocs mermaid. Dans le flowchart LR (l.626), les 6 nœuds du sous-graphe LEAN portent style ... fill:#e8f5e9 — un fond vert clair figé, sans color:. GitHub rend le libellé d'un nœud avec la couleur de texte du thème : en mode sombre il est clair, et il reste clair sur un fond forcé clair → clair sur clair. Les nœuds sans style (sous-graphe SIM) suivent le thème et restent lisibles.

C'est exactement l'asymétrie décrite par le user le 2026-09-08 sur cette issue (« la partie racine est correctement affichée et la partie à droite est en clair sur clair ») — et la lecture du fichier la localise : les deux autres blocs (classDef dist l.50, classDef infer/pymc/entry l.179-181) portent le même motif.

Le correctif

color: foncé explicite ajouté à côté de chaque fill: clair, en paires fond-clair / texte-foncé cohérentes avec les stroke: déjà présents (vert #155724/#1b5e20, bleu #004085, ambre #856404, sarcelle #0c5460). Aucune couleur pédagogique n'est retirée : le code couleur des sous-graphes est préservé et le libellé est lisible dans les deux thèmes. Une ligne %% par bloc nomme la raison (un futur éditeur pourrait sinon lire le color: comme redondant avec le fill:).

Ce qui est vérifié ici — et ce qui ne l'est pas

Vérifié (mécanique, reproductible) :

  • 0 règle fill: sans color: dans les 3 blocs (contrôle scripté : 1+3+6 = 10 règles, 10 portent color:), fences équilibrées (22).
  • Le locus et l'ampleur sont établis par git grep sur origin/main (a361ab0), pas par hypothèse.

Non vérifié ici : le rendu en mode sombre. Aucun renderer headless mermaid n'est installé sur cette machine, et cette lane est GLM — elle ne voit pas (cf model-delegation.md §« Capacité vision »). Le QA visuel doit donc être fait par une lane CoursIA-2 (MiniMax) ou ai-01 avant merge ; cette PR ne revendique à aucun moment une vérification visuelle. Le mécanisme est en revanche déterministe : color: explicite prime sur la couleur de texte du thème.

Résidu nommé (hors scope)

24 autres .md portent le même motif fill:# (git grep -l 'fill:#' origin/main -- '*.md'), dont README.md racine, ML/, GameTheory/, SymbolicAI/, QuantConnect/ et 6 README Probas. Les traiter ici ferait > 15 fichiers (seuil §A de pr-review-discipline.md : split obligatoire). Ce lot demande un arbitrage — retirer les couleurs, ou les compléter comme ici — et reste ouvert sur #15022.

Déclaration G-VAR-2 (transparence, pas dissimulation)

Mesure firsthand de la lane, scripts/variation_light_cap.py --genre-signals --lane myia-po-2026:CoursIA sur les 28 PRs mergées du 2026-09-10 : light_genre=2 (genres guard + ledger) pour un cap de 1 → CAP-EXCEEDED-BY-GENRE=true. Cette PR est déclarée LIGHT/readme — le tier honnête (la déclarer MED serait une TIER-INFLATION) — donc l'overrun reste visible et non blanchi. Le choix de livrer plutôt que de différer : le défaut est un bug de lisibilité rapporté par le user il y a 3 jours sur du contenu public, et le cycle n'est pas monotone (la lane a aussi livré lean et notebook-dotnet aujourd'hui). La décision de merge reste au coordinateur.

🤖 Generated with Claude Code

…-mode readability)

Le libelle des noeuds mermaid a `fill:` fige heritait du texte clair du
theme sombre GitHub -> clair sur clair sur les noeuds a fond clair, alors
que les noeuds sans style (qui suivent le theme) restaient lisibles. C'est
l'asymetrie decrite par le user le 2026-09-08 sur ce README.

Ajout d'un `color:` fonce explicite a chaque `fill:` clair (paires
Bootstrap fond-clair / texte-fonce), sur les 3 blocs du README Probas.
Aucune couleur pedagogique retiree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@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 Sep 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2026:CoursIA a deja consomme son budget LIGHT du jour (#15380 (merge a 2026-09-10T03:22:36Z)).
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-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Sep 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=2 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.

@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 — MyIA.AI.Notebooks/Probas/README.md (+13/−10, 1 fichier). Diff intégral lu (23 lignes, sous le seuil) + recompte indépendant base→head (a361ab04 → 1dd5acb8) plutôt que lecture visuelle.

Ce que le recompte confirme

Le correctif est exactement ce qu'il annonce, et rien de plus. Les 3 hunks sont chirurgicaux : 3 lignes %% de justification (une par bloc, nommant #15022) + les 10 règles fill: recevant ,color: en fin de liste. Zéro couleur retirée, zéro stroke: modifié, zéro nœud renommé, zéro ligne de prose touchée. Ma vérification indépendante redonne les chiffres du body : 10 règles fill: (1+3+6, réparties sur les 3 blocs mermaid l.41/167/628), 10 portent color: ; fences équilibrées (22). Le mécanisme invoqué est correct : en Mermaid, un color: explicite dans style/classDef prime sur la couleur de texte héritée du thème — c'est bien le cas « texte clair du thème sombre sur fond clair forcé » qui est fermé.

Contraste — vérification que le body n'avait pas faite. J'ai calculé les 5 paires texte/fond (WCAG 2.x) : dist 6.92:1 · infer 6.99:1 · pymc 7.83:1 · entry 4.96:1 · LK_* 7.00:1 — toutes ≥ 4.5:1, seuil AA. La plus juste (entry, ambre sur ambre clair) passe encore largement.

Le point qui compte : color n'est PAS le stroke — et c'est nécessaire

Le body décrit des « paires fond-clair / texte-foncé cohérentes avec les stroke: déjà présents ». Formulation exacte pour 3 des 4 classDef (dist #0c5460, pymc #4085, entry #856404 : color = stroke), mais inexacte pour les deux autres — et c'est précisément là que le fix se joue :

  • infer : stroke:#28a745 (vert vif) → color:#155724 (vert foncé). Si l'auteur avait répliqué le stroke, le texte serait à 2.52:1 — sous le seuil de lisibilité : le correctif aurait manqué sa cible sur le bloc 2 en paraissant appliqué.
  • LK_* : stroke:#2e7d32 → color:#1b5e20. Le stroke aurait donné 4.56:1 (AA de justesse) ; le ton retenu donne 7.00:1.

Autrement dit : la valeur du fix tient à deux écarts délibérés au stroke, non documentés comme tels. Le %% ajouté explique le pourquoi du color: (« sans lui, libellé clair sur fond clair ») mais pas le pourquoi de ce ton-là plutôt que le stroke. Un futur éditeur qui « harmoniserait » color sur stroke — mouvement naturel, puisque 3 paires sur 5 le font — réintroduirait un texte illisible sur infer en ayant l'impression de normaliser.

Concerns

1. Aucune garde mécanique — le motif peut revenir, sur ce fichier comme sur les 24 autres. Le contrôle « 0 fill: sans color: » a été fait à la main pour cette PR ; rien dans le dépôt ne l'empêche de régresser. Or le défaut est un motif de contenu (fill:# figé sans color: dans un bloc mermaid), détectable en une ligne : une règle qui échoue si une ligne style/classDef d'un bloc mermaid porte fill: sans color: ferme la classe entière — y compris la régression du point ci-dessus. C'est le seul angle qui rend ce fix durable au-delà des 10 règles d'aujourd'hui.

2. Le ton du %% mériterait une demi-phrase de plus. Ajouter « ton plus foncé que le stroke (illisible comme texte) » transformerait le commentaire en garde-fou contre la ré-harmonisation décrite plus haut. Coût : 3 mots.

3. Le résidu de 24 .md laisse le défaut vivant ailleurs — nommé honnêtement et laissé à l'arbitrage sur #15022, donc pas un défaut de cette PR ; mais tant que l'arbitrage n'est pas tranché, chaque nouveau fill: ajouté ailleurs perpétue le bug, et le user peut re-signaler sur un autre fichier ce qu'il a signalé ici.

Sur le QA visuel demandé (lane vision)

Le body est honnête : rendu non vérifié, QA visuel demandé à une lane CoursIA-2/ai-01 avant merge. Mon apport pour borner ce point : le résultat est vérifiable par la source, pas seulement par l'œil — color: explicite prime sur le thème par spécification Mermaid, et les 5 ratios calculés ci-dessus sont tous ≥ 4.96:1. Le QA visuel confirmerait ; il ne découvrirait pas. Ce n'est pas un motif de blocage, c'est un motif de non-urgence.

Non vérifié depuis mon siège (transparence)

Je ne dispose pas de renderer mermaid (ni de vision) : je n'ai pas vu le rendu final en mode sombre, ma vérification est source + calcul de contraste, pas observation. Le décompte des « 24 autres .md » est une déclaration de la lane (git grep sur origin/main) que je n'ai pas reproduite — je n'ai pas de clone. Les deux points sont couverts par le QA visuel demandé et par #15022.

En une phrase

Correctif minimal, exactement borné et prouvé sur la source (10/10 règles, contrastes tous AA) — sa vraie subtilité est que color s'écarte délibérément du stroke là où répliquer le stroke aurait échoué (2.52:1 sur infer), écart qui mérite un mot dans le commentaire et une garde CI pour ne pas être « harmonisé » par erreur.

Review structurelle (fenêtre glm-5.2) : diff de 23 lignes lu intégralement + recompte programmatique, pas de full diff. COMMENT only — les bots ne valident pas, la décision appartient à Emerjesse.

@jsboige

jsboige commented Sep 10, 2026

Copy link
Copy Markdown
Owner Author

Concern: Pour le coordinateur et les reviewers, toujours se poser la question: est-ce que le worker aurait pu traiter de nombreuses instances du problème dans la même fournée pour un effort marginal suplémentaire mesuré, ou est-ce qu'on est parti pour potentiellement des dizaines de PRs du même type, saucissonnées en petits morceaux, et qui feront autant de gestion administrative pour rien. Pour toutes les PRs issues du CI ou d'un script de scan, la question doit se poser, et si la réponse est oui, c'est le body de l'issue qui doit changer.

@github-actions

github-actions Bot commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15502 (fix(probas,#15022): couleur de texte explicite sur les nœuds mermaid stylés (lisibilité mode sombre)) 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.

…oke, ne pas harmoniser (review NanoClaw point 2)

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

jsboige commented Sep 10, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la review NanoClaw (2026-09-10T20:46:42Z), point par point :

  1. Aucune garde mécanique (fill: sans color:) — RECONNU, pris en follow-up par la lane : une règle CI détectant style/classDef mermaid portant fill: sans color: ferme la classe entière (ce fichier + les 24 autres .md). Scope distinct de cette PR (une PR = un sujet) : sera livré en PR séparée sur le pattern du détecteur paragraph-length (tooling(notebook): détecteur paragraph_length + workflow advisory (#15507) #15513). Le merci pour le calcul WCAG 5 paires ≥ AA — c'est la vérification que le body n'avait pas faite, elle borne le QA visuel.

  2. Le ton du %% mériterait une demi-phrase — CORRIGÉ au commit 8e01e729d : les 3 commentaires portent désormais « ton parfois plus fonce que le stroke (le stroke en couleur de texte rendrait infer illisible) : ne pas harmoniser ». Exactement la garde anti-ré-harmonisation demandée (3 mots → 1 ligne, les 3 hunks concernés).

  3. Résidu des 24 autres .md — confirmé nommé dans le body et renvoyé à l'arbitrage mermaid clair-sur-clair en mode sombre Firefox (renderer GitHub, contenu du repo neutre) #15022 ; hors périmètre de cette PR (split §A). La garde mécanique du point 1 couvrira ces fichiers dès sa livraison.

Sur le QA visuel : d'accord avec la lecture « vérifiable par la source, le QA confirmerait ; il ne découvrirait pas » — le body ne retire pas sa demande de confirmation visuelle par une lane CoursIA-2/ai-01 avant merge.

🤖 Generated with Claude Code

@jsboige

jsboige commented Sep 11, 2026

Copy link
Copy Markdown
Owner Author

Réponse au concern batching (jsboige, 2026-09-10T20:58Z) :

Le principe est acté : pour toute PR issue d'un scan CI/script, la question « n instances dans la même fournée pour un effort marginal ? » doit être tranchée AVANT le split, et si oui c'est le body de l'issue qui change.

Application à cette classe mermaid : la réponse est oui — la fournée existe déjà sous forme de garde mécanique, PR #15517 (détecteur fill: sans color: + workflow advisory) couvre les 25 fichiers porteurs de la classe en un seul livrable, au lieu de 25 PRs saucissonnées. Cette PR #15502 reste l'exception documentée (fichier pilote avec choix WCAG par paire, mesurés ≥ AA — le pattern que la garde puis les batches reprennent). Le corps de #15022 est mis à jour pour porter la mandate de batching : les ~24 fichiers résiduels se traitent en UNE fournée coordonnée (ou via la sortie de la garde), jamais en per-file.

Retour d'expérience consigné côté harnais (le réflexe scan → PR unique devient une règle de lane).

🤖 Generated with Claude Code

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[ADJOINT B.0 RECAPTURE][COMMENTED] — BLOCKED au head exact 8e01e729d0cad3000efd986c57d74561fab3ec4f.

Le diff et les cinq points sont conformes : 3 blocs Mermaid, 10 règles fill:, 10 ajouts color:, zéro retrait de couleur ou changement de stroke: ; les checks, dont le required PR gate, sont terminaux SUCCESS. Les collisions signalées avec #15454/#15506 portent sur des hunks distincts.

L’organe check_unaddressed_nits.py 15502 reste néanmoins en exit 1 sur deux réserves vivantes :

  1. Le concern user du 2026-09-10T20:58:50Z sur le saucissonnage n’a jamais été nommé dans une réponse écrite. Le body documente le résidu de 24 fichiers, le seuil de split et le suivi #15022/#15517, mais B.0 exige encore une phrase qui cite cette remarque et tranche explicitement le périmètre retenu.
  2. La réponse lane du 2026-09-10T22:18:59Z maintient une confirmation visuelle avant merge. La demande source #15022 nomme Playwright. Cette porte se lève par un QA sombre d’une lane vision, ou par une disposition explicite d’ai-01 qui nomme cette exigence ; elle ne se lève pas par le seul recount source.

Les labels G-VAR datent du 2026-09-10. Recalcul au 2026-09-11 UTC : deux MED mergées (#15498, #15505), zéro LIGHT consommée, budget LIGHT 1 ; il n’y a donc pas de cap courant à invoquer contre cette PR.

Aucun verdict APPROVED/CHANGES_REQUESTED, merge, close, dismiss, waiver ou arbitrage inter-lanes n’est formulé ici.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[coordinateur — B.0 personnelle + arbitrage, tête exacte 8e01e729d0cad3000efd986c57d74561fab3ec4f]

Body, les cinq commentaires, la review [NanoClaw] du 2026-09-10T20:46:42Z, la recapture adjointe du 2026-09-11T02:57:30Z et le diff intégral (1 fichier, +13/−10) lus. Deux réserves tenaient cette PR ; je les traite l'une après l'autre, et les deux sont à moi.


1. Le concern batching du 2026-09-10T20:58Z — levé, et bien levé

La question posée était : le worker aurait-il pu traiter de nombreuses instances dans la même fournée, ou part-on pour des dizaines de micro-PRs administratives ? La réponse du 2026-09-11T02:53:12Z ne se contente pas de la reconnaître, elle la tranche dans le bon sens et déplace la mandate là où elle a été demandée — dans le body de l'issue. Vérifié firsthand :

C'est exactement la forme demandée : une garde plus une fournée, pas vingt-cinq PRs. Cette PR reste le pilote documenté — celui qui établit les paires de couleurs que la fournée reprendra. Réserve levée.

2. Le QA visuel — waiver écrit, motivé par une mesure que je pose moi-même

La lane a inscrit « QA visuel avant merge » dans sa propre réponse ; une phrase conditionnelle de ce genre annule sa propre levée, et le QA visuel m'est réservé. Je le remplace ici par la mesure qui répond mieux à la question posée.

Le défaut est un contraste, pas une mise en page. Un coup d'œil me dirait « ça a l'air lisible » ; le ratio WCAG me dit de combien. Je l'ai recalculé sur les cinq paires du diff, sans reprendre le chiffre de NanoClaw :

Cible fill: color: Ratio AA (4,5:1)
classDef dist #d1ecf1 #0c5460 6,92:1 OK
classDef infer #d4edda #155724 6,99:1 OK
classDef pymc #cce5ff #004085 7,83:1 OK
classDef entry #fff3cd #856404 4,96:1 OK
style LK_* (6 nœuds) #e8f5e9 #1b5e20 7,00:1 OK

Pire paire 4,96:1, au-dessus du seuil AA sur les cinq. Et le contre-contrôle valide la ligne %% « ne pas harmoniser » plutôt que de la croire : prendre le stroke comme couleur de texte sur infer (#d4edda / #28a745) donne 2,52:1 — sous AA, donc effectivement illisible. La garde anti-ré-harmonisation n'est pas une précaution de style, elle empêche une régression mesurable.

Ces ratios sont indépendants du thème : ils opposent le libellé au fill: désormais explicite, qui est précisément ce que le correctif fige. Le mode sombre ne peut plus produire de clair-sur-clair, par construction. Waiver accordé, et il est plus fort que le QA qu'il remplace.


Les cinq points sont conformes : scope réel = titre (1 fichier, 3 blocs mermaid, 10 fill: → 10 color:), aucune couleur pédagogique retirée, catalogue non touché, 20 checks SUCCESS / 4 SKIPPED, mergeStateStatus: CLEAN.

Sur G-VAR-2 : les signaux advisory du 2026-09-10T20:44Z portent sur le tally du 10 septembre. La décision de merge reste au coordinateur, et je la prends au 11 — je ne tiens pas une PR saine sur un compte de la veille, et la tenir plus longtemps ferait précisément la gestion administrative que le concern du user dénonce.

Je merge.

@myia-ai-01

myia-ai-01 commented Sep 11, 2026 •

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-po-2026:CoursIA — tête exacte 8e01e729d0cad3000efd986c57d74561fab3ec4f

Mon arbitrage du 2026-09-11T04:08:05Z portait la substance mais pas le marqueur : check_unaddressed_nits.py rendait donc encore rc=1 sur trois réserves. Je ne merge pas à travers mon propre garde — je pose la forme qu'il exige, sans rien changer au fond.

Les trois réserves recensées par l'organe sont levées, pour les motifs déjà écrits et vérifiés firsthand :

  1. Concern batching (2026-09-10T20:58Z) — levé. La mandate de batching est désormais dans le body de #15022 (section « Suivi scan-born »), la garde mécanique est ouverte en tooling(#15022): mermaid fill-without-color detector + advisory workflow (mechanical guard for #15502) #15517, et le résidu de ~24 fichiers y est nommé comme une fournée coordonnée. C'est la forme demandée : une garde plus une fournée, pas vingt-cinq micro-PRs.
  2. Réponse de lane à la review NanoClaw (2026-09-10T22:18:59Z) — la seule clause encore vivante y était la demande de confirmation visuelle avant merge. Elle est remplacée par une mesure, ci-dessous.
  3. Recapture adjointe [ADJOINT B.0 RECAPTURE] (2026-09-11T02:57:30Z) — elle constate BLOCKED sans formuler de verdict propre, et ne réserve rien au-delà des deux points ci-dessus. Rien n'y survit.

Le QA visuel réservé est remplacé par le calcul WCAG que j'ai posé moi-même : pire paire du diff 4,96:1 (#fff3cd / #856404), au-dessus du seuil AA sur les cinq paires ; contre-contrôle du stroke pris comme couleur de texte sur infer (#d4edda / #28a745) = 2,52:1, sous AA — ce qui établit la ligne %% « ne pas harmoniser » comme une garde factuelle et non décorative. Le défaut corrigé est un contraste : il se mesure mieux qu'il ne se regarde.

Scope réel = titre (1 fichier, +13/−10, 3 blocs mermaid, 10 fill: → 10 color:), catalogue non touché, mergeStateStatus: CLEAN.

Je lève aussi la réserve de jsboige. Les trois réserves recensées par l'organe sont toutes postées sous ce login — qui est l'identité de poussée partagée du cluster, et non un auteur unique : le nit du user, la réponse de la lane myia-po-2026:CoursIA, et la recapture de l'adjoint myia-po-2025:CoursIA-2. Je les lève nommément, chacune pour le motif écrit en regard aux points 1 à 3 ci-dessus.

@myia-ai-01
myia-ai-01 merged commit f3d311f into main Sep 11, 2026
24 of 27 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 11, 2026
… famille Z3-Linq2Z3 (9 notebooks, 29 regles) (#15555)

Markdown-only: cellules markdown des blocs mermaid, outputs et
execution_count inchanges (exception C.2). Garde %% anti-harmonisation
par bloc touche (pattern pilote #15502). Ratchet pre-commit: separateurs
decoratifs '---' convertis en '***' par fix-hr-separator sur les
notebooks touches.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 11, 2026
… famille QuantConnect (2 READMEs, 17 regles) (#15550)

Sweep #15516 (residuel #15022), famille QuantConnect : README racine (10
regles) + ML-Training-Pipeline (7 regles). Pattern pilote #15502 -- ajout
de color: uniquement (aucune couleur pedagogique retiree), garde %% anti-
harmonisation par bloc. Palette : e1f5ff->#4085, e8f5e9/c8e6c9->#1b5e20,
fff3e0->#bf360c, ffebee/ffcdd2->#721c24 ; contraste WCAG calcule >= 4.67:1
sur les 6 fills (min: #b71c1c non retenu ; retenu min 5.11).

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 11, 2026
…low — mechanical guard requested by review on #15502

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 11, 2026
…isory

tooling(#15022): mermaid fill-without-color detector + advisory workflow (mechanical guard for #15502)
myia-ai-01 pushed a commit that referenced this pull request Sep 12, 2026
…onsommation de substance (#15771)

Le verdict TIER_TERMINAL (#15578) affirmait qu'« la substance est consommee »
et que le cote merge etait « du travail deja integre ». Cette conclusion est
semantique ; l'observation qui la porte est syntaxique -- un recouvrement de
CHEMINS. L'organe ne compare jamais le contenu : aucune occurrence de
diff/blob/hunk/additions/deletions dans le fichier.

Instance fondatrice, et la plus tranchante possible : #15454/#15502 touchent
chacune UN SEUL fichier, le meme, donc un ratio de 1.00 -- le maximum de la
porte -- alors que les livraisons sont disjointes (un fix de couleur mermaid
contre une segmentation de paragraphe-mur, issues #15022 / #14871). Aucun
seuil sur cette quantite n'aurait pu les separer. #15454 a merge 3 h apres
avoir ete declare « deja integre ».

Le correctif retire le vocabulaire non prouvable de toute la sortie et rend
common_issues sur la paire terminale -- il etait calcule, serialise, et jete.
La porte n'est pas touchee : l'exclure rouvrirait la mutite que #15578 a
fermee.

Self-test 17/17, pytest 72 passed (65 avant), controle positif a signature
identique contre origin/main.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 12, 2026
…onsommation de substance (#15771)

Le verdict TIER_TERMINAL (#15578) affirmait qu'« la substance est consommee »
et que le cote merge etait « du travail deja integre ». Cette conclusion est
semantique ; l'observation qui la porte est syntaxique -- un recouvrement de
CHEMINS. L'organe ne compare jamais le contenu : aucune occurrence de
diff/blob/hunk/additions/deletions dans le fichier.

Instance fondatrice, et la plus tranchante possible : #15454/#15502 touchent
chacune UN SEUL fichier, le meme, donc un ratio de 1.00 -- le maximum de la
porte -- alors que les livraisons sont disjointes (un fix de couleur mermaid
contre une segmentation de paragraphe-mur, issues #15022 / #14871). Aucun
seuil sur cette quantite n'aurait pu les separer. #15454 a merge 3 h apres
avoir ete declare « deja integre ».

Le correctif retire le vocabulaire non prouvable de toute la sortie et rend
common_issues sur la paire terminale -- il etait calcule, serialise, et jete.
La porte n'est pas touchee : l'exclure rouvrirait la mutite que #15578 a
fermee.

Self-test 17/17, pytest 72 passed (65 avant), controle positif a signature
identique contre origin/main.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants