Skip to content

[coordination] Fermeture d'issues sur dossier tiers : faire aux issues ce que le gate fait aux PRs #17956

Description

@myia-ai-01

Constat (mesuré le 2026-09-26 par ai-01)

Le pool d'issues grossit alors que les PRs arrivent en masse. Le goulot n'est pas la production : c'est la fermeture. Elle exige une lecture firsthand (G.9), et seul ai-01 ferme.

Ce qu'il faut : faire aux issues ce que le gate fait aux PRs

Réutiliser les organes existants (régime de consolidation) : pas de nouveau ledger.

  1. Crible mécanique (existant, à corriger) : candidate_delivered.py puis verifier_cleanup.py. Ajouter un verdict CONTAINER pour les issues-conteneurs (préfixe [Audit #…] + « partition », ou une issue qui énumère plusieurs cibles), jamais READY.
  2. Dossier de fermeture tiers, posé en commentaire sur l'issue, par une lane qui n'a pas livré le travail. Il remplace le [INFO] candidate-delivered informel. Contrat minimal, lisible par machine :
    [CLOSURE PREFLIGHT]
    schema: 1
    lane: <machine:workspace>
    issue: <N>
    verdict: CLOSE | KEEP
    acceptance:
      - <critère> -> <PR#/commit/fichier:ligne>   (un item par critère du body)
    residue: none | followup #<M> | waiver: <motif daté et falsifiable>
    open-prs: 0
    comments-reviewed: <n>
    
  3. Gate check_closure_dossier.py <issue>, avec les mêmes codes que le gate PR : 0 = CLOSE intègre, 3 = KEEP intègre, 1 = dossier absent/périmé/auto-attesté, 2 = injoignable. Il vérifie que la lane est tierce (≠ lane du [DELIVERED] ou du Grain: de la PR livrante), que le dossier est postérieur au dernier commentaire non neutre, que les PRs citées sont MERGED, qu'aucune PR ouverte ne référence l'issue, et que la fille citée existe et est ouverte.
  4. Consommation par ai-01 à heure fixe : une passe issues dans /coordinate, après la passe de merge. Gate oldest-first, lecture G.9 minimale (le dossier, le delta, la preuve décisive), fermeture en lot. La fermeture reste un geste ai-01, pas d'auto-close.
  5. Tournées : l'adjoint et le secrétaire produisent des dossiers de fermeture dans leurs tournées respectives (skills coordinate-adjoint, adjoint-secretary), en commençant par les READY du crible, puis les AMBIGUOUS du plus ancien au plus récent.
  6. Ledger rendu aux issues : l'étape de publication de debt_ledger.py refuse une [OBS] dont l'entité est une PR (l'état des PRs vit dans leurs dossiers exact-head). Le ledger garde la dette des Epics (PRs atomiques restantes, EAT), plus la closeability alimentée par les dossiers de fermeture.

Acceptance

  • verifier_cleanup.py rend CONTAINER sur les 7 issues [Audit #17073] … partition Hermes du crible du 26/09 (contrôle positif), et ne dégrade aucun des 8 READY fermés ce jour (contrôle négatif, rejoué sur leur état avant fermeture).
  • check_closure_dossier.py et ses tests : un dossier auto-attesté donne 1, un dossier antérieur au dernier commentaire donne 1, une PR ouverte référençant l'issue donne 1, un dossier CLOSE intègre donne 0.
  • debt_ledger.py refuse une [OBS] sur un numéro de PR, avec un test.
  • /coordinate porte la passe issues (PR de harnais, ai-01).
  • Les skills de l'adjoint et du secrétaire portent la tournée de dossiers de fermeture.
  • Mesure à 7 jours : issues fermées par semaine et taille du pool, comparées à la semaine du 21/09 (266 créées / 133 fermées).

Découpage

Mandat user du 2026-09-26.

Activity

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

    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions