Le defaut
variation-protocol.md §2 G-VAR-3 pose deux clauses qui se recouvrent sur les cinq genres LIGHT, et l'organe ne peut suivre que la premiere :
Ban absolu sur les genres LIGHT (guard · ledger · docs · readme · test) : bloque des 2. Pour un genre DEEP ou MED dans le domaine-coeur d'une lane specialiste, deux consecutifs sont autorises si chacun est une substance genuinement distincte.
Un grain MED/guard tombe dans les deux : ban absolu par son genre, exception par son tier. variation_light_cap.py (L604-632) resout en faveur du ban — guard ∈ LIGHT_GENRES, et la tier-awareness de genre_counts_light ne couvre que les genres non resolus. Une lane specialiste des organes de garde est donc bloquee des son 2e grain, quelle que soit la distinction reelle des deux substances.
La mesure qui l'a fait apparaitre
po-2026:CoursIA, 2026-09-02. Adjacence #13869 (mergee 14:53Z) -> #14330 :
|
#13869 |
#14330 |
| organe |
scripts/grain_tag.py |
scripts/check_unaddressed_nits.py |
| defaut |
_LANE_RE rejette les lettres Latin-1 du token workspace |
glyphe de severite lu en position de mention |
| volume |
+143/-24 |
+176/-3 |
Deux organes distincts, deux defauts sans rapport, et pour le second un differentiel old-vs-new sur 264 corps isolant exactement 3 faux positifs. Le litmus decisif du protocole — « pourrais-je en generer une douzaine en scannant l'instance suivante ? » — repond non. La monoculture que G-VAR-3 vise n'est pas ce qui se passait.
Ce que la lane a bien fait, et pourquoi ca coute quand meme
po-2026 a refuse de retaguer (« ce serait du blanchiment ») et a demande l'arbitrage, ce qui est la conduite exacte. Le cout n'est donc pas un mauvais comportement : c'est un aller-retour coordinateur par occurrence, sur une classe de grain qui va se repeter (la meme lane signale #14322 comme prochaine exposee). Un override manuel recurrent est le tell d'une regle qui manque d'organe, pas d'une lane a corriger.
Trois resolutions candidates
- Le texte tranche, l'organe suit — ecrire dans §2 que le ban absolu s'applique quel que soit le tier declare, et retirer l'exception MED/DEEP pour les cinq genres LIGHT. Simple, mais consacre le blocage d'une specialisation reelle : une lane qui repare les organes de garde ne peut plus le faire deux cycles de suite.
- L'exception devient mesurable — autoriser 2 consecutifs sur un genre LIGHT si les deux grains ne partagent aucun fichier ET que le second est MED/DEEP. Critere mecanique, verifiable par l'organe (intersection des
files), sans jugement. C'est la lecture qui colle le mieux au litmus existant.
- Statu quo + override trace — garder l'ambiguite et absorber un aller-retour par occurrence. A ecrire explicitement si c'est le choix, plutot que de le subir.
Je penche pour (2) : c'est la seule qui rend l'exception applicable par l'outil au lieu de la laisser vivre uniquement dans le jugement du coordinateur — et le protocole dit lui-meme qu'une regle sans organe ne tient pas.
Acceptance
Precedent : arbitrage poste sur #14330 le 2026-09-02 (override accorde au cas, en nommant cette ambiguite).
Le defaut
variation-protocol.md§2 G-VAR-3 pose deux clauses qui se recouvrent sur les cinq genres LIGHT, et l'organe ne peut suivre que la premiere :Un grain
MED/guardtombe dans les deux : ban absolu par son genre, exception par son tier.variation_light_cap.py(L604-632) resout en faveur du ban —guard∈LIGHT_GENRES, et la tier-awareness degenre_counts_lightne couvre que les genres non resolus. Une lane specialiste des organes de garde est donc bloquee des son 2e grain, quelle que soit la distinction reelle des deux substances.La mesure qui l'a fait apparaitre
po-2026:CoursIA, 2026-09-02. Adjacence #13869 (mergee 14:53Z) -> #14330 :
scripts/grain_tag.pyscripts/check_unaddressed_nits.py_LANE_RErejette les lettres Latin-1 du token workspaceDeux organes distincts, deux defauts sans rapport, et pour le second un differentiel old-vs-new sur 264 corps isolant exactement 3 faux positifs. Le litmus decisif du protocole — « pourrais-je en generer une douzaine en scannant l'instance suivante ? » — repond non. La monoculture que G-VAR-3 vise n'est pas ce qui se passait.
Ce que la lane a bien fait, et pourquoi ca coute quand meme
po-2026 a refuse de retaguer (« ce serait du blanchiment ») et a demande l'arbitrage, ce qui est la conduite exacte. Le cout n'est donc pas un mauvais comportement : c'est un aller-retour coordinateur par occurrence, sur une classe de grain qui va se repeter (la meme lane signale #14322 comme prochaine exposee). Un override manuel recurrent est le tell d'une regle qui manque d'organe, pas d'une lane a corriger.
Trois resolutions candidates
files), sans jugement. C'est la lecture qui colle le mieux au litmus existant.Je penche pour (2) : c'est la seule qui rend l'exception applicable par l'outil au lieu de la laisser vivre uniquement dans le jugement du coordinateur — et le protocole dit lui-meme qu'une regle sans organe ne tient pas.
Acceptance
variation-protocol.mdne porte plus deux clauses applicables au meme grainvariation_light_cap.pyimplemente la clause retenue, avec controle positif : un cas qui DOIT bloquer et un cas qui DOIT passer, tous deux en testPrecedent : arbitrage poste sur #14330 le 2026-09-02 (override accorde au cas, en nommant cette ambiguite).