Guide : Piloter une Issue de Bout en Bout
Ce guide fournit la marche à suivre opérationnelle pour piloter une fonctionnalité ou une correction complexe depuis l'ouverture de l'Issue GitHub jusqu'à la PR finale feature/* -> dev, y compris l'utilisation des commandes facultatives et la reprise sur incident.
1. Lancer le Plan (/epure plan)
- Ouvrez une Issue GitHub décrivant l'objectif, le besoin utilisateur ou le périmètre souhaité.
- Postez
/epure planen commentaire. - Patientez quelques secondes pendant que le workflow
epure-issue-commandpublie la Ronde 1 du Grill.
Bonnes Pratiques pour Répondre au Grill
- Répondez en Markdown ordinaire : inutile de répéter
/epuretant que l'issue est en phasegrilling. - Plusieurs commentaires successifs sont supportés : grâce au curseur de lot (
last_processed_comment_id), si vous ajoutez un second commentaire de précision pendant qu'un run est en file d'attente, EPURE traitera tous vos commentaires dans l'ordre chronologique. - Forcer le passage à la Spec (Facultatif) : si vous estimez le cadrage suffisant et souhaitez générer immédiatement la spécification, commentez
/epure to-spec.
2. Générer & Valider la Spécification (/epure to-spec & /epure to-tickets)
Dès que la frontière de décisions du Grill est résolue (frontier_resolved: true), EPURE publie la Synthèse des Décisions et attend votre validation (grilling / awaiting_human_approval).
- Générer la Spécification (
/epure to-spec) : commentez/epure to-specpour exécuter l'Audit de Spécification Goldfish zéro-contexte (runGoldfishSpecAudit) et commiterGLOSSARY.md,docs/adr/NNNN-*.md,DESIGN.md(si une UI est concernée) etdocs/specs/<slug>.md(incluantEpicGoalContract) surplan/<issue>-<slug>. L'issue passe en phasespec(awaiting_human_approval). - Réviser ou Valider la Spécification :
- Inspectez
GLOSSARY.md,docs/adr/etdocs/specs/<slug>.mdsurplan/<issue>-<slug>. - Pour demander un ajustement ou une précision sur la spécification avant la création des tickets, répondez directement en commentaire (sans commande slash).
- Inspectez
- Générer le Graphe de Tickets (
/epure to-tickets) : une fois la spécification validée, commentez/epure to-tickets. EPURE découpe la spécification en un graphe acyclique (DAG) de sous-issues GitHub (blocked_by,ready-for-agent), câble nativement les relations GitHubsub_issuesetdependencies/blocked_by, et passe en phasetickets(awaiting_human_approval) en attente de/epure approve.
3. Approuver, Continuation CI Événementielle & Synchronisation (/epure approve, /epure status & /epure sync)
Postez /epure approve sur l'issue de pilotage pour intégrer directement les artefacts de plan/* dans feature/<issue>-<slug>, sceller spec_sha et démarrer l'exécution du DAG de tickets.
- Attente Événementielle de la CI Externe (
waiting_ticket_ci/waiting_feature_ci) :- À chaque ouverture d'une PR
task/* -> feature/*(waiting_ticket_ci) ou de la PR finalefeature/* -> dev(waiting_feature_ci), l'orchestrateur enregistre la PR et lehead_shaactifs dansrefs/epure/state/<issue>et termine immédiatement le job (exit 0) pour libérer le runner GitHub Actions (async_ci_continuation: true). - Dès que les workflows CI externes se terminent (
check_suite.completedouworkflow_run.completed), EPURE se réveille automatiquement pour exécuter la revue multi-agents Stage 3, le squash sémantique IA ou un round d'auto-remédiation. Vous pouvez également relancer manuellement la continuation à tout moment en commentant/epure continue.
- À chaque ouverture d'une PR
- Synchroniser avec
dev(/epure sync//epure rebase) :- Si d'autres PRs sont fusionnées sur
devpendant le développement de votre fonctionnalité, commentez/epure sync(ou/epure rebase). EPURE synchronisedev -> feature/<issue>-<slug>(et propagefeature/* -> active_task_branch) avec fusion additive deGLOSSARY.md, renumérotation monotone des ADRs, résolution de conflits 3-way assistée par LLM et validation obligatoire dans le Sandbox Noyau Stage 1 avant commit.
- Si d'autres PRs sont fusionnées sur
- Suivre l'Avancement (
/epure status) :- Commentez
/epure statusou consultez le Tableau de Bord EPURE épinglé en haut du corps de l'issue. - Dans les journaux GitHub Actions du job, dépliez les groupes structurés
::group::pour inspecter la sortie des tests/builds du Sandbox Stage 1, les appels d'outils en lecture seule (read_file,search_code) et le verdict de chaque reviewer (approvedvschanges_requested).
- Commentez
4. Gérer une Escalade needs-human, /epure continue & les Tickets de Convergence Phase 2
EPURE interrompt l'automatisation et pose le label needs-human (status: "suspended") lorsqu'une décision humaine est requise :
- Modification d'un Chemin Sensible : une branche
task/*a modifié.github/workflows/**,.github/agents.yml, le répertoire du roster de reviewers (<reviewers_dir>/**, par défaut.agents/reviewers/**) ouCODEOWNERS.- Résolution : inspectez le diff. Si la modification est légitime, ajoutez le label
approved-sensitive-changesur la PR puis commentez/epure continue(ou/epure approve) sur l'issue de pilotage.
- Résolution : inspectez le diff. Si la modification est légitime, ajoutez le label
- Plafond d'Auto-Remédiation Atteint (
max_code_fix_attempts = 3) : un ticket a échoué aux tests Stage 1, à la CI externe ou aux constatsmust_fix3 fois consécutives.- Résolution : poussez un commit de correction sur la branche
task/*oufeature/*(ou publiez une précision en commentaire), puis commentez/epure continuesur l'issue de pilotage. EPURE retire le labelneeds-human, restaurestatus: "active", ignore les tickets déjà fermés et reprend exactement au dernier jalon validé.
- Résolution : poussez un commit de correction sur la branche
- Audit de Convergence Zéro-Contexte (
EpicConvergenceAudit) & Tickets Automatiques de Phase 2 (max_epic_phases) :- Une fois tous les tickets de Phase 1 fusionnés dans
feature/*, EPURE exécute unEpicConvergenceAuditzéro-contexte (runEpicConvergenceAudit) face à l'EpicGoalContractde la spécification. - Si l'audit détecte des
required_entrypointsnon câblés ou desforbidden_stubsrésiduels (verdict: "INCOMPLETE") et queepic_phase < max_epic_phases(2par défaut), EPURE génère, chaîne et exécute automatiquement des tickets correctifs[Phase 2 - Ticket N]avant d'ouvrir la PR finalefeature/* -> dev. Si un écart subsiste aprèsmax_epic_phases, EPURE escalade enneeds-human(epic_convergence_exhausted), d'où vous pouvez pousser un correctif et commenter/epure continue.
- Une fois tous les tickets de Phase 1 fusionnés dans
- Configuration de Modèle Manquante ou
.github/agents.ymlInvalide : une commande appelant un LLM n'a trouvé ni entréemodelsur l'action ni l'une des clésmodels.planning,models.implementationoumodels.review(model_config_missing, le commentaire cite les clés manquantes), ou.github/agents.ymlsurdevest impossible à analyser (internal_error, le commentaire cite le message de l'analyseur). EPURE n'a aucun modèle de repli.- Résolution : corrigez ou complétez
.github/agents.ymlsurdev(ou relancezsetup-repo, qui ajoute les clésmodels.*manquantes), puis republiez la commande/epured'origine ;/epure continuene reprend que les exécutions en phase d'implémentation.
- Résolution : corrigez ou complétez

