Étape 4 du cycle · /sdd gate

Execution Gate — SQS ≥ 4/5 ou rien

L'Execution Gate est le point de contrôle entre une SPEC rédigée et le lancement de l'agent. La règle est simple et sans exception : aucun code avant Gate ouverte. Le Spec Quality Score (SQS) doit atteindre 4/5, et le Test de l'Étranger doit être documenté.

Pourquoi une gate avant le code

Soumettre une SPEC médiocre à un agent ne fait pas gagner de temps — cela en perd. Corriger une SPEC prend dix minutes ; corriger le code généré sur une mauvaise SPEC prend des heures. La Gate matérialise cet arbitrage économique : elle force l'investissement là où le ROI est maximal, avant que la première ligne ne soit générée.

La Gate est exécutée par la skill sqs-scoring, alimentée par ears-validator. Trois issues possibles : OUVERTE, FERMÉE (avec plan de remédiation) — ou INCONNUE quand le score est indécidable.

La doctrine v1.9 précise la place de la Gate dans la vérification : la conversation critique a lieu d'abord à l'Execution Gate. C'est là qu'on discute ce qu'on veut ; la revue de code vérifie ensuite la conformité à une intention déjà discutée. Elle reste le lieu où l'on détecte ce qui a été mal compris, pas celui où l'on découvre ce qu'on voulait (voir Validation). Dans le continuum d'autorité, l'ouverture de la Gate est l'acte humain qui valide la SPEC — elle n'autorise pas le déploiement.

Les cinq critères du Spec Quality Score

Les 5 critères SQS
#CritèreQuestion posée
1AtomicitéUne seule responsabilité fonctionnelle ? (1 SPEC = 1 PR)
2Interfaces précisesTypes et signatures explicites — pas de « retourner un objet » vague ?
3TestabilitéCas de test inclus et liés aux Outcome Criteria du PRD ?
4Non-ambiguïtéZéro adverbe vague — « correctement », « convenablement », « rapidement » ?
5Scope définiFichiers impactés exhaustifs et Critère de Drift renseigné ?

Chaque critère vaut 0 ou 1 point. Score ≥ 4/5 : la Gate s'ouvre, la SPEC passe en statut ready. Score < 4/5 : retour en révision avec un plan de remédiation qui est un livrable à part entière — texte de remplacement proposé et effort estimé, critère par critère. Deux routes spéciales : Atomicité à 0 → /sdd split ; trois échecs successifs → remonter à /sdd intent, le problème est en amont.

Le Critère 6 — Test de l'Étranger

Un sixième critère, non-scorable, complète la checklist : « Si je montrais cette SPEC à quelqu'un qui ne connaît pas le projet, saurait-il pourquoi on la fait ? » Il ne bloque pas la Gate si la réponse est négative, mais la question doit être posée et la réponse — deux phrases maximum, rédigées par un humain — intégrée à la SPEC avant de continuer :

## Contexte pour un lecteur extérieur
[Deux phrases. Rédigées par un humain. Avant l'Execution Gate.]

C'est le principe Feynman appliqué aux spécifications : on ne comprend vraiment quelque chose que quand on peut l'expliquer simplement. Si les deux phrases sont impossibles à écrire, le contexte humain est insuffisant — revenir à l'Intent Statement avant de continuer.

Mode EARS strict

Quand la SPEC déclare Format : EARS en entête (voir la variante EARS), le linter ears-validator passe en mode strict et influe mécaniquement sur le critère 2 :

Effet du linter EARS sur le SQS
Résultat du lint R1–R7Effet sur le critère SQS 2 (Testabilité)
0 violationBonus +1 garanti (plafonné à 1/1)
≥ 1 violationCritère forcé à 0 — Gate fermée, tableau de reformulations R1–R7 critère par critère

En format prose, le linter reste indicatif : il signale les ambiguïtés sans altérer le score.

Gate INCONNUE — le fail-closed du SQS

Quand un ou plusieurs critères ne sont pas scorables — testabilité impossible à juger sans pile de test connue, cohérence non vérifiable parce qu'une SPEC dépendante est illisible, atomicité indécidable parce que l'Intent parent n'est pas formulé — la Gate ne sort ni OUVERTE ni FERMÉE : elle sort INCONNUE, avec un score ?/5. C'est un état JNSP et il est fail-closed : aucune exécution agent ne peut démarrer.

Gate : INCONNUE (verdict JNSP)
SQS : ?/5
Critères non scorables :
  - Critère 2 (Testabilité) : motif = <ce qui empêche>
  - Critère 4 (Cohérence)   : motif = <ce qui empêche>
Question à l'humain : <question actionnable>
Interdit

Inventer un score par défaut « pour ne pas bloquer » est exactement le comportement que la Gate INCONNUE empêche. La SPEC reste en draft ou review jusqu'à la décision humaine.

Actions irréversibles et credentials : ce que la Gate vérifie en plus

Dès qu'une SPEC implique une action d'agent irréversible ou un agent disposant de credentials ou d'un accès en écriture à une ressource partagée, le SQS ne suffit plus. La Gate vérifie aussi, à partir de la section « Périmètre d'exécution de l'agent » de la SPEC et du Critère de Drift de l'Intent Statement :

  • le plafond d'autonomie, documenté et appliqué techniquement — une consigne dans un prompt n'est pas une limite ;
  • l'autorisation humaine préalable de chaque action irréversible, par une personne identifiable ;
  • le seuil d'arrêt : tout dépassement d'autonomie constaté arrête l'agent et déclenche une revue humaine immédiate ;
  • le périmètre d'exécution : isolation, sorties réseau, credentials présents, ressources partagées en écriture.

Aucune délégation d'effet irréversible sans plafond documenté et procédure de rollback : c'est le profil « Agents à effet irréversible » d'AIAD-AI-ACT. Le détail est sur la page Autonomie de l'agent.

Le pré-contrôle déterministe gate-precheck — prochaine version, à paraître

La prochaine version du paquet aiad-sdd, à paraître, ajoute la commande npx aiad-sdd gate-precheck <SPEC>, lancée par /sdd gate avant tout scoring SQS. Elle lit la section « Périmètre d'exécution de l'agent » et calcule son verdict hors modèle :

Verdicts du pré-contrôle gate-precheck (à paraître)
VerdictCode de sortieCasEffet sur la Gate
PASS0Section absente (avec avertissements si des mots-clés sensibles figurent dans la SPEC), « Non applicable », ou déclarations complètesPoursuite vers le scoring SQS
FAIL1Action irréversible déclarée sans seuil d'arrêt ; credentials ou ressource partagée sans isolation ni sorties réseau déclaréesGate FERMÉE sans scoring SQS ; les manques forment le plan de remédiation
JNSP2SPEC introuvable ou tableau incompletGate INCONNUE ; les lignes absentes sont listées et la question est posée à l'humain

Seule une déclaration structurée peut fermer la Gate : des mots-clés en prose ne produisent qu'un avertissement, pour ne pas faire régresser les SPEC existantes.

Préparer le Context Engineering Budget

Si la Gate s'ouvre, elle ne se contente pas de tamponner la SPEC : elle prépare le Context Engineering Budget de la session agent à venir — liste des fichiers à injecter, total de tokens estimé, vérification d'un plafond d'environ 50K tokens par session — une heuristique de sobriété assumée, non sourcée, pas une limite technique ; le seuil opérationnel documenté reste 60-70 % de la fenêtre disponible. Le budget est ensuite revérifié au lancement par /sdd exec.

Validation empirique

L'Execution Gate n'est pas un rituel de confort : elle répond à un biais mesuré. Les agents SOTA présentent un biais d'action de 35 à 65 % — la tendance à produire du code plutôt qu'à signaler qu'une exigence est ambiguë ou infaisable. La Gate impose le point d'arrêt humain que l'agent ne s'impose pas lui-même. La synthèse des preuves est consolidée dans docs/legitimation/execution-gate-evidence.md.

Mode guidé : « grill me »

En --guided, la skill grill-me transforme la Gate en interrogatoire interactif : une question à la fois, l'agent propose sa réponse recommandée, l'humain valide ou corrige. Jamais un formulaire statique — la décision d'ouvrir la Gate reste un acte humain.