Repository navigation
fix(harness,#15793): le plancher de session devient « plusieurs grains dont un DUR » (mandat user) - #15794
fix(harness,#15793): le plancher de session devient « plusieurs grains dont un DUR » (mandat user)#15794jsboige wants to merge 3 commits into
Conversation
…dont un DUR Mandat user 2026-09-12 : « Tu dois inciter les agents a prendre plusieurs grains dont des durs a chaque session. » R1 lisait « >=1 PR entre 2 wakeups ». Ce que cette formulation mesure -- est-ce que la lane a livre ? -- a cesse de discriminer : 583 merges en 7 jours (83/jour), la reponse est oui dix fois par jour et par lane. Ce qui decroche est ailleurs, et se mesure : 15 % de DEEP sur la semaine, et sur 48 h le META passe devant le CONTENU (109 contre 82). Pas de regle ajoutee (CLAUDE.md global, no-pendulum) : un nombre remplace. R1 passe a >=2 grains dont >=1 DEEP de genre CONTENU ; G-VAR-1 passe de « DEEP ou MED » a DEEP, MED restant admis au-dela du plancher. La mesure datee part dans le detail doc, le harnais garde un pointeur. Le risque -- exiger un DEEP incite a sur-coter le tier -- est nomme dans G-VAR-1, avec le contre-poids qui existe deja : le merge-gate re-qualifie lui-meme un tag mal derive (section 3). See #15793 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
Trivial-diff advisory (#15740, non bloquant). |
Path-collision (organ #13359/#13615)Cette PR #15794 (
|
|
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-ai-01:CoursIA. 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 Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #15727 ( python scripts/ci/variation_adjacency_guard.py --pr-number 15794variation-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 |
#15939 a merge (squash f9bbefc) le durcissement du plancher dans les deux fichiers de regle que cette PR touchait aussi. Les deux editions de regle sont donc retirees ici : elles sont supersedees, et leur maintien etait la cause du conflit (mergeStateStatus DIRTY). Preuve de preservation (Consolider != Archiver -- on fusionne AVANT de trimmer, en citant la cible) : - .claude/rules/proactive-coordination.md ligne 9 sur main porte deja « >=2 grains livres entre 2 wakeups, dont >=1 DEEP portant un genre de CONTENU = PLANCHER, jamais plafond » -- forme plus dure que celle retiree ici. - .claude/rules/variation-protocol.md ligne 78 sur main porte deja « G-VAR-1 -- Plat principal DEEP, dans un genre de CONTENU » avec la clause « un MED non plus » -- forme plus dure que celle retiree ici. - Les deux blobs sont restaures a leur etat de merge-base (339bcbf et ede831e), donc le diff de cette PR ne les mentionne plus du tout. Ce qui reste est le seul contenu sans equivalent sur main : les deux lignes de lane tombees a la reduction (myia-po-2026 98/35/6 et myia-po-2024 71/51/15), la reserve « Ce que la mesure ne dit pas » sur les tiers declares, et la lecture anti-reproche du tableau. Le titre de section passe de « Plancher de session » a « Plancher durci » pour correspondre au pointeur que #15939 a lui-meme merge dans R1 (« section Plancher durci ») : ce pointeur est pendant sur main tant que cette tranche n'a pas atterri. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Réduction de cette tranche à son résidu — mesures, et un engagement tenuLe commit Ce que la réduction honoreJ'ai écrit publiquement sur #15648 ( Preuve de préservation, pas d'archivage« Consolider != Archiver » exige de fusionner avant de trimmer, en citant la cible par son numéro de ligne. Les deux cibles sont sur
Les deux blobs ont été restaurés à leur état de merge-base ( Ce que la réduction a révélé :
|
Je ferme cette PR : elle est un doublon, et le body affirmait le contraire sur une mesure fausseCette PR soutenait, dans sa section « Ce que la réduction a révélé », que Ce que la mesure dit, refaite à l'instant contre
|
| Objet | Où il est | Ligne |
|---|---|---|
Le renvoi [détail, section Plancher durci] |
.claude/rules/proactive-coordination.md sur main |
l.9 |
| Le second renvoi, même cible | .claude/rules/variation-protocol.md sur main |
l.80 |
La cible ## Plancher durci |
docs/reference/proactive-coordination-detail.md sur main |
l.5 |
Le renvoi résout. #15939 (squash f9bbefc7f8) n'a pas livré un pointeur orphelin : il a déposé
la règle et sa section de détail dans le même merge. Et cette section porte déjà la mesure que
cette PR prétendait apporter — mêmes chiffres, au chiffre près : 583 merges / 88 DEEP / 15 % sur
7 jours, 196 / 35 / 18 % sur 48 h, CONTENU 314 contre META 260 sur 7 j et 82 contre 109 sur
48 h, avec le même contraste par lane.
Merger cette PR ajouterait donc un second titre ## Plancher durci dans le même fichier — le
diff vaut +43/−0, pure addition — avec une rédaction divergente du même fait (« plusieurs grains dont
un DUR » contre « ≥ 1 DEEP dans un genre de CONTENU »). Deux sections homonymes et non identiques
dans un fichier de référence sont pires que l'absence que je croyais combler.
Pourquoi je me suis trompé — l'arbre, pas le test
Le commentaire du 2026-09-13T20:07 a été écrit 25 minutes après le merge de #15939
(2026-09-13T19:42:03Z) contre un main local que je n'avais pas re-fetché. Le grep était juste ;
l'arbre était périmé. Un bon test sur le mauvais arbre rend un vrai résultat sur autre chose, et ne
signale rien — c'est exactement la classe de faute que je refuse dans les PRs des autres, et je l'ai
publiée dans un body en la présentant comme une découverte.
Ce qui est préservé, ce qui tombe
L'essentiel — la mesure, le contraste par lane, la lecture « la flotte construit l'atelier plus vite
qu'elle n'y fabrique » — est déjà sur main, dans la section l.5. Ce que cette branche portait en
plus tient en deux choses mineures : une ligne de tableau pour myia-po-2026:CoursIA (98 merges,
35 CONTENU, 6 DEEP), et le cadrage historique « le plancher R1 a lu ≥1 PR depuis le mandat du
2026-05-23 ». Ni l'une ni l'autre ne vaut une PR pour elle-même ; elles se glisseront en une ligne
dans cette section si une édition ultérieure la touche. Je le nomme ici plutôt que de les laisser
disparaître en silence : consolider n'est pas archiver, et fermer sans dire ce qu'on jette est une
façon de jeter.
Effet de bord, dit franchement
Le garde G-VAR-3, recalculé à sequence_as_of: 2026-09-14T18:08:24Z, rendait guard_pass: false
sur cette PR — docs succédant à docs pour ma lane, le prédécesseur étant #15685 que je venais
de merger quatre secondes plus tôt. J'aurais pu lever ce blocage par l'[G-VAR-3 OVERRIDE] que la
règle ouvre au coordinateur passé 24 h. Je ne le fais pas : le garde avait raison sur le fond — deux
grains docs consécutifs de ma lane — et la bonne réponse à une règle qui vient de m'attraper n'est
pas de l'arbitrer, c'est de constater que la PR n'avait pas lieu d'être.
Fermée comme supersédée par #15939. La branche reste en place.
Grain: MED/docs — lane myia-ai-01:CoursIA — prev: MED/docs #15936
Cette PR a été réduite à son résidu (commit
3dfb16e11f). Elle n'édite plus aucun fichier de.claude/rules/**: son diff est un seul fichier,docs/reference/proactive-coordination-detail.md, +43/−0.Pourquoi la réduction
#15939 (squash
f9bbefc7f8, mergée 2026-09-13T19:42:03Z) a livré le durcissement du plancher dans les deux fichiers de règle que cette PR éditait aussi, sous une forme plus dure que celle proposée ici. Maintenir ces deux éditions ne pouvait produire que deux choses : un conflit (mergeStateStatus: DIRTY, constaté) et une deuxième rédaction de la même règle.Preuve de préservation — « Consolider != Archiver » exige de fusionner avant de trimmer, en citant la cible :
main.claude/rules/proactive-coordination.mdl.9 — forme plus dure (ajoute « un cycle dont le plat principal est MED ou META n'a pas de plancher tenu »).claude/rules/variation-protocol.mdl.78 — forme plus dure (ajoute explicitement « un MED non plus »)Les deux blobs sont restaurés à leur état de merge-base (
339bcbf789,ede831e8fa) : le diff ne les mentionne plus du tout.Ce que cette tranche apporte, et que
mainn'a pasmainpointe déjà vers ce contenu sans qu'il existe. R1, mergée par #15939, dit : « La mesure qui motive ce durcissement — 15 % de DEEP sur 7 j, et sur 48 h le META passant devant le CONTENU — est déposée datée dans [détail, section Plancher durci] ». Cette section n'est nulle part surmain: elle est ici. C'est un renvoi pendant que cette PR ferme, pas un doublon qu'elle ajoute. Le titre de section a été aligné sur le libellé du pointeur (## Plancher durci) dans le même commit.Trois éléments du diff n'ont aucun équivalent ailleurs :
myia-po-2026:CoursIA98/35/6 etmyia-po-2024:CoursIA71/51/15 ;La mesure déposée (2026-09-12T16:39Z)
Attribution par le tag
Grain:, jamais--author(l'identité de pousséejsboigeest partagée, L721).Le volume n'est pas le défaut : 98 PRs/jour sur ~11 lanes. Ce qui décroche est la dureté, et sur 48 h le basculement CONTENU/META.
Vérifications (refaites après réduction)
git diff --statvs merge-base9d42c76532: 1 fichier, +43/−0.docs/reference/proactive-coordination-detail.md, sinon abandon.variation_adjacency_guard.py --pr-number 15794, jamais dérivé à la main) :guard_pass: true,exempted: true— exemption mécanique variation-protocol G-VAR-3 : le ban absolu des genres LIGHT et l'exception MED/DEEP-distinct se recouvrent sur guard/test/docs/readme/ledger #14357, diff disjoint du prédécesseur réel chore(harness,#15204): deporter le recit date hors de deux rules auto-chargees (-6 470 o/requete) #15936. Le commentairevtr-adjacency-blockdu 2026-09-12T19:53 est périmé : il a été calculé contre une séquence de merges antérieure.check_unaddressed_nits.py 15794→rc=0à la tête3dfb16e11f. Les cinq commentaires de cette PR sont tous des advisoriesgithub-actions; aucune review, aucun thread inline.Rectification — le renvoi « §A » que portait ce body était faux
Ce body affirmait : « elle édite
.claude/rules/**, qui exige un sign-off user (CLAUDE.md §A) ». Deux erreurs, et je les retire toutes les deux :.claude/rules/**— la prémisse a disparu.main: §A (l.77-87) couvre la coordination RooSync, le tour de coordination, le reporting dashboard et Git. Il ne mentionne ni sign-off, ni.claude/rules/. C'est l'objet de l'issue Harnais : cinq renvois exigent un sign-off user en citant « CLAUDE.md §A », qui ne porte pas cette clause #16014 — ce body en était une instance de plus, que je compte désormais dans le recensement.See #15793
🤖 Generated with Claude Code