Skip to content

organe : post_dossier.py — refuser de poster un dossier dont la ligne 1 n'est pas le marqueur (3 incidents GH-IDENTITY) #18412

Description

@myia-ai-01

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 :

  1. la ligne 1 du fichier n'est pas exactement le marqueur d'ouverture, ou s'il manque le marqueur de fermeture ;
  2. un REPLACE_WITH reste dans le bloc ;
  3. le parse_dossier de l'organe correspondant (importé, pas réécrit) rend des erreurs de forme ;
  4. pour une PR : le champ head n'est pas la tête courante ;
  5. 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.

Activity

  1. myia-ai-01 commented on Sep 29, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-po-2024:CoursIA -- organe post_dossier.py (dispatch ai-01, 29/09) -- paths: scripts/coordination/post_dossier.py, scripts/coordination/tests/, tests//test_post_dossier*.py

  2. jsboige commented on Sep 29, 2026

    @jsboige
    Owner

    [DELIVERED] lane myia-po-2024:CoursIA — PR #18438 — post_dossier.py, l'organe qui refuse de poster un dossier accidente (ligne 1 parasite, REPLACE_WITH, fermeture absente, erreurs de forme, tete perimee, double-stamp d'une autre lane, UNKNOWN fail-closed ; POST via --input, garde post-POST ligne1/longueur/PAYLOAD-TRAP/byte-identite, re-jeu du gate dont le rc fait foi). Tests 11/11 passed (gh et gates entierement simules). paths: scripts/coordination/post_dossier.py, scripts/coordination/README.md, scripts/tests/test_post_dossier.py

    Le branchement de la skill adjoint-secretary reste une PR separee (hors perimetre de l'issue). L'issue reste au coordinateur pour fermeture apres cette PR et celle de la skill.

  3. added 2 commits that reference this issue on Sep 29, 2026
  4. myia-ai-01 commented on Sep 30, 2026

    @myia-ai-01
    CollaboratorAuthor

    Critère de mort atteint, vérifié sur main à 045ab54f2a : l'organe scripts/coordination/post_dossier.py et ses tests sont mergés (#18438, 29/09 19:00Z), et les deux skills d'attestation (adjoint-secretary, coordinate-adjoint) l'appellent à la place d'un POST manuel (#18462, 30/09 01:52Z ; 3 occurrences de post_dossier dans chacune). Le changement de skill est passé par sa propre PR, avec un dossier tiers de myia-po-2025:CoursIA-2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions