git:20261015.d2f868b to git:20261015.94296b5

35 added, 29 removed. Audit A to A.

---
name: "blind-tribunal"
description: "Nutze das, wenn eine autonome Änderung vor dem Landen eine unabhängige Bewertung braucht und kein Mensch in der Schleife ist. Beruft blinde, fähigkeits-aufgelöste Juroren ein — eine Linse pro Kopf — über einen autor-geschwärzten Umschlag ganzer Dateien; jeder Befund wird ein neuer fehlschlagender Test; Schleife, bis jeder Juror passt. Trigger words: blind tribunal, grill tribunal, tribunal, jurors, independent grade, convene, blind grade, independent grade, grade before landing, Tribunal, Juroren, blinde Bewertung, unabhängige Bewertung, vor dem Landen bewerten."
license: "MIT"
---
# Blind Tribunal
**Effort:** heavy — acht Juroren, eine Linse pro Kopf, nach Stufe an die günstigste ausreichende Modell-Sprosse geroutet, jede Runde auf frischen Umschlägen neu einberufen, bis sie einstimmig sind; investier das in autonome Änderungen, die ohne menschliches Review landen. Beseitigt: entgleiste Landungen, die nichts bewacht außer dem eigenen Wort des Builders.
Die Bewertungsschleife, mit der der Mensch weggehen kann, ohne dass der Agent
entgleist. Ein Panel aus Juroren prüft die Änderung blind, mit entfernter
Autorschaft. Jeder Befund wird ein neuer fehlschlagender Test. Die Schleife läuft,
bis jeder Juror passt. Nichts landet allein auf das Wort des Builders.
## Wann einsetzen
- Vor dem Landen jeder autonomen Änderung, die kein Mensch reviewen wird.
- Jede Änderung mit großem Explosionsradius: sicherheitsnah, datenberührend,
autoritätsnah.
- Wenn ein Grader nicht reicht und du unabhängige Linsen auf demselben Artefakt willst.
## Die Sitze
Acht Juroren, eine Linse pro Kopf. Die ausführende Session, die den Kandidaten gebaut hat, ist
als Provenienz vermerkt und disqualifiziert; jede Session, die die Konversation oder den Kontext
des Builders geerbt hat, ebenso. Ein Juror, der alles prüfen soll, prüft nichts richtig.
| Juror | Linsen-Id | Stufe | Die Frage, die er stellt |
| --- | --- | --- | --- |
| Defekt | `defect` | Generalist | Was geht wirklich kaputt? Logikfehler, Syntaxfehler, neue Defekte. |
| Proportion | `proportion` | Generalist | Ist das die richtige Größe? Überbaut, oder passend zur Absicht? |
| Konsequenz | `operator_consequence` | Operator-Sicherheit | Wenn ein Mensch das auf seiner Maschine ausführt — was ist zerstörerisch, unsicher oder schädlich? |
| Reversibilität | `reversibility` | Deep State | Bleiben irreversible Nebeneffekte? Stirbt es mittendrin — rollt das System sauber zurück? |
| Kontinuität | `state_continuity` | Deep State | Verwaiste Variablen, überschriebener globaler Zustand, verlorener Kontext für nachgelagerte Knoten? |
| Ökonomie | `resource_economy` | schnell-strukturell | Unoptimierte Schleifen, redundante Netz-/API-Aufrufe, Speicher-Bloat? |
| Grenzfall | `boundary_condition` | schnell-strukturell | Null, leer, falscher Typ, absichtlich kaputt — fällt es sauber aus? |
| Telemetrie | `telemetry` | Operator-Sicherheit | Lässt sich ein Fehler hier aus Logs und Fehlerbehandlung diagnostizieren? |
- **Routing-Stufen (die günstigste ausreichende Route zuerst):** Deep State → größter
- Kontext und tiefstes Reasoning, idealerweise durch einen Harness, der das Repo LIEST
- (nie schreibt); schnell-strukturell → erst eine freie lokale GPU; ein unabhängig
- hinreichendes lokales Urteil darf PASSEN, auch wenn kein Cloud- oder optionaler
- Verifizierer verfügbar ist und der Auftrag keinen verlangt. Wenn ein optionaler
- Verifizierer mit dem Primärsitz FUSIONIERT ist, beurteilt er denselben Prompt; ist der
- Verifizierer nicht erreichbar (keine Cloud-Sprosse live), steht das lokale
- Primärurteil auf eigener Evidenz, markiert UNVERIFIED in der Bewertung und der
- Zusammenfassung — nie stillschweigend „verifiziert". Ein vom Auftrag VERLANGTER
- Verifizierer, der fehlt, ist HALT unabhängig von lokal/Cloud. Das lokale Modell muss
- das GANZE Artefakt sehen (`num_ctx` auf den Prompt dimensionieren — Ollamas Default
- 4096 kürzt stillschweigend — und vor dem Senden ablehnen, was nicht passt); ein
- Harness-Juror läuft read-only, und jede Einberufung trägt eine `run_id` und schreibt
- ihre Zusammenfassung zuletzt; danach die Cloud-Modelle mit niedriger Latenz;
+ **Routing-Stufen (die günstigste gemessen ausreichende Route zuerst):** jede Stufe wird
+ nach dem geroutet, was die Linse braucht, nicht nach dem größten Modell, das du hast;
+ Reihenfolge und Wahl kommen aus der live konfigurierten Sprossen-Matrix und der
+ gemessenen Kosten/Verfügbarkeit — keine universelle Cloud-zuerst / Lokal-zuletzt
+ Präferenz. Deep State → größter Kontext und tiefstes Reasoning, idealerweise durch
+ einen Harness, der das Repo LIEST (nie schreibt); schnell-strukturell → die günstigste
+ schnelle Route, die die Anforderungen erfüllt; ein unabhängig hinreichendes lokales
+ Urteil darf PASSEN, auch wenn kein Cloud- oder optionaler Verifizierer verfügbar ist
+ und der Auftrag keinen verlangt. Wenn ein optionaler Verifizierer mit dem Primärsitz
+ FUSIONIERT ist, beurteilt er denselben Prompt; ist der Verifizierer nicht erreichbar
+ (keine Cloud-Sprosse live), steht das lokale Primärurteil auf eigener Evidenz,
+ markiert UNVERIFIED in der Bewertung und der Zusammenfassung — nie stillschweigend
+ „verifiziert". Ein vom Auftrag VERLANGTER Verifizierer, der fehlt, ist HALT
+ unabhängig von lokal/Cloud. Das lokale Modell muss das GANZE Artefakt sehen
+ (`num_ctx` auf den Prompt dimensionieren — Ollamas Default 4096 kürzt stillschweigend
+ — und vor dem Senden ablehnen, was nicht passt); ein Harness-Juror läuft read-only,
+ und jede Einberufung trägt eine `run_id` und schreibt ihre Zusammenfassung zuletzt;
Operator-Sicherheit → dein stärkster Coder mit Sicherheits-Grounding; Generalist →
- ein großer, zuverlässiger Generalist. Jede Leiter endet auf einer lokalen
- Überlebens-Sprosse.
+ ein großer, zuverlässiger Generalist. Lokale/IDE-Sprossen bleiben auf der Leiter
+ entsprechend der tatsächlich konfigurierten Kapazität, ohne garantierte
+ Position-Reihenfolge.
- **Solo-Rig.** Wenn nur eine Modell-Sprosse verfügbar ist, degradiere EXPLIZIT: Ein
- frischer Kontext oder eine frische Session, die die Konversation des Autors nie
- gesehen hat, agiert als blinder Grader, oder der Mensch prüft den geschwärzten
- Umschlag. Ein Prüfer gleichen Modells, gleicher Sprosse oder gleicher Familie ist
- in einer frischen, autor-disjunkten Session zulässig, wo die konfigurierte
- Laufzeit es erlaubt. Der Bericht muss das geschwächte Gate benennen — niemals
- still so tun, als hätte ein stärkeres Gate gehalten.
+ **Solo-Rig.** Wenn nur eine Modell-Sprosse verfügbar ist, kommt die Unabhängigkeit
+ trotzdem aus einer frischen, autor-disjunkten Session, die die Konversation des
+ Autors nie gesehen hat, mit dem geschwärzten Umschlag und eingefrorenen
+ Beweis-Bytes. Ein Prüfer gleichen Modells, gleicher Sprosse oder gleicher Familie
+ in einer frischen Session ist zulässig, wo die konfigurierte Laufzeit es erlaubt.
+ Der Bericht erfasst die Einzel-Sprossen-Konfiguration als Provenienz, nicht als
+ geschwächtes Gate: die Trennung ist die Session, nicht der Modellname.
## Der Builder wird deklariert, und der Ausschluss ist strukturell
„Andere Familie als der Builder" war eine Regel, die sich Juroren merken sollten. Im eigenen Test
des Tribunals führte den Operator-Sicherheitssitz genau das Modell an, das den Kandidaten gebaut
hatte, und nichts hat es erfasst oder ausgeschlossen: Der Autor hat zwei Runden lang seine eigene
Arbeit benotet. Also:
- - **Einberufen mit benanntem Builder** (`--builder <modell-oder-familie>`). Der Lauf trägt
- `builder_family` als Provenienz, wo der Läufer es aufzeichnet. Jede ausführende Session, die den
- Kandidaten gebaut hat, und jede Session, die die Konversation oder den Kontext des Builders geerbt
- hat, werden laut abgelehnt, vor jedem Versand, auf jeder Leiter. Eine Linse ohne Sprosse HÄLT —
- fällt nie auf den Builder zurück. Provenienz, kein pauschales Modell-, Sprossen-, Familien- oder
- Anbieter-Gate.
+ - **Einberufen mit benanntem Builder**, wo der gewählte Runner das tatsächlich
+ unterstützt (z. B. `--builder <identität>`, wenn der Runner ein Flag kennt; sonst
+ als Lauf-Record-Feld). Der Lauf trägt die ausführende Builder-Session und `builder_family`
+ als Provenienz, wo der Runner sie aufzeichnet. Jede ausführende Session, die den
+ Kandidaten gebaut hat, und jede Session, die die Konversation oder den Kontext des
+ Builders geerbt hat, werden laut abgelehnt, vor jedem Versand, auf jeder Leiter. Eine
+ Linse ohne Sprosse HÄLT — fällt nie auf den Builder zurück. Provenienz, kein
+ pauschales Modell-, Sprossen-, Familien- oder Anbieter-Gate.
- **Beweise es auf der lebenden Leiter, nicht im Test:** Die Routing-Tabelle muss zeigen, dass die
Sitze auf live verfügbare Sprossen gefallen sind, und der Bericht benennt die ausgewählte Sprosse
pro Linse. Sonst ist der Ausschluss Dekoration.
## Der Umschlag
Juroren sehen nie das Repo, den Builder oder die Konversation. Sie sehen einen
Umschlag:
- **Ganze aktuelle Dateien** für jede Datei, die die Änderung berührt hat, plus
ihre Testdateien. Nie nackte Diff-Hunks — ein Hunk versteckt den umgebenden
Contract und provoziert falsche Befunde.
- **Der Review-Contract**: die Absicht der Änderung in einer Zeile, und die
Pass-Kriterien.
- **Null Autorschaft.** Keine Namen, keine Modell-IDs, keine Commit-Autoren, keine
Chat-History. Sickert Identität durch, schlägt der Umschlag-Bau laut fehl — nie
unverblindet bewerten.
- **Keine Prosa über das alte Verhalten.** Zu beschreiben, was der Code „früher
tat", pflanzt Phantom-Defekte. Die Dateien sprechen für sich.
## Das Urteil
Striktes, maschinenlesbares JSON, ein Objekt, keine Prosa:
```json
{"verdict": "pass" | "refuse",
"findings": [{"severity": "blocker|major|minor|info",
"claim": "...", "evidence": "..."}]}
```
- **Ein Pass, der einen `[blocker]`- oder `[major]`-Befund listet, ist kein Pass.** Widersprüchlich;
fällt geschlossen auf refuse, mit der Schwere benannt.
- **Ein Urteil für eine andere Linse als die besetzte** ist eine abgelehnte Sprosse, kein Urteil:
mit beiden Linsen vermerkt, der Gang geht zur nächsten Sprosse; nur wenn alle daneben antworten,
hält die Linse. Nie ein Pass.
- **Das Ausgabeverzeichnis wird besessen, bevor es gefegt wird.** Das Organ stempelt (stamp) ein
beanspruchtes Verzeichnis; eines mit diesen Dateiformen OHNE Stempel wird abgelehnt — Dateien und
Abhilfe benannt, nichts gelöscht. Ein Verzeichnis nur mit fremden Dateien war nie in Gefahr und
wird nicht blockiert.
- **Eine explodierende Linse verwirft nie die schon bezahlten Urteile.** Jeder Sitzfehler wird pro
Linse erfasst; Urteile und Zusammenfassung werden VOR dem Fehler geschrieben.
- **Der Mutationsbeweis nennt eine überschriebene Datei** (`changed_paths`).
- **Alles, was das Organ schreibt, ist nur für den Eigentümer lesbar (0600).**
- **Ein übergelaufenes lokales Modell entlädt nur sein LETZTER Halter.** Zwei Linsen können eine
Karte teilen; die erste fertige zieht der anderen nicht mitten im Aufruf das Modell weg.
- **Eine Sprosse, die das Artefakt nicht fassen kann, wird vor dem Aufruf übersprungen**, Grund
vermerkt; eine Kapazitätsablehnung ist ein TYP und der Gang geht weiter — nie ein Halt.
- Ein Juror, der SCHLECHT geantwortet hat — Müll, kein JSON, Verweigerungstext —
zählt als **refuse**; ein Juror, der NIE geantwortet hat (Transportfehler,
unerreichbar), ist ein **hold**: neu besetzen via
[fleet-ladder](../fleet-ladder/SKILL.md), nie ein stiller Pass. Ein Schuss pro
antwortendem Juror pro Runde — keine Retries.
- Ein nackter Pass mit null Befunden und ohne Evidenz ist eine
**informationsarme Stimme**. Sie zählt, aber nie als einziger Beweis — zwei
nackte Passes überstimmen keinen detaillierten Refuse. Ein starker Pass benennt,
was er geprüft hat.
## Die Schleife
1. Rot zuerst: committe den fehlschlagenden Contract-Test, BEVOR der Fix gebaut
wird, und halte diesen Commit fest. Der Builder darf den Test nicht anfassen
([red-first](../red-first/SKILL.md)).
2. Baue bis grün.
3. Baue den Umschlag aus den AKTUELLEN Dateien.
4. Besetze die acht Juroren, nach Stufe, gewählt live nach Fähigkeit und
Verfügbarkeit aus der konfigurierten Sprossen-Matrix
([fleet-ladder](../fleet-ladder/SKILL.md) klärt, was live ist). Die ausführende
Session, die gebaut hat, und jede Session, die die Konversation oder den
Kontext des Builders geerbt hat, sind disqualifiziert; ein Prüfer gleichen
Modells, gleicher Sprosse oder gleicher Familie in einer frischen,
autor-disjunkten Session ist zulässig, wo die konfigurierte Laufzeit es erlaubt.
5. Jeder Juror verifiziert auch, statt nur zu lesen: Die neuen Tests bestehen; die
Regressions-Suite ist nicht schlechter als die Baseline; und ein
Fake-Green-Check — ein Test, der fehlschlagen SOLLTE (der Bug wieder
eingebaut), schlägt wirklich fehl. Ein Fake Green ist ein Refuse.
6. Bei jedem Refuse: JEDER Befund — Blocker, Major und Minor — wird ein NEUER
fehlschlagender Test, der aus dem echten Grund des Befunds fehlschlägt. Behebe
ihn. Baue den Umschlag über den überarbeiteten Dateien neu. Berufe ALLE Juroren
neu ein. Ein Urteil über veraltete Dateien ist kein Urteil.
7. Lande nur bei einstimmigem Pass. Minor-Befunde aus der letzten Runde werden
auch geschlossen, nie vertagt — „Blocker gefixt, Minors später“ ist genau das
Leck, das dieser Skill stopfen soll. Ein Befund endet GEFIXT oder mit
dokumentierter Evidenz widerlegt, nie geparkt.
## Die Fußzeile nennt die Linse, eine abgelehnte Sprosse behält ihre Worte, und die Routentiefe ist eine gemessene Kapazität
Runde 4 hielt zwei Linsen mit null Ablehnungen, und jedes Glied stand im Protokoll. Drei Gesetze kamen heraus:
- **Nenne die Antwortform neben der Antwort.** Die Protokoll-Fußzeile trägt den wörtlichen Linsennamen (`"lens": "defect"`), nie den Platzhalter `<your lens>`. Ein Juror, der die Linse aus 350 KB Abstand erinnern sollte, in einem Artefakt, das alle acht Linsen nennt, antwortete dreimal in zwei Runden mit der falschen Linse. Fülle den Platzhalter beim Rendern.
- **Eine abgelehnte Sprosse hinterlässt ihre Worte im Protokoll.** Eine Antwort mit falscher Linse oder ein annulliertes Urteil trägt ein begrenztes `raw_tail` am abgelehnten Eintrag, damit die nächste Runde die Ursache liest statt sie zu erraten.
- **Routentiefe ist eine gemessene Kapazität, kein magischer „drei Cloud-Sprossen"-Boden.** Jede Stufe hält ausreichend Sprossen für das Artefakt, das sie tragen muss (`context_tokens` und `num_ctx` auf Ollama; der Default 4096 kürzt stillschweigend). Eine falsche Linse plus eine Annullierung dürfen nie eine Linse aufhalten.
- **Reasoning-Kanal und Budget folgen der Route und der Antwortform.** Ein Reasoning-Modell, das um ein nacktes JSON-Urteil gebeten wurde, verbrauchte sein Budget über einem 131k-Token-Artefakt und gab nichts aus (`finish_reason=length`); die Zeitgrenze der Rolle tötete dann die nächste Sprosse mitten im Lauf. Manche Clouds deaktivieren Reasoning für JSON (`reasoning_effort: none`), andere lassen medium; der historische Vorfall ist als Evidenz vermerkt, nicht als universelle Regel.
- **Nichts anderes schreibt in das Repo des Tribunals, während es tagt.** Die Statusdatei eines gleichzeitigen Bewerters im Checkout änderte Bytes unter einem Sitz, und das Organ annullierte dieses Urteil ehrlich: es kann eine Änderung nicht zuordnen. Serialisiere Schreiber, oder tage auf einem separaten Worktree desselben Commits.
## Harte Regeln — eine gebrochen, und die Bewertung ist nichtig
- Der Builder bewertet nie die eigene Arbeit: die ausführende Session, die
gebaut hat, und jede Session, die die Konversation oder den Kontext des
Builders geerbt hat, sind disqualifiziert; ein Prüfer gleichen Modells, gleicher
Sprosse oder gleicher Familie in einer frischen, autor-disjunkten Session ist
zulässig, wo die konfigurierte Laufzeit es erlaubt.
- **Ein Juror-Refuse ist nur so gut wie der Umschlag.** Bevor du aus einem Befund
einen Test schreibst, prüfe den Befund gegen die tatsächlichen Dateien. Ein
Befund über Code, den der Umschlag nie enthielt, heißt: den Umschlag fixen,
nicht den Code.
- Miss Konvergenz an NEUEN Befunden pro Runde, nicht an der Rohsumme. Neue Befunde
zwei Runden in Folge flach oder steigend: stoppen und an den Menschen
eskalieren. Nie stur weitermahlen.
- Schwäche oder editiere die fehlschlagenden Tests nie, um einen Pass zu
erreichen. Juroren verifizieren, dass die Testdateien seit dem Rot-Commit
unverändert sind.
- **Ein Überlebender ist eine Behauptung; ein grüner Beweis ist eine Behauptung.** Jeden gemeldeten
Mutanten von Hand neu laufen lassen, im isolierten Baum, mit einer Obergrenze, die die Last
überlebt. Ein Timeout ist kein Überlebender; ein Sammelfehler ist kein Kill. Jeder Urteilspfad
muss INVALID sagen können, und ein Harness, dessen mutationsfreie Baseline nicht sauber grün ist,
verweigert jedes Urteil.
- Ein einstimmiger Pass öffnet das Tor; er ist nicht das Ziel. Lande, dann beweise
die Fähigkeit live auf der echten Oberfläche. Grün ohne Live-Beweis ist nicht
fertig.
## Passt gut zu
- [red-first](../red-first/SKILL.md) — der fehlschlagende Contract, committet bevor der Builder läuft.
- [sniper-testing](../sniper-testing/SKILL.md) — echte Nebeneffekte, begrenzte Läufe, kein Mock-Theater.
- [seam-engineering](../seam-engineering/SKILL.md) — die Klasse fixen, Geschwister durchkämmen, einen Guard landen.
- [repair-loop](../repair-loop/SKILL.md) — die Bauschleife, die dieses Tribunal bewertet.
- [blind-eval](../blind-eval/SKILL.md) — das leichtere Keep-or-Revert-Gate, wenn die Frage Geschmack ist, nicht Defekte.
> Gerüst-Credit: Matt Pocock, grill-me / grilling (mattpocock/skills, MIT). Das
> Design des blinden, adversarialen Cross-Family-Tribunals ist BACKS AIOS.