Grain: MED/tooling -- lane myia-po-2024:CoursIA -- prev: (à renseigner par la lane)
Constat (mesuré)
Des dossiers [ADJOINT PREFLIGHT] sont postés avec une première ligne parasite, GH-IDENTITY (WARN, poursuite sous compte actif): …. C'est l'avertissement que check_adjoint_prevalidation.py écrit sur stderr quand le jeton de la machine manque. L'émetteur le capture dans le corps (redirection 2>&1).
Le gate exige [ADJOINT PREFLIGHT] en ligne 1 exacte (parse_dossier, scripts/check_adjoint_prevalidation.py). Il rend donc NO-DOSSIER -- no [ADJOINT PREFLIGHT] dossier comment found, alors que la lane croit avoir livré.
Occurrences :
La règle écrite existe déjà (skill adjoint-secretary, point 2 : head -1 = [ADJOINT PREFLIGHT] avant le POST), et elle n'a pas tenu. Il manque l'organe qui refuse de poster, pas une consigne de plus.
Ce qui est attendu
Un script scripts/coordination/post_dossier.py qui poste un dossier déjà rempli, pour les deux familles ([ADJOINT PREFLIGHT] sur une PR, [CLOSURE PREFLIGHT] sur une issue), et qui refuse de poster, avec un rc non nul, si :
- la ligne 1 du fichier n'est pas exactement le marqueur d'ouverture, ou s'il manque le marqueur de fermeture ;
- un
REPLACE_WITH reste dans le bloc ;
- le
parse_dossier de l'organe correspondant (importé, pas réécrit) rend des erreurs de forme ;
- pour une PR : le champ
head n'est pas la tête courante ;
- le gate de la famille rend déjà 0 ou 3 sous une autre lane (anti-double-stamp, skill
adjoint-secretary point 13).
Puis il poste par gh api …/comments --input payload.json (jamais -f body=@, cf. gh-posting-hygiene.md), relit le corps publié (ligne 1, longueur, prédicat PAYLOAD-TRAP) et relance le gate. Il imprime le verdict du gate et sort avec son rc.
Tests : un contrôle positif par refus (ligne 1 parasite, REPLACE_WITH restant, tête périmée) et un chemin nominal avec gh simulé.
Hors périmètre
Comment on sait qu'elle est morte
Script mergé avec ses tests, et la skill adjoint-secretary qui l'appelle à la place d'un POST manuel. Le changement de skill passe par sa propre PR.
Grain: MED/tooling -- lane myia-po-2024:CoursIA -- prev: (à renseigner par la lane)
Constat (mesuré)
Des dossiers
[ADJOINT PREFLIGHT]sont postés avec une première ligne parasite,GH-IDENTITY (WARN, poursuite sous compte actif): …. C'est l'avertissement quecheck_adjoint_prevalidation.pyécrit sur stderr quand le jeton de la machine manque. L'émetteur le capture dans le corps (redirection2>&1).Le gate exige
[ADJOINT PREFLIGHT]en ligne 1 exacte (parse_dossier,scripts/check_adjoint_prevalidation.py). Il rend doncNO-DOSSIER -- no [ADJOINT PREFLIGHT] dossier comment found, alors que la lane croit avoir livré.Occurrences :
La règle écrite existe déjà (skill
adjoint-secretary, point 2 :head -1=[ADJOINT PREFLIGHT]avant le POST), et elle n'a pas tenu. Il manque l'organe qui refuse de poster, pas une consigne de plus.Ce qui est attendu
Un script
scripts/coordination/post_dossier.pyqui poste un dossier déjà rempli, pour les deux familles ([ADJOINT PREFLIGHT]sur une PR,[CLOSURE PREFLIGHT]sur une issue), et qui refuse de poster, avec un rc non nul, si :REPLACE_WITHreste dans le bloc ;parse_dossierde l'organe correspondant (importé, pas réécrit) rend des erreurs de forme ;headn'est pas la tête courante ;adjoint-secretarypoint 13).Puis il poste par
gh api …/comments --input payload.json(jamais-f body=@, cf.gh-posting-hygiene.md), relit le corps publié (ligne 1, longueur, prédicat PAYLOAD-TRAP) et relance le gate. Il imprime le verdict du gate et sort avec son rc.Tests : un contrôle positif par refus (ligne 1 parasite,
REPLACE_WITHrestant, tête périmée) et un chemin nominal avecghsimulé.Hors périmètre
myia-po-2026(Partitionner les jetons GitHub par lane — 4 comptes machine manquants, et l'organe qui rend l'epinglage automatique #17418 Phase C) est la cause amont de l'avertissement. Il relève du provisioning de cette machine, pas de ce grain.Comment on sait qu'elle est morte
Script mergé avec ses tests, et la skill
adjoint-secretaryqui l'appelle à la place d'un POST manuel. Le changement de skill passe par sa propre PR.