Boucle de l'Épreuve (Gauntlet Loop)
Transformez les instructions ou objectifs initiaux d'un utilisateur en une Boucle de l'Épreuve — un cycle de rétroaction autonome constructeur-critique fondé sur la technique Claude of Duty de Matt Shumer, robonuggets/gauntlet-loop, duolahypercho/gauntlet-loop, et le Cadre à Trois Éléments de l'Ingénierie de Boucle IA.
La plupart des sorties d'agent s'arrêtent à « assez bon pour l'IA » parce que le constructeur note son propre travail en se basant sur des mots vagues. Une Boucle de l'Épreuve remplace l'invitation unique par un cycle persistant construit sur trois éléments fondamentaux :
- Objectif : Le livrable concret et l'état de résultat qui doit devenir vrai.
- Référence ou Métrique (La Barre & le Critique Impitoyable) : Un benchmark nommé, récupérable et comparable côte à côte — associé à des tests objectifs ou des métriques si applicable — jugé à l'aveugle par un critique séparé avec un contexte frais.
- Limite : Critères de succès explicites, plafonds de tours/stagnation, règles de pivot stratégique, et portes de sécurité/autorisation qui contrôlent quand la boucle s'arrête ou s'escalade.
Étape 1 : Identifier les Instructions & Contexte de Départ
- Si l'utilisateur a passé des instructions en ligne avec
/gauntlet-loop <instructions>, utilisez-les comme point de départ. - Si l'utilisateur a invoqué
/gauntlet-loopsans arguments pendant une conversation en cours, utilisez la tâche, le plan ou l'invite en cours de discussion. - S'il n'y a pas de tâche claire dans le message ou l'historique de la conversation, demandez à l'utilisateur ce qu'il veut construire ou accomplir avant de continuer.
- Si la tâche touche une base de code ou un espace de travail local, inspectez rapidement la structure des répertoires, la pile technique, le lanceur de tests ou les scripts de build afin que vos valeurs par défaut proposées fassent référence à des outils et commandes réels du projet.
Étape 2 : Clarifier les Trois Éléments de la Boucle (Proposition de Valeurs par Défaut)
Auditez la demande de l'utilisateur par rapport aux Trois Éléments Fondamentaux ci-dessous. Chaque fois qu'un élément est manquant, sous-spécifié ou utilise une barre de qualité vague, demandez à l'utilisateur de confirmer ou d'ajuster les trois éléments tout en proposant des valeurs par défaut concrètes et tranchées.
Règle de voie rapide : Si l'utilisateur a déjà fourni un Objectif clair, une Référence/Métrique spécifique et récupérable, et des Limites claires — ou a explicitement dit « utilise les valeurs par défaut » / « écris juste l'invite » — sautez la question et passez directement à l'Étape 3 en utilisant vos meilleures valeurs par défaut.
1. Objectif (Quel Résultat Concret Doit Devenir Vrai ?)
- Remplacez les intentions vagues (« améliorer le site », « écrire un bon CLI ») par un état de résultat observable et un livrable (« Construire une page de tarification SaaS réactive en Next.js + Tailwind où un visiteur pour la première fois peut comparer tous les plans et finaliser le paiement sur mobile »).
- Valeur par Défaut Proposée : Rédigez un Objectif affiné de 1 à 2 phrases (incluant la pile technique / le format détecté ou recommandé) pour que l'utilisateur l'approuve ou le modifie.
2. Référence ou Métrique (La Barre de Qualité & le Juge Externe)
Tout dans une Boucle de l'Épreuve dépend de la barre de qualité. Une barre de référence valide doit passer trois tests :
- Nommée : Un artefact du monde réel spécifique, pas un adjectif ou une catégorie. (« La page de tarification en direct de Stripe » ou « les captures d'écran de combat de Hades » fonctionnent ; « un design SaaS primé » ou « qualité AAA » seul échoue.)
- Récupérable / Inspectable : Le critique peut effectivement l'obtenir et l'inspecter pendant l'exécution — capturer l'URL en direct, lire l'article publié, exécuter le binaire, ou inspecter le dépôt. Si l'agent ne peut pas récupérer la référence, il hallucinera la comparaison et approuvera un travail médiocre.
- Comparable : Notre sortie réelle et la référence peuvent être placées côte à côte avec les étiquettes retirées, de sorte qu'un critique frais puisse faire un choix binaire A/B à l'aveugle (« Lequel gagne ? ») et nommer le plus grand écart restant unique. N'utilisez jamais un score numérique de 1 à 10, qui dérive vers le haut à chaque tour.
Goût + Nombre bat le goût seul : Chaque fois que l'objectif a une dimension mesurable (suite de tests unitaires/intégration, latence p95, score Lighthouse/accessibilité, zéro débordement horizontal à 360px, débit de benchmark, nombre de mots, ou trace de citation de source primaire), associez la barre de référence qualitative à un vérificateur objectif dur.
| Type d'Objectif | Barre de Référence + Métrique qui Fonctionne |
|---|---|
| Site Web, App, UI | URL en direct d'un produit spécifique de meilleure qualité (linear.app, stripe.com/pricing, vercel.com) capturée en écran à des résolutions desktop & mobile + zéro erreur console/accessibilité/débordement |
| Code, CLI, Bibliothèque | Un dépôt open-source nommé ou l'implémentation d'un outil (ripgrep, jq, esbuild) + une suite de tests automatisée, un fuzzer de propriétés, et un script de benchmark de latence/débit |
| Jeu, 3D, Interactif | Captures d'écran ou séquences de jeu réelles d'un titre commercialisé nommé (Call of Duty, Hades, Brotato) comparées à des images en jeu en direct + cible FPS / vérification de jouabilité |
| Écriture, Documentation, Explication | 2 à 3 pièces publiées spécifiques d'un auteur ou publication nommé (par exemple Julia Evans, Stripe Engineering Blog, Gwern) comparées à l'aveugle avec les signatures retirées + vérification de la longueur cible / du temps de lecture |
| Recherche, Stratégie, Analyse | Un rapport d'analyste nommé, une section de méthodes d'un article de benchmark, ou un mémo de vendeur à découvert forensique + réconciliation automatisée de toutes les affirmations avec les données sources brutes |
| Diaporama, Livrable | Une présentation publique ou un mémo spécifique d'une entreprise de référence au même nombre de pages/diapositives + vérification de la clarté narrative |
- Valeur par Défaut Proposée : Offrez 2 à 3 barres candidates spécifiques, nommées et récupérables (en marquant la plus difficile réellement atteignable comme
(Recommandé)), associées à une métrique/vérificateur objectif concret.
3. Limite (Conditions d'Arrêt, Budgets & Portes de Sécurité)
« Boucler jusqu'à la perfection absolue » motive le critique, mais une boucle sans limites contre une barre inaccessible peut tourner indéfiniment, brûler des jetons, ou effectuer des changements dangereux. Définissez des limites explicites sur trois sous-axes :
- Arrêt sur Succès & Convergence : Quittez lorsque chaque composant passe son vérificateur objectif et remporte la comparaison à l'aveugle contre la référence (ou lorsqu'un « frein » désigné par l'humain arrête l'exécution).
- Plafond d'Itération & de Stagnation : Limitez les tours par composant (par défaut : max 5 tours par pièce ou arrêtez après 2 tours consécutifs sans amélioration significative). Exigez que le constructeur change de stratégie si le même écart échoue deux fois de suite.
- Portes d'Autorisation & de Sécurité : Autorisez la lecture locale, l'ébauche, l'édition, la construction, le rendu et les tests. Interdisez les actions irréversibles ou externes sans approbation humaine explicite (pas de déploiement en production, de suppressions destructrices, de dépenses API payantes, de modifications de credentials/secrets, ou de messages externes).
Comment Demander à l'Utilisateur
Si des clarifications sont nécessaires, présentez une invite brève et facile à parcourir (ou utilisez l'outil structuré ask_question du harnais s'il est disponible) couvrant uniquement les éléments non résolus, avec des valeurs par défaut pré-remplies afin que l'utilisateur puisse répondre par un seul raccourci (par exemple, « 1, utilise les valeurs par défaut ») :
- Objectif : Énoncez votre Objectif affiné proposé + la pile et demandez si quelque chose doit changer.
- Référence & Métrique : Listez 2–3 barres candidates nommées et récupérables (
A,B,C, avecA (Recommandé)) ainsi que le vérificateur/test objectif proposé. - Limite : Proposez la condition d'arrêt par défaut (par exemple, Gagner l'A/B à l'aveugle + réussir les vérifications, max 5 tours/pièce, pivoter la stratégie après 2 échecs identiques, éditions locales uniquement) OU « Humain comme frein (continue de boucler jusqu'à ce que je l'arrête) », et demandez quel mode ils préfèrent.
Étape 3 : Produire la Boucle de l'Épreuve Transformée
Une fois que l'Objectif, la Référence/Métrique et les Limites sont choisis (ou mis par défaut), présentez le résultat en trois parties :
1. Fiche de Conception de la Boucle de l'Épreuve
Produisez un tableau récapitulatif concis verrouillant l'architecture de la boucle :
- Objectif : Le résultat exact et le livrable qui doit devenir vrai.
- Barre de Référence (Goût) : L'artefact nommé et récupérable et comment il sera récupéré/inspecté avant la construction.
- Métrique Objective (Nombre) : Le test automatisé, le benchmark, la vérification de mise en page, ou la vérification factuelle requise avant une revue du critique.
- Règle de Décomposition : Comment le travail se divise en petites pièces jugées indépendamment (paralléliser uniquement les parties réellement indépendantes ; maintenir les systèmes fortement couplés sous une propriété séquentielle cohérente).
- Protocole du Critique : Sous-agent séparé avec contexte frais ; inspecte l'artefact réellement rendu/exécuté (jamais le résumé du constructeur) ; effectue une comparaison A/B à l'aveugle avec les étiquettes retirées ; fait un choix binaire et nomme le plus grand écart restant unique.
- État & Progrès : Le fichier utilisé pour persister la mémoire de la boucle (
GAUNTLET_PROGRESS.mdou une page de progrès en direct) enregistrant les parties complétées, les preuves, les approches échouées et les écarts restants afin que le contexte ne se dégrade pas. - Limite : Les règles d'arrêt actives, les plafonds de tours et les portes de sécurité.
2. L'Invite de la Boucle de l'Épreuve
Produisez une invite autonome prête à copier-coller dans un bloc markdown délimité. Fournissez l'Invite Universelle de la Boucle de l'Épreuve ci-dessous (adaptée à la tâche, aux outils et à la pile de l'utilisateur), et si l'utilisateur souhaite le style ultra-compact en 3 paragraphes de Matt Shumer ou des commandes de boucle spécifiques au harnais, adaptez la conclusion en conséquence (voir references/examples.md).
Construis [LIVRABLE / OBJECTIF] en [PILE / FORMAT].
## 1. La Barre de Qualité & Métrique (Récupère d'Abord)
La barre de qualité est [RÉFÉRENCE NOMMÉE ET RÉCUPÉRABLE]. Avant de construire ou de juger, récupère et inspecte la référence réelle directement ([COMMENT RÉCUPÉRER : capture d'écran de l'URL en direct en desktop & mobile / extrait le texte publié / clone ou exécute l'implémentation de référence]) — ne compare jamais avec une mémoire ou une description de celle-ci.
Chaque pièce doit également passer ces vérifications objectives : [MÉTRIQUES / TESTS / BENCHMARKS OBJECTIFS].
## 2. Décomposition & Propriété
Divise le travail en les plus petites pièces qui peuvent être construites, vérifiées et jugées seules : [PIÈCES CANDIDATES INITIALES].
- Déploie des sous-agents constructeurs en parallèle UNIQUEMENT pour les pièces qui sont vraiment indépendantes.
- Maintiens les systèmes fortement couplés sous une propriété séquentielle cohérente afin que les composants n'entrent pas en collision.
## 3. La Boucle Constructeur vs. Critique Impitoyable
Pour chaque pièce, exécute un constructeur et un sous-agent critique séparé avec un contexte frais (pas d'accès à la chaîne de pensée ou aux excuses du constructeur) :
1. **Construis & Vérifie** : Le constructeur crée ou révise la pièce et exécute les vérifications objectives ([TESTS / LINT / BENCHMARK / RENDU]).
2. **Inspecte l'Artefact Réel** : Le critique ouvre et inspecte la sortie réelle ([CAPTURES D'ÉCRAN / BINAIRE EN COURS D'EXÉCUTION / JOURNAUX DE TEST / TEXTE ÉBAUCHE]) — jamais le résumé du constructeur.
3. **Choix A/B à l'Aveugle** : Le critique place notre artefact à côté de [RÉFÉRENCE NOMMÉE] à l'aveugle avec les étiquettes retirées, fait un choix binaire de celui qui est meilleur, et — si le nôtre perd — identifie le **plus grand écart restant unique** avec des preuves concrètes et le renvoie au constructeur.
4. **Pas de Note Douce** : Le critique doit être impitoyablement dur. Les éloges et les scores numériques de 1 à 10 sont interdits. Si le nôtre ne remporte pas la comparaison à l'aveugle et ne passe pas toutes les vérifications objectives, continue de boucler.
## 4. Suivi de l'État & Changements de Stratégie
Maintenez un `GAUNTLET_PROGRESS.md` compact (et/ou une vue de progrès en direct) après chaque tour enregistrant : la pièce actuelle, le numéro du tour, le verdict du critique, l'écart unique ciblé, les approches échouées, et les résultats des vérifications objectives. Si le même écart échoue deux fois de suite, abandonnez l'approche actuelle et essayez une stratégie structurellement différente.
## 5. Passage d'Intégration Finale & Limites
- **Critique d'Intégration** : Une fois que les pièces individuelles gagnent, générez un critique d'intégration frais pour inspecter l'artefact assemblé complet de bout en bout pour la cohérence, les joints, la performance et l'adéquation avec l'objectif original.
- **Limites** : [CONDITIONS D'ARRÊT : par exemple, Arrêtez lorsque toutes les pièces + l'intégration gagnent l'A/B à l'aveugle et passent toutes les vérifications objectives, ou après N tours par pièce / 2 tours consécutifs sans gain mesurable]. Actions autorisées : [ACTIONS LOCALES AUTORISÉES]. Ne [ACTIONS INTERDITES : déployer en production, supprimer des données, dépenser de l'argent, ou toucher aux credentials] sans approbation humaine explicite.
[QUEUE DE BOUCLE DU HARNAIS : Continue de boucler jusqu'à ce que le critique choisisse le nôtre dans chaque pièce, en exécutant les constructeurs et les critiques en tant que sous-agents. / Ou pour Claude Code : `/loop` sur chaque pièce jusqu'à ce qu'elle gagne ; déploie des sous-agents et `ultracode`. / Ou pour Codex : `/goal` jusqu'à ce que chaque pièce gagne.]
3. Offre d'Exécution
Terminez en demandant :
« Souhaitez-vous que j'exécute cette Boucle de l'Épreuve maintenant en tant qu'orchestrateur principal, que je modifie l'un des trois éléments (Objectif, Référence/Métrique, Limite), ou que je change le style de l'invite (Universelle avec Limites vs. Invite Classique de 150 Mots pour Claude
/loopou Codex/goal) ? »
Si l'utilisateur dit de l'exécuter, adoptez immédiatement l'invite générée comme vos instructions opérationnelles actives : récupérez la référence en premier, initialisez GAUNTLET_PROGRESS.md, décomposez les pièces, et commencez le Tour 1.
Ce qui Casse une Boucle de l'Épreuve (Garde-fous)
N'autorisez jamais ces modes d'échec dans une invite de Boucle de l'Épreuve générée :
- Une barre vague ou non récupérable : « Rends-le de classe mondiale » ou nommer un artefact payant/inaccessible force le critique à halluciner la comparaison et à approuver tout à la chaîne.
- Le constructeur jugeant son propre travail : Un constructeur se souvient de chaque compromis qu'il a fait et les rationalise. Le critique doit être un sous-agent à contexte frais (ou un passage de vérification propre dépouillé des justifications du constructeur).
- Scores numériques de 1 à 10 au lieu d'un choix binaire : Les scores sur 10 dérivent automatiquement de 7/10 à 9/10 au fil des tours. Exigez un choix binaire A/B à l'aveugle (« Lequel gagne ? ») plus le plus grand écart restant unique.
- Le critique lisant des résumés au lieu d'inspecter l'artefact : Un rapport d'état Markdown reluisant n'est pas une preuve. Le critique doit inspecter les pixels rendus, exécuter le binaire/tests, ou lire le texte réel.
- Paralléliser du code fortement couplé : Déployer 10 sous-agents sur la même boucle d'état ou le même pipeline de rendu partagé provoque des collisions de fusion et des joints visuels. Parallélisez uniquement les pièces indépendantes et imposez une propriété séquentielle pour les systèmes couplés.
- Aucune contrainte sur une boucle de perfection : Sans plafond de tours ou règle de pivot, le constructeur repeindra la même clôture dans 50 tours tout en faisant monter son score auto-évalué de 7/10 à 9/10. Utilisez des plafonds durs et un déclencheur de changement de stratégie.