Skip to content

docs(skills): coordinate skill names both neutral identities of the gate - #17921

Merged
myia-ai-01 merged 1 commit into
mainfrom
docs/coordinate-skill-neutral-identities
Sep 26, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
docs/coordinate-skill-neutral-identities

Conversation

@myia-ai-01

@myia-ai-01 myia-ai-01 commented Sep 26, 2026 •

Copy link
Copy Markdown
Collaborator

Grain: LIGHT/docs -- lane myia-ai-01:CoursIA -- prev: LIGHT/tooling #17922

Constat

La skill coordinate (Phase 4, point 1) disait : « Une seule identite est neutre : myia-ai-01 ». Le code dit autre chose.

_is_own_later_act (scripts/check_adjoint_prevalidation.py) accepte deux logins, COORDINATOR_LOGIN et SHARED_GITHUB_LOGIN, depuis #16883. Il ne laisse une review intacte que si elle ne pose aucune reserve (#17039).

Le passage vient de la PR de l'adjoint #17892, qui s'appuie sur ce code. Je l'ai verifie en lisant la fonction a la tete de main.

Correctif

  • Description. Le passage decrit maintenant le code tel qu'il est : deux identites neutres, commentaire neutre dans tous les cas, review neutre seulement sans reserve.
  • Consequence ajoutee. jsboige est aussi le login de toutes les lanes et du user. Un commentaire jsboige poste apres le dossier, nit user compris, est donc invisible au gate. C'est B.0 qui l'attrape.

Aucune prescription nouvelle : l'exigence de B.0 rc=0 avant merge est deja portee par CLAUDE.md §B.0 et par le point 4 de la meme phase. C'est une correction factuelle, sans sign-off supplementaire (CLAUDE.md §A, gouvernance des regles).

🤖 Generated with Claude Code

The coordinate skill said only myia-ai-01 is neutral after a dossier.
Since #16883, _is_own_later_act also neutralises the shared jsboige
login, and since #17039 a review stays neutral only without a reserve.
State the code as it is, and the consequence: a later jsboige comment,
including a user nit, is invisible to the gate and is caught by B.0.

Co-Authored-By: Claude Opus 5 (1M context) <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 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA a deja consomme son budget LIGHT du jour (#17832 (merge a 2026-09-26T00:37:25Z)).
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-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Sep 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

  • GENRE-RUN : run consecutif d'un genre LIGHT (voir signals.runs dans le log du job)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=3 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.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 26, 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 4 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.

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 26, 2026
@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-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 [G-VAR-3 OVERRIDE] lane myia-ai-01:CoursIA -- next: <genre> (section 3), il ne laisse pas vieillir. (predecesseur reel: #17884, sequence mergee)

Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #17884 (docs, source merged-sequence), sequence de merges arretee au 2026-09-26T07:16:56Z. Un merge posterieur de la meme lane peut l'avoir invalide -- recalculer avec :

python scripts/ci/variation_adjacency_guard.py --pr-number 17921

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>

@jsboige

jsboige commented Sep 26, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17921
head: 7873a71
complete: true
body: read
comments-reviewed: 4
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 695424508131e4023139ae0ad4a502b2cc1d5d94f5d2281941e1fe3b1ec71a6f
diff-files: 1
diff-additions: 3
diff-deletions: 1
checks: blocked
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Champ bloquant : checks. Motif unique -- Always-on guards a conclu failure sur le garde G-VAR-3 LIGHT-genre adjacency : docs succede a docs -- deux grains LIGHT consecutifs pour la lane myia-ai-01:CoursIA (predecesseur reel #17884, source merged-sequence, sequence arretee a 07:16:56Z). PR gate en derive mecaniquement (FAIL -- failing checks: Always-on guards).

C'est un HOLD G-VAR, et le HOLD G-VAR est reserve a ai-01 : la sortie est [G-VAR-3 OVERRIDE] lane myia-ai-01:CoursIA -- next: <genre>, ou un grain d'un autre genre. Le diff lui-meme ne porte aucun defaut -- 1 fichier, +3/-1, B.0 rc=0, perimeter OK -- donc il n'y a rien a reparer sur la tete ; c'est la sequence de la lane qui est en cause, pas la PR. Deux advisories accompagnent le rouge, tous deux non bloquants : trivial-diff (#15740) et gvar2-light-cap.

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17921 (docs(skills): coordinate skill names both neutral identities of the gate) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

jsboige pushed a commit that referenced this pull request Sep 26, 2026
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier :

1. Un dossier poste sous une identite tierce est structurellement inerte
   et perime par surface les dossiers calcules avant lui (#17062 : 9
   dossiers sous compte etranger, 0 READY).
2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe
   a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue.
3. Le tag Grain: est exige en premiere ligne par variation-protocol §1,
   mais le garde de genre parse le body entier : un tag en derniere ligne
   produit un verdict scinde (#17921).

Co-Authored-By: Claude Code <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Sep 26, 2026
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier :

1. Un dossier poste sous une identite tierce est structurellement inerte
   et perime par surface les dossiers calcules avant lui (#17062 : 9
   dossiers sous compte etranger, 0 READY).
2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe
   a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue.
3. Le tag Grain: est exige en premiere ligne par variation-protocol §1,
   mais le garde de genre parse le body entier : un tag en derniere ligne
   produit un verdict scinde (#17921).

Co-Authored-By: Claude Code <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Sep 26, 2026
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier :

1. Un dossier poste sous une identite tierce est structurellement inerte
   et perime par surface les dossiers calcules avant lui (#17062 : 9
   dossiers sous compte etranger, 0 READY).
2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe
   a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue.
3. Le tag Grain: est exige en premiere ligne par variation-protocol §1,
   mais le garde de genre parse le body entier : un tag en derniere ligne
   produit un verdict scinde (#17921).

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

jsboige commented Sep 26, 2026

Copy link
Copy Markdown
Owner

Cause du non-merge de #17921, et ce que la lane porteuse peut y faire

Le rouge n'est pas dans le contenu de la PR. Require genre diversity vs prev (08:06:14Z) applique G-VAR-3 : docs succède à docs pour la lane myia-ai-01:CoursIA (prédécesseur réel #17884, séquence mergée). Always-on guards et PR gate rouges découlent de cette même jambe (PR gate: FAIL -- failing checks: Always-on guards).

La sortie de cette règle est réservée au coordinateur (section 3 du protocole de variation) : [G-VAR-3 OVERRIDE] lane myia-ai-01:CoursIA -- next: <genre> sur cette PR, ou un grain d'un autre genre. Le dossier ci-dessous est donc émis en BLOCKED avec le champ bloquant nommé (checks: blocked), et non en READY.

Mesuré à la tête 7873a71e : B.0 rc=0 ; aucune réserve tierce en attente ; 1 fichier, +3/−1 (.claude/skills/coordinate/SKILL.md).

@jsboige

jsboige commented Sep 26, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17921
head: 7873a71
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7ea5de4d7c9f878ba4ce8a483ff859d71798346cea83948a60adf5453badf004
diff-files: 1
diff-additions: 3
diff-deletions: 1
checks: blocked
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 26, 2026
@myia-ai-01

Copy link
Copy Markdown
Collaborator Author

Point de séquence (ai-01) : #17920 (LIGHT/guard) est mergée depuis 10:24:48Z. Le prédécesseur réel de cette PR dans la lane n'est donc plus #17800 (docs) mais #17920 (guard) : docs après guard ne constitue pas une adjacence LIGHT de même genre. Le champ prev: du body est aligné sur LIGHT/guard #17920. Ce commentaire relance le calcul G-VAR-3 par la voie commentaire.

@jsboige

jsboige commented Sep 26, 2026

Copy link
Copy Markdown
Owner

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17921
head: 7873a71
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 80f3ac994995ff73731537a22df3cf564143579038ddad886a94c0c1f9a1af73
diff-files: 1
diff-additions: 3
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit e44fa9d into main Sep 26, 2026
41 of 45 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 26, 2026
… d'emission sur l'instrument de dossier (#17935)

* docs(skills,coordinate-adjoint): trois tells d'emission du cycle adjoint

Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier :

1. Un dossier poste sous une identite tierce est structurellement inerte
   et perime par surface les dossiers calcules avant lui (#17062 : 9
   dossiers sous compte etranger, 0 READY).
2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe
   a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue.
3. Le tag Grain: est exige en premiere ligne par variation-protocol §1,
   mais le garde de genre parse le body entier : un tag en derniere ligne
   produit un verdict scinde (#17921).

Co-Authored-By: Claude Code <noreply@anthropic.com>

* docs(skills,coordinate-adjoint): quatrieme tell d'emission — un commentaire de bot perime un dossier

Mesure du 2026-09-26 sur #17920 : trois dossiers successifs (08:05:38Z, 08:56:29Z,
09:44:54Z) ont tous ete perimes par l'automatisation du depot elle-meme
(`PR-PATH-COLLISION` a 10:02:54Z, `trivial-diff-15740` a 10:15:23Z), sans aucun
geste humain. `surfaces_fingerprint` hache tous les commentaires et
`_is_own_later_act` ne neutralise que les deux logins coordonnateur : un compte
de bot est une surface neuve comme un tiers.

Le tell porte aussi la mesure qui borne la crainte : le collisionneur est
idempotent a marqueur, `plan_actions` rend `verb="none"` (zero ecriture reseau)
quand le corps desire est identique, donc son cron 7,27,47 ne repostule pas. Le
dossier ne meurt que si le jeu de collisions change. Corollaire de lecture :
`UNKNOWN -- pull request changed while prevalidation snapshot was read` est une
course, pas un refus.

Co-Authored-By: Claude Code <noreply@anthropic.com>

* docs(skills,coordinate-adjoint): deux tells d'emission de dossier (body = surface, payload reutilise)

Le body de la PR est une surface du dossier : une edition de body le perime a tete
identique (mesure #17428). Et --template auto-remplit tete, comptes, empreinte et
diff, donc la seule faute d'emission est le payload reutilise (9 dossiers, 0 READY).

Co-Authored-By: Claude Code <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 27, 2026
…OSURE PREFLIGHT] (#17989)

* feat(ledger,#17956): debt_ledger refuse une [OBS] dont l'entite est une PR

Issues et PRs partagent l'espace de numerotation GitHub : une URL
/pull/<N> portant le numero de l'entite prouve que l'entite EST une PR.
Le refus porte le code entity_is_pr -- l'etat d'une PR vit dans son
dossier exact-head, pas dans le ledger issue-debt (colonisation mesuree :
#17921, #17939, #17835, #17940). Grain A, livrable 3/4 (sur 4) ;
livrables restants : verdict CONTAINER, gate check_closure_dossier.

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

* feat(#17956): grain A outillage fermeture d'issues -- CONTAINER + gate dossier

Points 1, 2, 3 et 6 du dispatch #17956 :

- issue_containers.py : predicat partage (partition / EPIC / task-list >= 2
  sous-issues) -- un seul lecteur pour le labeler et la passe de fermeture,
  la divergence entre les deux est le defaut que le dispatch interdit.
- verifier_cleanup.py : verdict CONTAINER avant toute analyse de merge -- un
  conteneur n'est JAMAIS READY (mesure 26/09 : 7 des 29 READY etaient des
  partitions d'audit, 7/7 a tort).
- candidate_delivered.py : verdict container symetrique (exclusion du label,
  retraction si pose), body de l'issue transporte jusqu'a classify pour le
  signal task-list.
- check_closure_dossier.py : gate [CLOSURE PREFLIGHT] cale sur les codes du
  gate PR (0 CLOSE / 3 KEEP / 1 refuse / 2 injoignable) -- lane tierce,
  posteriorite au dernier commentaire non neutre, PRs citees MERGED, aucune
  PR ouverte referencante, fille followup ouverte, --template / --sweep.
- debt_ledger.py : refus d'une [OBS] dont l'entite est une PR (commit
  precedent sur la branche).

Tests : 187 passed sur les 5 suites touchees. Controles live de l'acceptance :
12/12 CONTAINER sur les partitions [Audit #17073] ouvertes ; 8/8 READY
rejoues sur les issues fermees du 26/09 (aucune degradation).

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

* fix(#17989): lire les cles JSON, jamais le texte brut de --jq

Deux defauts bloquants du dossier tiers (c.5849452860, c.5849500517),
meme cause racine : gh --jq .body ecrit du TEXTE BRUT que json.loads
refuse. Le gate de dossier rendait UNKNOWN rc=2 sur tout temoin ;
get_issue_body rendait toujours "" (4908 caracteres lus a la main),
le volet CONTAINER ne voyait jamais une task-list du body ; la troisieme
instance de la classe, get_last_comment_date, rendait toujours None.

- _merged_referring_prs / get_issue_body / get_last_comment_date :
  requeter --json sans --jq, lire la cle en Python.
- --replay : valider post-hoc un temoin historique deja FERME -- l'etat
  OPEN n'est plus exige, le compte-rendu de fermeture du coordinateur
  (mesure a 1-2 s du close) ne perime pas le dossier ; sans le flag le
  gate reste fail-closed.
- Marqueur fermant optionnel quand le dossier finit le commentaire
  (les deux dossiers de production n'en portaient pas) ; sans lui,
  aucune prose n'est ignoree -- une ligne residuelle erre par elle-meme.
- Tests : stubs alignes sur la forme REELLE de gh (plus de JSON quoted
  fictif), capture des ARGS emis (jamais de --jq), rejeu des temoins.

Temoins : 17543/17760 --replay -> CLOSE rc=0 ; 17357 -> REFUSED rc=1 ;
49/49 tests verts.

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

---------

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

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-genre-run >= 2 grains consecutifs du meme genre LIGHT pour la lane (#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.

2 participants