
Behaviorales Evaluierungslabor (Quorum) für das Superpowers-Projekt, das echte Coding-Agent-CLIs (Claude, Codex, Gemini, Kimi und weitere) durch einen QA-Agenten antreibt und sie hinsichtlich Workflow-Konformität gegenüber Szenarienkriterien und deterministischen Nachprüfungen bewertet
Behaviorales Evaluierungslabor für Superpowers. Quorum treibt echte Coding-Agent-CLIs (Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi und Copilot) durch einen Gauntlet-QA-Agent und bewertet sie anhand von Szenario-Akzeptanzkriterien plus deterministischen Nachkontrollen.
Code, CLI, Pfade und Inline-Prosa verwenden alle Kleinbuchstaben quorum; die
großgeschriebene Form Quorum erscheint in Überschriften und der Akteur-Tabelle.
Dies ist keine generische Benchmark-Suite. Es ist ein Evaluierungslabor für die Einhaltung von Arbeitsabläufen: Skill-Auslösung, Worktree-Verhalten, Koordination von Unteragenten, Verifikationsreflexe, Überprüfungsqualität und Kostengestaltungsmuster.
quorum hat zwei sehr unterschiedliche Ausführungsmodi:
biome, tsc und bun test aus. Sie rufen keine Modell-APIs auf und
starten keine Agent-CLIs.Öffentliche CI muss auf der statischen/Unit-Seite dieser Linie bleiben. Fügen
Sie niemals API-Schlüssel, Live-quorum run …-Aufrufe oder gefährliche
Modus-Agentenstarts zu öffentlicher CI hinzu.
Live-Evaluierungen führen den getesteten Coding-Agent mit weitreichenden Ausführungsberechtigungen aus:
--dangerously-skip-permissions.--dangerously-bypass-approvals-and-sandbox.--dangerously-skip-permissions und verlässt sich auf
lokale Browser-/Keyring-Authentifizierung für agy.--skip-trust --approval-mode=yolo; API-Key-Auth ist
Standard, mit optionaler OAuth-Auth für vertrauenswürdige lokale Läufe.--yolo.--dangerously-skip-permissions.--allow-all.quorum setzt für jeden Coding-Agent HOME (plus die XDG-Basisverzeichnisse
und TMPDIR) auf ein Wegwerf-Pro-Lauf-Home unter <run>/home fest – der
Launcher setzt das von src/agents/home-env.ts erstellte $QUORUM_HOME_ENV-
Token ein (xdgHomeEnv, die einzige Quelle der Wahrheit). Das
Konfigurationsverzeichnis jedes Agenten wird unter dieses Home geklappt
(Claude .claude, Codex .codex, Gemini ., OpenCode ., Antigravity .,
Copilot .copilot, Kimi .kimi-code, Pi .pi/agent), sodass der Coding-Agent
seine Konfiguration über seine eigene -Vorgabe findet und niemals das
echte , , , , ,
, des Hosts oder andere heimrelative Zustände,
installierte Plugins oder vorherige Sitzungen sieht. Die Bereitstellung fügt
die Konfiguration – und die Host-OAuth-Anmeldeinformationen, die jeder Agent
benötigt – vor dem Start in dieses Wegwerf-Home ein, sodass kein Login zur
Laufzeit erforderlich ist. Copilot legt außerdem das lokale Superpowers-Plugin
unter dem isolierten Home bereit, verwendet eine zugelassene äußere Umgebung
und schreibt eine geheimnistragende mit chmod-0600 in das
Laufverzeichnis. Das verringert den Schadensradius, ist aber keine Sandbox.
OpenCode- und Copilot-Starter verwenden zusätzlich zugelassene Umgebungen,
aber Live-Coding-Agenten laufen dennoch mit weitreichenden Dateisystem- und
Befehlsausführungsberechtigungen.
Führen Sie Live-Evaluierungen nur aus einer vertrauenswürdigen lokalen Umgebung aus:
results/, rohe Sitzungsprotokolle,
Sitzungszustand/Tool-Aufruf-Artefakte und Gauntlet-Agent-Eingaben als
vertraulich.Installieren und führen Sie die statischen Prüfungen aus:```bash bun install bun run check bun run quorum check
Führen Sie ein lokales oder break-glass-Szenario außerhalb des Containers aus:```bash
export SUPERPOWERS_ROOT=/path/to/superpowers
export ANTHROPIC_API_KEY=...
bun run quorum run scenarios/triggering-writing-plans --coding-agent claude
bun run quorum show <run-dir>
Der Gauntlet-Agent (QA-Treiber) authentifiziert sich standardmäßig bei Anthropic mit ANTHROPIC_API_KEY. Um ihn stattdessen über ein eingeloggtes Claude-Abonnement zu betreiben, setzen Sie CLAUDE_CODE_OAUTH_TOKEN (von claude setup-token) in der Umgebung (z. B. .env); das Harness leitet es weiter und gauntlet bevorzugt es gegenüber dem API-Schlüssel. Hinweis: Ein Abonnement hat Nutzungslimits, die für interaktive Nutzung ausgelegt sind — hochparallele run-all-Batches können diese erreichen, daher bleibt der API-Schlüssel für hohe Last die bessere Wahl.
Agentennamen sind claude, codex, antigravity, gemini, kimi,
opencode, pi und copilot. Nicht jedes Szenario ist für jeden Agenten gültig.
BREAKING (Anmeldedatenachse): claude-haiku und claude-sonnet sind keine separaten Agentennamen mehr. Um das Claude-Harness gegen Sonnet oder Haiku auszuführen:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run scenarios/ --coding-agent claude --credential haiku
The `claude` agent's default credential is `opus`.
## Shared Eval Appliance
Shared remote live evals are designed to run from a trusted appliance host with one blessed credential bundle, exact repo/ref provenance, host locks, and recoverable job records. Agents should use the appliance helper once it exists on the configured host:```bash
evals-appliance doctor --json
evals-appliance prepare --json --superpowers-ref <branch-tag-or-sha>
evals-appliance run-all --json --detach \
--superpowers-ref <branch-tag-or-sha> \
-- --tier sentinel \
--coding-agents claude,codex,kimi \
--jobs 4
evals-appliance status --json <job-id>
evals-appliance show --json <job-id>
evals-appliance costs --json <job-id>
evals-appliance cancel --json <job-id>
Die Zielschnittstelle und die Betriebsregeln befinden sich in
docs/appliance-runbook.md, unterstützt durch
docs/superpowers/specs/2026-06-18-shared-eval-appliance-design.md.
doctor ist schreibgeschützt. prepare gibt lock_busy zurück, anstatt Referenzen zu ändern, während ein laufender Job aktiv ist.
Host-Zugriff und anbieter-spezifische Break-Glass-Verfahren werden absichtlich aus diesem öffentlichen Repository ferngehalten; verwenden Sie das private Ops-Runbook für diese Details.
Rohe bun run quorum ... und scripts/evals-container exec quorum ... bleiben lokale oder vertrauenswürdige Break-Glass-Workflows für gemeinsame Live-Evals.
Die Docker-Laufzeitumgebung ist das primäre Rezept für reale Suite-Läufe. Sie behält das Evals-Checkout, das Superpowers-Checkout unter Test, Anmeldeinformationen, Authentifizierungsquellen und alle Lauf-Artefakte auf dem Host, während Quorum innerhalb eines umfangreichen Ubuntu-Workspace-Containers läuft.
Erstellen Sie .env.container oder übergeben Sie eine explizite Umgebungsdatei an up:```dotenv
ANTHROPIC_API_KEY=...
OPENAI_API_KEY=...
OPENROUTER_API_KEY=... # Pi default: OpenRouter GLM 5.2
GEMINI_API_KEY=... # or GEMINI_AUTH_TYPE=oauth-personal
KIMI_MODEL_API_KEY=... # unless using mounted Kimi OAuth
PI_PROVIDER=... # only for raw/custom Pi env auth outside the default credential
PI_MODEL=...
PI_API_KEY=...
COPILOT_GITHUB_TOKEN=...
Dann baue, starte und validiere den Container:```bash
scripts/evals-container build
scripts/evals-container down || true
scripts/evals-container --env-file .env.container up
scripts/evals-container exec evals-tool-versions
scripts/evals-container exec quorum check
Der Wrapper mountet diesen Evals-Checkout unter /workspace/evals, den übergeordneten
Superpowers-Checkout unter /workspace/superpowers und das Host-results/-Verzeichnis unter
/workspace/evals/results. Überschreiben Sie den Superpowers-Checkout mit
--superpowers-root <verz>, wenn der Standard-Pfad des übergeordneten Verzeichnisses nicht das getestete System ist.
Der Image-Build benötigt einen lokalen Gauntlet-Checkout. Der Wrapper findet ihn
über GAUNTLET_ROOT oder eine globale Bun-Installation mit bun link; verwenden Sie
--gauntlet-root <verz> mit build, um explizit auszuwählen.
Anmeldeinformationen werden als schreibgeschützte Mounts bereitgestellt. Standardmäßig verwendet up zuerst .env.container,
dann .env, und mountet die erste gefundene Datei unter /run/evals/credentials.env.
Übergeben Sie --env-file <datei> vor up, um explizit auszuwählen. Der Wrapper übergibt
die Host-Umgebung nicht pauschal; nur der quorum-Shim innerhalb des Containers lädt
die Dotenv-Datei, sodass scripts/evals-container exec bash ... nicht
automatisch aktuelle Eval-Anmeldeinformationen erhält. Verwenden Sie down, bevor Sie den
Env-File-Mount an einem vorhandenen Container ändern.
OAuth-/Datei-Authentifizierungsquellen sind ebenfalls schreibgeschützt. Vorhandene Verzeichnisse ~/.codex, ~/.gemini,
~/.kimi-code und ~/.pi werden unter /auth/codex, /auth/gemini,
/auth/kimi-code und /auth/pi eingehängt. Verwenden Sie --auth codex=<verz>,
--auth gemini=<verz>, --auth kimi=<verz> oder --auth pi=<verz>, um eine
Quelle zu überschreiben.
Starten Sie mit der Sentinelsuite:```bash
scripts/evals-container exec quorum run-all
--tier sentinel
--coding-agents claude,codex,kimi
--jobs 4
for agent in gemini opencode pi copilot; do
scripts/evals-container exec quorum run-all
--tier sentinel
--coding-agents "$agent"
--jobs 1
done
Führen Sie dieselben Befehle ohne `--tier sentinel` für die vollständige einsatzbereite Suite aus.
`run-all` schreibt jeden Batch unter `results/batches/<batch-id>/` und jeden Durchlauf
unter `results/<scenario>-<agent>-<os>-<timestamp>-<nonce>/`; rendern Sie einen Batch
mit:```bash
scripts/evals-container exec quorum show <batch-id>
run-all gibt einen periodischen Lebendigkeits-Herzschlag aus
(⋯ … · running N/jobs · done D · queued Q · [agent:scenario, …]); passen Sie es mit
--heartbeat-seconds <n> an (0 deaktiviert). Das Unterbrechen eines Batches – Strg-C oder das Schließen der exec-Sitzung – beendet ihn ordnungsgemäß:
Die Warteschlange wird abgebrochen, laufende Ausführungen erhalten SIGINT (und werden als gestoppt aufgezeichnet), und der Batch-Footer wird trotzdem geschrieben, sodass finished_at niemals null bleibt.
Die Container-Laufzeitumgebung mountet den Docker-Socket nicht, veröffentlicht keine Dashboard-Ports und enthält keine Desktop-IDEs.
Das Image enthält den Desktop-Installer agy von Antigravity nicht; führen Sie Antigravity host-seitig aus, bis es einen installationspfad ohne grafische Oberfläche gibt:```bash
bun run quorum run-all --coding-agents antigravity --jobs 1
For grouped all-agent host sweeps, per-agent credentials, auth mount details,
and troubleshooting, use [docs/coding-agent-care-and-feeding.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/coding-agent-care-and-feeding.md).
## Windows-Laufzeit
Für Evaluierungen unter Windows 11 verwenden Sie `--os windows` (nur Linux+KVM-Hosts):```bash
bun run quorum run scenarios/<name> --coding-agent claude --os windows
Siehe docs/windows/eval-runtime.md für Einrichtung und Bereitstellung.
Behalten Sie die Akteure klar im Blick; sie zu verwechseln ist der häufigste Triage-Fehler. Diese Namen werden überall verwendet – in Dokumentationen, CLI-Ausgaben, Code, Dateinamen, Commit-Nachrichten.
Ein Durchlauf umfasst zwei LLMs – den Gauntlet-Agent (QA-Tester) und den Coding-Agent (Proband). Getrennte Modelle, getrennte Logs, getrennte Token-Kosten.
Die Evaluierungsdimension ist (Szenario, Coding-Agent, credential, os). credentials.yaml
im Repo-Stammverzeichnis definiert benannte Anmeldeinformationen; jeder Eintrag deklariert das Modell, das
Übertragungsprotokoll (api: openai-chat, openai-responses, anthropic oder gemini),
optional base_url für nicht standardmäßige Endpunkte, Authentifizierungstyp (api-key,
subscription oder oauth), optional api_key_env, die Laufzeitfamilien, die es
bedient (harnesses), und optionale Scheduler-Überschreibungen (max_concurrency,
launch_spacing_seconds) sowie einen -Block (,
).
Jedes Agent-YAML deklariert ein default_credential. Überschreiben zur Laufzeit:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run-all --coding-agents claude,opencode --credentials sonnet,haiku,opencode_gpt5 --jobs 4
`quorum check` validiert `credentials.yaml` und die `default_credential` jedes Agents.
Der Scheduler richtet seinen Parallelitätsdeckel und seinen Ratenbegrenzungsriegel am **limiterKey** der Zugangsdaten aus — der `base_url` der Zugangsdaten, sofern gesetzt, andernfalls der Name der Zugangsdaten, verknüpft mit seiner `api` (z. B. `https://…/v1|openai-chat` oder `opus|anthropic` für eine native Zugangsdaten ohne `base_url`).
Zellen, die einen limiterKey gemeinsam nutzen, teilen sich einen Deckel und einen Ratenbegrenzungsriegel: Eine Ratenbegrenzungsantwort auf eine Zelle überspringt sofort alle verbleibenden in der Warteschlange befindlichen Zellen für diesen Endpunkt.
Standardmäßig benannte Zugangsdaten (siehe `credentials.yaml`): `opus`, `sonnet`, `haiku` (Claude-Harness), `codex_sub` (Codex-Abonnement), `kimi_default`, `openrouter_glm_5_2` (Pi-Standard), `pi_default` (nativer Pi-OAuth-Opt-In), `opencode_gpt5`, `gemini_default`, `serf_default`, `glm_5_2_chat`, `glm_5_2_responses`, `ollama_local`.
### Externe Serf-Kampagnen
Kurzlebige Serf-Modell-/Provider-Kampagnen verwenden eine externe Zugangsdatendatei, nicht das kanonische `credentials.yaml` des Repositorys. Übergeben Sie sie explizit mit `--credentials-file` an `quorum run`, `quorum run-all` oder `quorum check`. Bewahren Sie das eigentliche Kampagnen-YAML und alle Rohausführungsartefakte außerhalb von Git auf: Das YAML enthält Routing-Labels und den ausgewählten API-Schlüssel-Umgebungsvariablennamen, niemals einen Schlüsselwert.
Jeder Kampagnenvorlage muss genau ein Modell und einen Anbieter festlegen, Fallbacks deaktivieren und keine Überschreibungen für Prompt, Sampling, Reasoning, Tool oder Token-Limit enthalten. Stellen Sie ihren dedizierten Schlüssel über das vertrauenswürdige Laufzeit-Zugangsdatenpaket bereit. Der Schlüssel muss die beabsichtigte Datenrichtlinie der Kampagne durchsetzen, ein Kampagnenausgabenlimit haben und für eine gemeinsame Kapazitätskampagne keine BYOK-Bindung aufweisen. Ein BYOK-Vergleich ist eine separate Kampagne mit einem separaten Schlüssel und einer Kandidatendatei.
Vor dem Dispatch parst `run-all` die externe Datei einmal und schreibt deren kanonischen Snapshot nach `results/batches/<batch-id>/credentials.snapshot.yaml`; jedes Kind erhält diesen unveränderlichen Snapshot. Ein direkter `quorum run` schreibt denselben kanonischen Snapshot in sein Ausführungsverzeichnis. Das Bearbeiten des Quell-YAML nach Batchstart kann spätere Zellen nicht ändern. Snapshots enthalten schema-bekannte Routing-Metadaten und Umgebungsvariablennamen, keine Geheimniswerte, aber sie bleiben Teil der sensiblen Ausführungsartefakte.
Führen Sie zuerst den agentenneutralen Smoke-Test durch, dann führen Sie das teure Szenario nur für Zugangsdaten aus, deren endgültiges Smoke-Urteil `pass` lautet:```bash
quorum run-all \
--scenarios 00-quorum-smoke-hello-world \
--include-drafts \
--coding-agents serf \
--credentials-file /secure/campaign.yaml \
--credentials serf_example_a \
--jobs 1
quorum run-all \
--scenarios serf-builder-fractals \
--coding-agents serf \
--credentials-file /secure/campaign.yaml \
--credentials serf_example_a \
--jobs 1
--jobs 1 ist die sequentielle Latenz-/Kosten-Basislinie. Eine Matrix-Zelle ist ein
bezahlter Versuch; der Kampagnenplaner wiederholt oder wiederholt keine Zelle
automatisch. Stellen Sie den beschrifteten Vergleich mit quorum costs <batch-id> dar. Nur endgültige
pass-Zeilen werden als vergleichbar markiert; fail und indeterminate bleiben sichtbar,
aber ohne Rangfolge, und fehlende Messungen werden als fehlend und nicht als Null dargestellt.
Die Spalten für berechnete Kosten, geschätzte Kosten und Delta sind Coding-Agent-Kosten. Die vorhandenen
--with-gauntlet-Spalten sind separate Gauntlet-Agent-Testumgebungs-Overhead.
Die Live-Abnahme ist manuelle Arbeit vertrauenswürdiger Maintainer und niemals öffentliche CI-Automatisierung:
--jobs 1 aus.verdict.json, trajectory.json,
openrouter-generations.json, coding-agent-token-usage.json und
quorum costs <batch-id>. Bestätigen Sie Modell, Anbieter, Preset-Version, BYOK ist
false, Token/Cache-Buckets, Dauer, berechnete Kosten, Schätzung, Delta und
Kandidatenbezeichnungen, einschließlich Quantisierung und Katalogdatum.--jobs 1 aus; erfordern Sie endgültiges pass, jede
deterministische Prüfung, eine festgeschriebene Main-Checkout-Lieferung und eine vollständige
Vergleichszeile.--jobs 2 aus; bestätigen Sie eindeutige
Zuordnung ohne kreuzkontaminierte Schlüssel, Generierungen, Bezeichnungen oder
Wirtschaftlichkeiten.Veröffentlichen Sie nur release-geprüfte, bereinigte Schlussfolgerungen in einer datierten
docs/experiments/-Notiz, die sowohl Fehlschläge als auch Erfolge festhält. Externe Kampagnen-
YAML und Rohartefakte bleiben außerhalb von Git.
bun run quorum list bun run quorum new my-new-scenario bun run quorum check my-new-scenario bun run quorum run scenarios/ --coding-agent bun run quorum run scenarios/ --coding-agent claude --credential sonnet bun run quorum run-all --coding-agents claude,codex --jobs 2 bun run quorum run-all --coding-agents claude --credentials sonnet,haiku --jobs 2 bun run quorum show bun run quorum costs
`quorum check` mit keinen Argumenten validiert jedes Szenario und die `credentials.yaml`.
`run-all` führt jedes enthaltene Szenario gegen jeden ausgewählten Coding-Agent aus,
gefiltert nach der `# coding-agents:`-Direktive jedes Szenarios.
## Urteile und Artefakte
quorum erzeugt ein dreiwertiges Urteil:
- `pass` - Gauntlet-Agent bestanden und jeder Post-Check bestanden.
- `fail` - Gauntlet-Agent nicht bestanden oder ein Post-Check nicht bestanden.
- `indeterminate` - Setup/Pre-Check/Capture/Quorum-Fehler, Gauntlet
`investigate` oder leerer Trace, wenn Trace-Prüfungen vorhanden sind.
Exit-Codes sind 0 für `pass`, 1 für `fail` und 2 für `indeterminate`.
Jeder Lauf erzeugt ein Verzeichnis unter `results/`:```text
results/<scenario>-<coding-agent>-<os>-<timestamp>-<nonce>/
|-- verdict.json composed result; start here
|-- gauntlet-agent/ Gauntlet-Agent evidence
|-- coding-agent-workdir/ files the Coding-Agent produced
|-- home/ throwaway Coding-Agent HOME
|-- trajectory.json normalized ATIF trace
`-- coding-agent-token-usage.json Coding-Agent token cost, when priced
results/ wird von git ignoriert, da Ausführungsartefakte sensible Transkripte, Anmeldeinformationen, Tool-Aufrufe und Dateisystemzustand enthalten können.
Dies sind die Prüfungen, die in CI und bei routinemäßigen PRs erwartet werden:```bash bun run check # biome ci . && tsc --noEmit && bun test — the full gate bun run quorum check # validate every scenario directory
`bun run check` ist das einzelne Tor (Biome lint/format + full-strict `tsc` +
`bun test`); die einzelnen Schritte sind `bun run lint`, `bun run typecheck`, und
`bun test`.
## Architecture
quorum ist **TypeScript auf Bun**. Die Konsole ist `bun run quorum <cmd>` (ein
[commander](https://github.com/tj/commander.js) CLI unter `src/cli/index.ts`, auch
als das `quorum`-Bin bereitgestellt); das Tor ist `bun run check`
(Biome + full-strict `tsc` + `bun test`).
Die Strukturen, die Prozess- und Dateigrenzen überschreiten — `verdict.json`, Batch-
Indizes, Ökonomie, das Gauntlet-Ergebnis, Agent-YAML — sind **zod-Schemata** in
`src/contracts/`, die an jeder Grenze validiert werden, sodass eine fehlerhafte externe Datei
laut scheitert, anstatt ein Urteil zu korrumpieren. Die `cli/`-Schicht parst Befehle
und leitet in die `runner/`-Pipeline (ein Szenario × ein Coding-Agent) oder
`run-all/` (die Matrix) weiter. Unterschiede pro Coding-Agent leben in zwei parallelen
Fan-Outs, die nach Agentenname indiziert sind: `agents/` befüllt die Konfiguration des
Agenten unter dem wegwerfbaren Pro-Lauf `$HOME` (`<run>/home`), und `normalize/` wandelt
das Sitzungsprotokoll dieses Agenten in eine einheitliche Tool-Call-Spur um. Live-Agent-CLI-
Aufrufe und andere nicht-hermetische Unterprozesse gehen durch die
`agents/command-runner.ts`-Nahtstelle, sodass die Unit-Testsuite Fakes einspritzt und niemals
eine echte CLI startet. `scheduler/` ist die gemeinsame Nebenläufigkeits-Engine unter
`run-all/`. Das Dashboard ist ein separates schreibgeschütztes Paket, das `results/`
und `grid-manifest.json` scannt. `env.ts` ist das einzige Modul, das `process.env` liest.```text
src/
cli/ commander CLI: run, list, new, check, show, costs, run-all, grid-manifest
index.ts command wiring + run / costs / run-all / grid-manifest actions
render.ts verdict renderer for triage (quorum show)
render-batch.ts batch-matrix renderer (quorum show <batch>)
resolve-target.ts run/batch target resolution; scenario.ts scenario loading
runner/ per-run orchestration (one scenario × one Coding-Agent)
index.ts setup → pre-checks → gauntlet drive → capture → post-checks → compose
context.ts populate the Gauntlet-Agent context dir (HOWTO + launch-agent shim)
phase.ts phase.json (setup/agent/checks) for the dashboard
stopped.ts SIGINT → stopped (indeterminate) verdict; errors.ts staged run-error stages
agents/ per-Coding-Agent provisioning (resolveAgent dispatch)
index.ts agent registry + dispatch (incl. the inline Claude/Default adapters)
command-runner.ts injectable subprocess seam (live CLIs faked in tests)
<agent>.ts codex/gemini/kimi/opencode/pi/copilot/antigravity adapters
normalize/ session-log → normalized tool-call trace, one module per dialect
capture/ session-log snapshot/diff + tool-call capture + token usage; cwd-filter
obol/ obol cost estimation (session-log + gauntlet sidecar)
economics.ts token-cost composition → coding-agent-token-usage.json
composer.ts three-valued verdict from the gauntlet + checks layers
checks/ sources prelude.sh + checks.sh, runs pre()/post(), collects check records
prelude.sh bare-verb DSL: defines each check verb as a bash function that
delegates to the TS dispatchers (no bin/ shims, no PATH prepend)
scheduler/ central concurrency dispatcher (one global slot pool, per-harness limits + spacing)
run-all/ scenario × Coding-Agent matrix over the scheduler; batch index
setup-helpers/ scenario fixture builders + the `setup-helpers` CLI (dispatch registry)
contracts/ zod schemas at the JSON boundaries (verdict, batch, economics, gauntlet, agent-config)
scaffold.ts `quorum new` / `quorum check`
setup-step.ts runs scenario setup.sh (sources prelude.sh via BASH_ENV so bare verbs resolve)
story-meta.ts story.md frontmatter (quorum_max_time, quorum_tier, status)
env.ts the single process.env boundary
paths.ts repo root, UTC stamps, nonces
invariant.ts assertNever exhaustiveness guard for closed unions
check/ typed check verbs: fs-verbs.ts (file/git/env + bootstrap),
dispatch.ts (table + `not`), transcript-dispatch.ts, record.ts (sole emitter)
cli/check-tool.ts the dispatcher behind every check verb function (file-exists,
file-contains, command-succeeds, git-*, assert-checkout-clean,
requires-tool, not, files-exist, the *-installed/hook/extension
checks); check-transcript.ts and setup-helpers/cli.ts are the
other two dispatchers the prelude delegates to
cli/list-check-verbs.ts prints the FS_VERBS verb set the prelude loops over (drift-proof)
coding-agents/ per-Coding-Agent material:
<name>.yaml CLI config
<name>-context/ HOWTO prose and launchers for the Gauntlet-Agent
scenarios/ scenarios (one directory each)
fixtures/ shared static fixture repos (e.g. template-repo/, sdd-*/)
test/ bun test suite
docs/ design notes, specs, plans, testing protocols, baselines
packages/dashboard/ read-only web matrix UI: scan/view, typed HTML templates, SSE bus, Bun.serve
Das Triaging eines nicht bestandenen Durchlaufs beginnt mit:```bash bun run quorum show []
Dann verwenden Sie [docs/superpowers/skills/triaging-a-failing-eval.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/superpowers/skills/triaging-a-failing-eval.md)
für den Attributionsatlas. Für agentspezifische Authentifizierungs-, Bereitstellungs- und Erfassungsprüfungen verwenden Sie [docs/coding-agent-care-and-feeding.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/coding-agent-care-and-feeding.md).
Für die aktuelle bekannte Basislinie siehe [docs/baselines/](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/baselines/).
## Beitragsregeln
Dieses Repository übernimmt die Qualitätsanforderungen von `superpowers`.
- Ein Problem pro PR.
- Keine generierten Artefakte oder Geheimnisse committen.
- Keine Live-Evals in öffentliche CI aufnehmen.
- Die PR-Vorlage verwenden und das Sicherheits-/Eval-Lab-Risiko für Änderungen erläutern, die Coding-Agent-Konfigurationen, Shell-Ausführung, Setup-Helfer, Prüfwerkzeuge oder Gauntlet-Agent-Eingaben betreffen.
- Änderungen an der verhaltensprägenden Eval-Methodik benötigen Belege, nicht nur Prosa.
## Übergeordneter Submodule-Bump
`superpowers-evals` wird von `superpowers` als das `evals`-Submodul verwendet.
Öffnen Sie nach jedem Merge eines PR in `main` hier einen Folge-PR gegen das übergeordnete `superpowers`-Repository, das auf `dev` abzielt, der den `evals`-Submodul-Zeiger auf den gemergeten `superpowers-evals`-Commit setzt.
Behandeln Sie einen `superpowers-evals`-Merge erst dann als vollständig propagiert, wenn dieser übergeordnete Submodule-Bump-PR existiert.
---
Sicherheitsmeldungen → [SECURITY.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/SECURITY.md).
$HOME~/.claude~/.codex~/.gemini~/.kimi-code~/.pi~/.copilot~/.config.copilot-env| Akteur | Was es ist | Ort / Dateien |
|---|
| Gauntlet | Allgemeines QA-Framework; die gauntlet CLI. Ein Black-Box-Tester. | Repo github.com/prime-radiant-inc/gauntlet; unter PATH als gauntlet (über bun link oder GAUNTLET_ROOT) |
| Gauntlet-Agent | Das LLM innerhalb von Gauntlet, das den Coding-Agent antreibt und sich selbst anhand der Story-ACs bewertet. | Modell z. B. claude-sonnet-4-6; Ereignisstrom → <run>/gauntlet-agent/results/<runId>/run.jsonl; Urteil → result.{json,md} |
| Coding-Agent | Der zu testende Agent – das SUT. Instanzen: Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi, Copilot. | Konfiguration + Sitzungsprotokoll unter seinem temporären $HOME bei <run>/home/…; die von ihm geschriebenen Dateien → <run>/coding-agent-workdir/ |
| Quorum | Der TypeScript/Bun-Wrapper. Verantwortlich für Setup, Coding-Agent-Anpassung, deterministische Prüfungen und das endgültige Urteil. | Repo superpowers-evals/src/; <run>/verdict.json |
compatthinking_formatmax_tokens_field