Blind Tribunal — le tribunal à l'aveugle
Effort: heavy — huit jurés, un angle chacun, routés par palier vers la famille de modèles la moins chère qui suffit, reconvoqués sur des enveloppes fraîches à chaque tour jusqu'à l'unanimité ; à dépenser sur les changements autonomes qui atterrissent sans revue humaine. Élimine : les atterrissages sauvages que rien ne garde, sinon la parole du builder lui-même.
La boucle de notation qui permet à l'humain de s'éloigner sans que l'agent parte en
roue libre. Un panel de jurés examine le changement à l'aveugle, auteur effacé. Chaque
constat devient un nouveau test en échec. La boucle recommence jusqu'à ce que chaque
juré valide. Rien n'est livré sur la seule parole du builder.
Quand le convoquer
- Avant de livrer tout changement autonome qu'aucun humain ne relira.
- Tout changement à grand rayon d'impact : sécurité, données, proche de l'autorité.
- Quand un seul correcteur ne suffit pas et que tu veux des angles indépendants sur le
même artefact.
Les sièges
Huit jurés, un angle chacun. Chacun est un modèle d'une famille DIFFÉRENTE de celle du
builder (même éditeur = même famille). Un juré à qui on demande de tout vérifier ne
vérifie rien correctement.
| Juré |
Id d'angle |
Palier |
La question qu'il pose |
| Défaut |
defect |
généraliste |
Qu'est-ce qui casse vraiment ? Erreurs de logique, de syntaxe, défauts nouveaux. |
| Proportion |
proportion |
généraliste |
Est-ce la bonne taille ? Sur-construit, ou à la mesure de l'intention ? |
| Conséquence |
operator_consequence |
sécurité opérateur |
Si un opérateur humain exécute ceci, qu'est-ce qui est destructeur, dangereux ou nuisible ? |
| Réversibilité |
reversibility |
état profond |
Effets irréversibles ? S'il meurt en plein vol, le système revient-il en arrière proprement ? |
| Continuité |
state_continuity |
état profond |
Variables orphelines, état global écrasé, contexte perdu pour les nœuds en aval ? |
| Économie |
resource_economy |
structurel rapide |
Boucles non optimisées, appels réseau/API redondants, mémoire gonflée ? |
| Bornes |
boundary_condition |
structurel rapide |
Entrées nulles, vides, mal typées ou malformées — échoue-t-il proprement ? |
| Télémétrie |
telemetry |
sécurité opérateur |
Une panne ici se diagnostique-t-elle depuis les logs et la gestion d'erreurs ? |
Paliers de routage (la route la moins chère qui suffit d'abord) : état profond → le
plus grand contexte et le raisonnement le plus profond, idéalement via un harness qui LIT
le repo (n'écrit jamais) ; structurel rapide → d'abord un GPU local gratuit, FUSIONNÉ avec
un vérificateur cloud bon marché qui juge le même prompt : la lentille ne passe que si les
deux passent ; sans cloud, le verdict local reste, marqué UNVERIFIED, jamais « vérifié » en
silence ; et le modèle local doit voir TOUT l'artefact (dimensionne num_ctx sur le prompt
— le défaut d'Ollama, 4096, tronque en silence — et refuse avant l'envoi ce qui ne tient
pas) ; le vérificateur n'est jamais de la même famille que le siège primaire, et un siège UNVERIFIED est une mise en attente (jamais l'unanimité) ; les jurés par harness tournent en read-only, et chaque convocation porte un run_id et écrit son résumé en dernier ; ensuite les modèles cloud à faible latence ; sécurité opérateur → ton
codeur le plus fort ancré sur la sécurité ; généraliste → un grand généraliste fiable.
Chaque échelle finit sur un barreau local de survie.
Montage solo. Quand une seule famille de modèles est disponible, dégrade
EXPLICITEMENT : un contexte ou une session vierge qui n'a jamais vu la conversation de
l'auteur joue le correcteur aveugle, ou l'humain relit l'enveloppe expurgée. Le rapport
doit nommer la barrière affaiblie — « noté même-famille-à-l'aveugle, pas
inter-familles » — jamais faire semblant, en silence, que la barrière inter-familles a
tenu.
Le constructeur est déclaré, et l'exclusion est structurelle
« Famille différente du constructeur » était une règle que les jurés devaient retenir. Lors du
propre test du tribunal, le siège de sécurité opérateur était mené par le modèle même qui avait
construit le candidat, et rien ne l'a enregistré ni exclu : l'auteur a noté son propre travail
pendant deux tours. Donc :
- Convoquez avec le constructeur nommé (
--builder <modèle-ou-famille>). Le registre porte
builder_family. Chaque barreau de cette famille est refusé à voix haute, avant tout envoi, sur
chaque échelle. Une lentille sans barreau est EN ATTENTE — jamais renvoyée au constructeur.
- Même fournisseur = même famille. Une déclaration exclut tout le fournisseur.
- Prouvez-le sur l'échelle vivante, pas dans un test : la table de routage doit montrer que
ses sièges sont passés à une autre famille. Sinon l'exclusion est décorative.
L'enveloppe
Les jurés ne voient jamais le repo, le builder, ni la conversation. Ils voient une
seule enveloppe :
- Les fichiers courants entiers pour chaque fichier touché par le changement, plus
ses fichiers de test. Jamais des bouts de diff nus — un hunk cache le contrat qui
l'entoure et induit de faux constats.
- Le contrat de revue : l'intention du changement en une ligne, et les critères de
réussite.
- Zéro trace d'auteur. Pas de noms, pas d'ids de modèle, pas d'auteurs de commit,
pas d'historique de chat. Si l'identité fuit, la construction de l'enveloppe échoue
fort — on ne note jamais sans l'aveugle.
- Aucune prose sur l'ancien comportement. Décrire ce que le code « faisait avant »
plante des défauts fantômes. Les fichiers parlent d'eux-mêmes.
Le verdict
Du JSON strict, lisible par une machine, un seul objet, pas de prose :
{"verdict": "pass" | "refuse",
"findings": [{"severity": "blocker|major|minor|info",
"claim": "...", "evidence": "..."}]}
- Un pass qui liste un constat
[blocker] ou [major] n'est pas un pass. Contradictoire, il
échoue fermé en refuse, en nommant la sévérité.
- Un verdict pour une autre lentille que celle siégée est un barreau rejeté, pas un verdict :
noté avec les deux lentilles, la marche passe au barreau suivant ; seulement si tous répondent à
côté, la lentille est en attente. Jamais un pass.
- Le répertoire de sortie est possédé avant d'être balayé. L'organe appose un sceau (stamp) sur
le répertoire qu'il revendique ; un répertoire portant ces formes de fichiers SANS le sceau est
refusé, fichiers et remède nommés, rien supprimé. Un répertoire de fichiers étrangers n'a jamais
été en danger et n'est pas bloqué.
- Une lentille qui explose ne jette jamais les verdicts déjà payés. Chaque échec est enregistré
par lentille ; verdicts et résumé sont écrits AVANT de lever l'erreur.
- La preuve de mutation nomme un fichier réécrit (
changed_paths).
- Tout ce que l'organe écrit est réservé au propriétaire (0600).
- Un modèle local débordé n'est déchargé que par son DERNIER détenteur. Deux lentilles peuvent
partager une carte ; la première finie ne retire pas le modèle à l'autre en plein appel.
- Un barreau qui ne peut pas contenir l'artefact est sauté avant l'appel, raison notée ; un
refus de capacité est un TYPE et la marche continue — jamais un arrêt.
- Un juré qui a MAL répondu — du déchet, du non-JSON, un texte de refus — compte comme
refuse ; un juré qui n'a JAMAIS répondu (panne de transport, injoignable) est un
hold : re-siège-le via fleet-ladder, jamais un pass
silencieux. Un seul essai par juré qui répond et par tour — pas de retries.
- Un pass nu, zéro constat et zéro preuve, est un vote pauvre en information. Il
compte, mais jamais comme seule preuve — deux pass nus ne pèsent pas plus qu'un
refuse détaillé. Un pass solide nomme ce qu'il a vérifié.
La boucle
- Rouge d'abord : committe le test-contrat en échec AVANT de construire le correctif,
et consigne ce commit. Le builder n'a pas le droit de toucher le test
(red-first).
- Construis jusqu'au vert.
- Construis l'enveloppe à partir des fichiers COURANTS.
- Assieds les huit jurés, par palier, — des familles différentes de celle du builder
(fleet-ladder résout ce qui est en vie).
- Chaque juré vérifie aussi, il ne se contente pas de lire : les nouveaux tests
passent ; la suite de régression n'est pas pire que la base ; et un contrôle
anti-faux-vert — un test qui DEVRAIT échouer (le bug réintroduit) échoue bien. Un
faux vert vaut refuse.
- Sur tout refuse : CHAQUE constat — blocker, major et minor — devient un NOUVEAU
test en échec, qui échoue pour la vraie raison du constat. Corrige. Reconstruis
l'enveloppe sur les fichiers révisés. Reconvoque TOUS les jurés. Un verdict sur des
fichiers périmés n'est pas un verdict.
- Ne livre que sur pass unanime. Les constats minor levés au dernier tour se ferment
aussi, jamais reportés — « les blockers corrigés, les minors plus tard » est
exactement la fuite que ce skill existe pour stopper. Un constat finit CORRIGÉ ou
réfuté avec preuve consignée, jamais garé.
Le pied nomme la lentille, un barreau rejeté garde ses mots, et le plancher a trois barreaux
Le tour 4 a mis deux lentilles en attente avec zéro refus, et chaque maillon était au dossier. Trois lois en sont sorties :
- Énonce la forme de la réponse à côté de la réponse. Le pied du protocole porte le nom littéral de la lentille (
"lens": "defect"), jamais le marqueur <your lens>. Un juré à qui l'on demandait de se rappeler la lentille énoncée 350 KB plus haut, dans un artefact qui nomme les huit lentilles, a répondu la mauvaise lentille trois fois en deux tours. Remplis le marqueur au rendu.
- Un barreau rejeté laisse ses mots au dossier. Une réponse à la mauvaise lentille ou un verdict annulé porte un
raw_tail borné sur l'entrée rejetée, pour que le tour suivant lise la cause au lieu de la deviner.
- Deux barreaux cloud ne font pas un plancher. Chaque niveau tient au moins trois barreaux sans
context_tokens déclaré (ils portent un artefact de 120k tokens) avant sa queue locale. Une mauvaise lentille plus une annulation ne doivent jamais mettre une lentille en attente.
- Un verdict structuré ne partage jamais son budget avec la réflexion. Un modèle raisonneur à qui l'on demandait un verdict JSON nu a dépensé tout son budget de 65536 tokens à réfléchir sur un artefact de 131k tokens et n'a rien émis (
finish_reason=length) ; le plafond de temps du rôle a ensuite tué le barreau suivant en plein parcours. Chaque barreau cloud qui demande un verdict en objet JSON tourne avec le canal de raisonnement coupé (reasoning_effort: none), et l'échelle du vérificateur garde derrière une troisième famille en HTTP simple.
- Rien d'autre n'écrit dans le dépôt du tribunal pendant qu'il siège. Le fichier d'état d'un correcteur concurrent, dans le checkout, a changé des octets sous un siège, et l'organe a annulé ce verdict honnêtement : il ne peut pas attribuer un changement. Sérialise les écrivains, ou siège sur un worktree séparé du même commit.
Règles dures — une seule enfreinte annule la note
- Le builder ne note jamais son propre travail : ni la même instance, ni la même
famille.
- Un refus de juré ne vaut que ce que vaut l'enveloppe. Avant d'écrire un test à
partir d'un constat, vérifie le constat contre les fichiers réels. Un constat sur du
code que l'enveloppe n'a jamais porté veut dire : corrige l'enveloppe, pas le code.
- Mesure la convergence sur les NOUVEAUX constats par tour, pas sur le total brut. Des
nouveaux constats stables ou en hausse deux tours de suite : arrête et remonte à
l'humain. Ne t'acharne jamais.
- N'affaiblis ni ne modifie jamais les tests en échec pour arracher un pass. Les jurés
vérifient que les fichiers de test n'ont pas bougé depuis le commit rouge.
- Un survivant est une affirmation ; une preuve verte est une affirmation. Relancez à la main
chaque mutant survivant, dans un arbre isolé, avec un plafond qui survit à la charge. Un timeout
n'est pas un survivant ; une erreur de collecte n'est pas une mort. Chaque chemin de verdict doit
pouvoir dire INVALID, et un harnais dont la ligne de base sans mutation n'est pas vert propre
refuse d'émettre des verdicts.
- Un pass unanime ouvre la porte ; ce n'est pas l'arrivée. Livre, puis prouve la
capacité en vif sur la vraie surface. Vert sans preuve en vif, ce n'est pas fini.
Marche bien avec
- red-first — le contrat en échec, committé avant que le builder ne tourne.
- sniper-testing — de vrais effets, des runs ciblés, pas de théâtre de mocks.
- seam-engineering — corriger la classe, balayer les frères, poser un garde.
- repair-loop — la boucle de build que ce tribunal note.
- blind-eval — la barrière garder-ou-annuler, plus légère, quand la question est le goût, pas les défauts.
Crédit d'échafaudage : Matt Pocock, grill-me / grilling (mattpocock/skills, MIT).
Le design du tribunal adversarial aveugle inter-familles est BACKS AIOS.
1---2name: blind-tribunal-43description: À utiliser quand un changement autonome a besoin d'une note indépendante avant d'atterrir et qu'aucun humain n'est dans la boucle. Convoque des jurés à l'aveugle, de familles de modèles différentes — un angle chacun — sur une enveloppe de fichiers entiers expurgée de l'auteur ; chaque constat devient un nouveau test en échec ; boucle jusqu'à ce que chaque juré valide. Trigger words: blind tribunal, grill tribunal, tribunal, jurors, cross-family grade, convene, blind grade, independent grade, grade before landing, tribunal à l'aveugle, jurés, note inter-familles, convoquer, noter avant de livrer, verdict indépendant.4license: MIT5---67# Blind Tribunal — le tribunal à l'aveugle8**Effort:** heavy — huit jurés, un angle chacun, routés par palier vers la famille de modèles la moins chère qui suffit, reconvoqués sur des enveloppes fraîches à chaque tour jusqu'à l'unanimité ; à dépenser sur les changements autonomes qui atterrissent sans revue humaine. Élimine : les atterrissages sauvages que rien ne garde, sinon la parole du builder lui-même.910La boucle de notation qui permet à l'humain de s'éloigner sans que l'agent parte en11roue libre. Un panel de jurés examine le changement à l'aveugle, auteur effacé. Chaque12constat devient un nouveau test en échec. La boucle recommence jusqu'à ce que chaque13juré valide. Rien n'est livré sur la seule parole du builder.1415## Quand le convoquer1617- Avant de livrer tout changement autonome qu'aucun humain ne relira.18- Tout changement à grand rayon d'impact : sécurité, données, proche de l'autorité.19- Quand un seul correcteur ne suffit pas et que tu veux des angles indépendants sur le20 même artefact.2122## Les sièges2324Huit jurés, un angle chacun. Chacun est un modèle d'une famille DIFFÉRENTE de celle du25builder (même éditeur = même famille). Un juré à qui on demande de tout vérifier ne26vérifie rien correctement.2728| Juré | Id d'angle | Palier | La question qu'il pose |29| --- | --- | --- | --- |30| Défaut | `defect` | généraliste | Qu'est-ce qui casse vraiment ? Erreurs de logique, de syntaxe, défauts nouveaux. |31| Proportion | `proportion` | généraliste | Est-ce la bonne taille ? Sur-construit, ou à la mesure de l'intention ? |32| Conséquence | `operator_consequence` | sécurité opérateur | Si un opérateur humain exécute ceci, qu'est-ce qui est destructeur, dangereux ou nuisible ? |33| Réversibilité | `reversibility` | état profond | Effets irréversibles ? S'il meurt en plein vol, le système revient-il en arrière proprement ? |34| Continuité | `state_continuity` | état profond | Variables orphelines, état global écrasé, contexte perdu pour les nœuds en aval ? |35| Économie | `resource_economy` | structurel rapide | Boucles non optimisées, appels réseau/API redondants, mémoire gonflée ? |36| Bornes | `boundary_condition` | structurel rapide | Entrées nulles, vides, mal typées ou malformées — échoue-t-il proprement ? |37| Télémétrie | `telemetry` | sécurité opérateur | Une panne ici se diagnostique-t-elle depuis les logs et la gestion d'erreurs ? |3839**Paliers de routage (la route la moins chère qui suffit d'abord) :** état profond → le40plus grand contexte et le raisonnement le plus profond, idéalement via un harness qui LIT41le repo (n'écrit jamais) ; structurel rapide → d'abord un GPU local gratuit, FUSIONNÉ avec42un vérificateur cloud bon marché qui juge le même prompt : la lentille ne passe que si les43deux passent ; sans cloud, le verdict local reste, marqué UNVERIFIED, jamais « vérifié » en44silence ; et le modèle local doit voir TOUT l'artefact (dimensionne `num_ctx` sur le prompt45— le défaut d'Ollama, 4096, tronque en silence — et refuse avant l'envoi ce qui ne tient46pas) ; le vérificateur n'est jamais de la même famille que le siège primaire, et un siège UNVERIFIED est une mise en attente (jamais l'unanimité) ; les jurés par harness tournent en read-only, et chaque convocation porte un `run_id` et écrit son résumé en dernier ; ensuite les modèles cloud à faible latence ; sécurité opérateur → ton47codeur le plus fort ancré sur la sécurité ; généraliste → un grand généraliste fiable.48Chaque échelle finit sur un barreau local de survie.4950**Montage solo.** Quand une seule famille de modèles est disponible, dégrade51EXPLICITEMENT : un contexte ou une session vierge qui n'a jamais vu la conversation de52l'auteur joue le correcteur aveugle, ou l'humain relit l'enveloppe expurgée. Le rapport53doit nommer la barrière affaiblie — « noté même-famille-à-l'aveugle, pas54inter-familles » — jamais faire semblant, en silence, que la barrière inter-familles a55tenu.5657## Le constructeur est déclaré, et l'exclusion est structurelle5859« Famille différente du constructeur » était une règle que les jurés devaient retenir. Lors du60propre test du tribunal, le siège de sécurité opérateur était mené par le modèle même qui avait61construit le candidat, et rien ne l'a enregistré ni exclu : l'auteur a noté son propre travail62pendant deux tours. Donc :6364- **Convoquez avec le constructeur nommé** (`--builder <modèle-ou-famille>`). Le registre porte65 `builder_family`. Chaque barreau de cette famille est refusé à voix haute, avant tout envoi, sur66 chaque échelle. Une lentille sans barreau est EN ATTENTE — jamais renvoyée au constructeur.67- **Même fournisseur = même famille.** Une déclaration exclut tout le fournisseur.68- **Prouvez-le sur l'échelle vivante, pas dans un test :** la table de routage doit montrer que69 ses sièges sont passés à une autre famille. Sinon l'exclusion est décorative.7071## L'enveloppe7273Les jurés ne voient jamais le repo, le builder, ni la conversation. Ils voient une74seule enveloppe :7576- **Les fichiers courants entiers** pour chaque fichier touché par le changement, plus77 ses fichiers de test. Jamais des bouts de diff nus — un hunk cache le contrat qui78 l'entoure et induit de faux constats.79- **Le contrat de revue** : l'intention du changement en une ligne, et les critères de80 réussite.81- **Zéro trace d'auteur.** Pas de noms, pas d'ids de modèle, pas d'auteurs de commit,82 pas d'historique de chat. Si l'identité fuit, la construction de l'enveloppe échoue83 fort — on ne note jamais sans l'aveugle.84- **Aucune prose sur l'ancien comportement.** Décrire ce que le code « faisait avant »85 plante des défauts fantômes. Les fichiers parlent d'eux-mêmes.8687## Le verdict8889Du JSON strict, lisible par une machine, un seul objet, pas de prose :9091```json92{"verdict": "pass" | "refuse",93 "findings": [{"severity": "blocker|major|minor|info",94 "claim": "...", "evidence": "..."}]}95```9697- **Un pass qui liste un constat `[blocker]` ou `[major]` n'est pas un pass.** Contradictoire, il98 échoue fermé en refuse, en nommant la sévérité.99- **Un verdict pour une autre lentille que celle siégée** est un barreau rejeté, pas un verdict :100 noté avec les deux lentilles, la marche passe au barreau suivant ; seulement si tous répondent à101 côté, la lentille est en attente. Jamais un pass.102- **Le répertoire de sortie est possédé avant d'être balayé.** L'organe appose un sceau (stamp) sur103 le répertoire qu'il revendique ; un répertoire portant ces formes de fichiers SANS le sceau est104 refusé, fichiers et remède nommés, rien supprimé. Un répertoire de fichiers étrangers n'a jamais105 été en danger et n'est pas bloqué.106- **Une lentille qui explose ne jette jamais les verdicts déjà payés.** Chaque échec est enregistré107 par lentille ; verdicts et résumé sont écrits AVANT de lever l'erreur.108- **La preuve de mutation nomme un fichier réécrit** (`changed_paths`).109- **Tout ce que l'organe écrit est réservé au propriétaire (0600).**110- **Un modèle local débordé n'est déchargé que par son DERNIER détenteur.** Deux lentilles peuvent111 partager une carte ; la première finie ne retire pas le modèle à l'autre en plein appel.112- **Un barreau qui ne peut pas contenir l'artefact est sauté avant l'appel**, raison notée ; un113 refus de capacité est un TYPE et la marche continue — jamais un arrêt.114- Un juré qui a MAL répondu — du déchet, du non-JSON, un texte de refus — compte comme115 **refuse** ; un juré qui n'a JAMAIS répondu (panne de transport, injoignable) est un116 **hold** : re-siège-le via [fleet-ladder](../fleet-ladder/SKILL.md), jamais un pass117 silencieux. Un seul essai par juré qui répond et par tour — pas de retries.118- Un pass nu, zéro constat et zéro preuve, est un **vote pauvre en information**. Il119 compte, mais jamais comme seule preuve — deux pass nus ne pèsent pas plus qu'un120 refuse détaillé. Un pass solide nomme ce qu'il a vérifié.121122## La boucle1231241. Rouge d'abord : committe le test-contrat en échec AVANT de construire le correctif,125 et consigne ce commit. Le builder n'a pas le droit de toucher le test126 ([red-first](../red-first/SKILL.md)).1272. Construis jusqu'au vert.1283. Construis l'enveloppe à partir des fichiers COURANTS.1294. Assieds les huit jurés, par palier, — des familles différentes de celle du builder130 ([fleet-ladder](../fleet-ladder/SKILL.md) résout ce qui est en vie).1315. Chaque juré vérifie aussi, il ne se contente pas de lire : les nouveaux tests132 passent ; la suite de régression n'est pas pire que la base ; et un contrôle133 anti-faux-vert — un test qui DEVRAIT échouer (le bug réintroduit) échoue bien. Un134 faux vert vaut refuse.1356. Sur tout refuse : CHAQUE constat — blocker, major et minor — devient un NOUVEAU136 test en échec, qui échoue pour la vraie raison du constat. Corrige. Reconstruis137 l'enveloppe sur les fichiers révisés. Reconvoque TOUS les jurés. Un verdict sur des138 fichiers périmés n'est pas un verdict.1397. Ne livre que sur pass unanime. Les constats minor levés au dernier tour se ferment140 aussi, jamais reportés — « les blockers corrigés, les minors plus tard » est141 exactement la fuite que ce skill existe pour stopper. Un constat finit CORRIGÉ ou142 réfuté avec preuve consignée, jamais garé.143144## Le pied nomme la lentille, un barreau rejeté garde ses mots, et le plancher a trois barreaux145146Le tour 4 a mis deux lentilles en attente avec zéro refus, et chaque maillon était au dossier. Trois lois en sont sorties :147148- **Énonce la forme de la réponse à côté de la réponse.** Le pied du protocole porte le nom littéral de la lentille (`"lens": "defect"`), jamais le marqueur `<your lens>`. Un juré à qui l'on demandait de se rappeler la lentille énoncée 350 KB plus haut, dans un artefact qui nomme les huit lentilles, a répondu la mauvaise lentille trois fois en deux tours. Remplis le marqueur au rendu.149- **Un barreau rejeté laisse ses mots au dossier.** Une réponse à la mauvaise lentille ou un verdict annulé porte un `raw_tail` borné sur l'entrée rejetée, pour que le tour suivant lise la cause au lieu de la deviner.150- **Deux barreaux cloud ne font pas un plancher.** Chaque niveau tient au moins trois barreaux sans `context_tokens` déclaré (ils portent un artefact de 120k tokens) avant sa queue locale. Une mauvaise lentille plus une annulation ne doivent jamais mettre une lentille en attente.151- **Un verdict structuré ne partage jamais son budget avec la réflexion.** Un modèle raisonneur à qui l'on demandait un verdict JSON nu a dépensé tout son budget de 65536 tokens à réfléchir sur un artefact de 131k tokens et n'a rien émis (`finish_reason=length`) ; le plafond de temps du rôle a ensuite tué le barreau suivant en plein parcours. Chaque barreau cloud qui demande un verdict en objet JSON tourne avec le canal de raisonnement coupé (`reasoning_effort: none`), et l'échelle du vérificateur garde derrière une troisième famille en HTTP simple.152- **Rien d'autre n'écrit dans le dépôt du tribunal pendant qu'il siège.** Le fichier d'état d'un correcteur concurrent, dans le checkout, a changé des octets sous un siège, et l'organe a annulé ce verdict honnêtement : il ne peut pas attribuer un changement. Sérialise les écrivains, ou siège sur un worktree séparé du même commit.153154## Règles dures — une seule enfreinte annule la note155156- Le builder ne note jamais son propre travail : ni la même instance, ni la même157 famille.158- **Un refus de juré ne vaut que ce que vaut l'enveloppe.** Avant d'écrire un test à159 partir d'un constat, vérifie le constat contre les fichiers réels. Un constat sur du160 code que l'enveloppe n'a jamais porté veut dire : corrige l'enveloppe, pas le code.161- Mesure la convergence sur les NOUVEAUX constats par tour, pas sur le total brut. Des162 nouveaux constats stables ou en hausse deux tours de suite : arrête et remonte à163 l'humain. Ne t'acharne jamais.164- N'affaiblis ni ne modifie jamais les tests en échec pour arracher un pass. Les jurés165 vérifient que les fichiers de test n'ont pas bougé depuis le commit rouge.166- **Un survivant est une affirmation ; une preuve verte est une affirmation.** Relancez à la main167 chaque mutant survivant, dans un arbre isolé, avec un plafond qui survit à la charge. Un timeout168 n'est pas un survivant ; une erreur de collecte n'est pas une mort. Chaque chemin de verdict doit169 pouvoir dire INVALID, et un harnais dont la ligne de base sans mutation n'est pas vert propre170 refuse d'émettre des verdicts.171- Un pass unanime ouvre la porte ; ce n'est pas l'arrivée. Livre, puis prouve la172 capacité en vif sur la vraie surface. Vert sans preuve en vif, ce n'est pas fini.173174## Marche bien avec175176- [red-first](../red-first/SKILL.md) — le contrat en échec, committé avant que le builder ne tourne.177- [sniper-testing](../sniper-testing/SKILL.md) — de vrais effets, des runs ciblés, pas de théâtre de mocks.178- [seam-engineering](../seam-engineering/SKILL.md) — corriger la classe, balayer les frères, poser un garde.179- [repair-loop](../repair-loop/SKILL.md) — la boucle de build que ce tribunal note.180- [blind-eval](../blind-eval/SKILL.md) — la barrière garder-ou-annuler, plus légère, quand la question est le goût, pas les défauts.181182> Crédit d'échafaudage : Matt Pocock, grill-me / grilling (mattpocock/skills, MIT).183> Le design du tribunal adversarial aveugle inter-familles est BACKS AIOS.