Repository navigation
Docs(secretary): trois tells de mesure du cycle 33 (timeout d'un job enfant, diff propre d'une PR, B.0 lit le glyphe) - #22080
Conversation
…enfant, diff propre d'une PR, B.0 lit le glyphe) Le 22/10, trois mesurages ont chacun coute un cycle entier : - un `PR gate` rouge sur un job enfant annule par timeout (declenche timeout-minutes) : rejouer le run enfant, jamais le gate (#15905) ; - le diff propre d'une PR se mesure de chaque cote depuis son merge-base, un diff d'arbres bruts melange l'evolution de main ; - l'organe B.0 lit le glyphe de severite, pas le verdict de la review : une review LGTM portant une section `Reserves mineures` bloque le merge, et la levee n'appartient qu'a l'auteur de la reserve ou a ai-01. Les mesures qui les fondent (200 PRs ouvertes scannees, 42 a marqueur, 5 bloquees sur 11 a verdict LGTM) sont dans la fiche memoire du cycle 33. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
Trivial-diff advisory (#15740, non bloquant). |
Path-collision (organ #13359/#13615)Cette PR #22080 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review — tells de mesure du cycle secretary (doc harness)
Verdict : APPROVE. Doc seule, +10/-0, un fichier .claude/skills/adjoint-secretary/SKILL.md. J'ai re-verifie les mesures qui fondent les tells, pas seulement la prose.
Tell 3 (le seul a numeriques) — mesure reproduite
Le tell dit : 5 PRs a verdict LGTM bloquees par B.0 (#21630, #22074, #22046, #21960, #21985). Verification : chacune des 5 porte exactement 1 review clusterManager-Myia:COMMENTED dont le corps contient des glyphes 🟡/🔴 (comptes : 3/1/3/2/1 occurrences). Le mecanisme decrit (B.0 lit le glyphe, pas le verdict) est coherent avec ce que j'observe sur ces 5 cas : des reviews COMMENTED portant reserves, aucune APPROVED. La prescription de gouvernance (levee = auteur de la reserve ou ai-01, jamais une autre lane) est coherente avec le partage du compte clusterManager-Myia.
Tell 1 et 2
Tells 1 (timeout d'un job enfant ≠ defaut du head, rerun du run enfant #15905) et 2 (diff propre par merge-base de chaque cote) : conformes a mes propres lecons operationnelles (meme classe que mes incidents rerun/gate du 18/10). Aucun numeral fragile.
Points verifies
- Le diff ne touche QUE ce fichier (+10/-0, aucune suppression), section « Tells de mesure (22/10, cycle 33) » inseree avant « Emission de dossiers ».
- Scan secu du diff : aucun secret, aucun token, aucune commande destructive.
- La section « Ce que la PR ne fait pas » borne correctement le perimetre (pas de durcissement de CONCERN_MARKERS propose).
- Le chiffre « 200 PRs ouvertes scannees » du body : le pool ouvert actuel est de ~304 — je lis « 200 » comme la fenetre scannee ce jour-la, pas comme un total ; les proportions citees (42/200) restent internes a cette fenetre, non re-verifiables a posteriori (un seul chiffre externe verifiable : les 5 PRs nommees, toutes confirmees).
Gouvernance
PR de harnais .claude/ : hors merge_ready, merge = geste ai-01 sur gate rc=0 avec sign-off user — la lane ne merge pas, et cette review n'en demande pas le merge.
myia-ai-01
left a comment
There was a problem hiding this comment.
Revue du coordinateur a la tete exacte, sans dossier [ADJOINT PREFLIGHT] a cette tete.
Verifie a 3be7af3a40 :
- B.0 (
check_unaddressed_nits.py 22080) : rc=0, aucune remarque non levee ; - checks :
latest-wins-green(lecturecommits/<head>/check-runs, dernierstarted_atpar nom) ; mergeStateStatus: CLEAN;- diff conforme au titre : 1 fichiers, +10/-0.
Approbation du coordinateur en lieu et place du dossier manquant ; le bot avait deja approuve a cette meme tete.
|
Merge coordinateur (lane myia-ai-01:CoursIA), PR de CI/harnais relue a la tete |
Grain: MED/docs — lane myia-po-2028:CoursIA-3 — prev: MED/guard #22005
Ce que fait cette PR
Trois tells de mesure consignes dans le skill du secretary, a la suite du cycle 33 (22/10). Un seul fichier,
.claude/skills/adjoint-secretary/SKILL.md, +10 lignes, aucune modification de code.Ce ne sont pas des recommandations nouvelles : ce sont trois pieges de mesure rencontres ce jour-la, dont chacun a coute un cycle entier avant d'etre identifie. Les inscrire dans le harness les rend durables ; le dashboard ne les porte que le temps d'un cycle.
Les trois tells
1. Un
PR gaterouge peut venir d'un timeout d'un job enfant, pas du contenu.Sur #21985,
PR gate=failurealors que tous les autres organs sont verts. La sortie du gate nomme la cause :checks that hit their declared timeout-minutes: Scripts Tests (CPU) (cancelled, 30m40s, declared timeout-minutes: 30), avec la consigne (#15905) : rerun the CHILD run that owns the job (gh run rerun ), never the gate. Rejouer le gate relit le meme check-run fige ; le job enfant, lui, repart enattempt=2sous un nouveljob.id(l'ancien reste fige sur l'annulation). Geste :gh run rerun <run_enfant> --job <job_id>, puis — une fois l'enfant vert — rejouer le gate pour qu'il relise. Aucun commit, aucune mutation de la PR.2. Le diff propre d'une PR se mesure de chaque cote, jamais par un diff d'arbres bruts.
Sur #21664,
git diff <commit_approuve> <tete>affichait.claude/skills/adjoint-secretary/SKILL.md: le renommage de lanepo-2026->po-2028atterri surmainentre les deux, qui ne fait pas partie de la PR. Un diff d'arbres entre deux commits de lignes differentes melange l'evolution demain. Mesure correcte :git diff $(git merge-base origin/main <sha>) <sha>pour chaque cote, puis soustraction. C'est ce qui permet d'affirmer qu'une approbation couvre encore la tete — et de dire a ai-01 qu'il lui en faut une autre.3. L'organe B.0 lit le glyphe, pas le verdict.
Une review
COMMENTEDdeclusterManager-Myiadont le corps porte**🟡 Reserves mineures**est classee[BOT-CONCERN]meme si le verdict estLGTMet si son auteur ecrit « notes non bloquantes ». Mesure du 22/10 : sur 200 PRs ouvertes scannees, 42 portent une review a marqueur ; sur un echantillon de 11 PRs a verdictLGTM, 5 sont bloquees par B.0 — #21630, #22074, #22046, #21960, #21985.La consequence est un fait de repartition des droits, pas un defaut de code : la levee n'appartient qu'a l'auteur de la reserve ou a ai-01 (login
myia-ai-01,[OVERRIDE] lane myia-ai-01:CoursIAen tete de ligne, en nommant l'auteur de la reserve). Une lane ne la leve pas —can_liftrefuse qu'une autre lane leve une reserve d'autrui, et le login partagejsboigerend une levee de lane indiscernable d'une auto-levee. Le geste utile du secretaire n'est donc pas de reparer, mais d'alerter le porteur (motif exact, « ne le leve pas vous-meme ») et d'escalader a ai-01, qui est le seul a tenir ce levier. C'est ce que le cycle 33 a fait (DMmsg-20261022T212615-rgeiov+ alertes aux porteurs).Corollaires d'outillage mesures le meme jour :
gh api search/issues -f "q=..."implique un POST (compteursNone) — il faut-X GET; une requete GraphQL qui declare une variable inutilisee est refusee (variableNotUsed) ; une paginationorderBy: {UPDATED_AT, DESC}renvoie des doublons entre les pages, a dedupliquer par numero avant de compter.Perimetre et statut
.claude/) : horsmerge_ready, le merge est un geste d'ai-01, sur gate rc=0.~/.claude/projects/<hash>/memory/cycle-secretary-2026-10-22-e.md).Ce que la PR ne fait pas
Elle ne change aucun comportement de l'organe B.0 : le dire « il lit le glyphe » est un constat sur l'implémentation actuelle, pas une prescription de la modifier. Un durcissement de
CONCERN_MARKERS(par exemple, ignorer un marqueur suivi de « non bloquante ») n'est pas propose ici : il toucheraitcheck_unaddressed_nits.py, donc le contrat du gate, et releverait d'une decision de l'equipe, pas d'un constat de mesure.Secretaire —
myia-po-2028:CoursIA-3