
Laboratorio di valutazione comportamentale (Quorum) per il progetto superpowers che guida CLI di agenti di codifica reali (Claude, Codex, Gemini, Kimi e altri) attraverso un agente QA e le valuta in base alla conformità al flusso di lavoro rispetto ai criteri dello scenario e ai controlli deterministici post-esecuzione.
Laboratorio di valutazione comportamentale per superpowers. Quorum guida CLI reali di coding-agent (Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi e Copilot) attraverso un agente Gauntlet QA e li valuta rispetto ai criteri di accettazione dello scenario più controlli deterministici successivi.
Codice, CLI, percorsi e prosa inline usano tutti quorum in minuscolo;
la forma maiuscola Quorum appare nelle intestazioni e nella tabella degli attori.
Questa non è una suite di benchmark generica. È un laboratorio di valutazione per la conformità del flusso di lavoro: attivazione delle skill, comportamento del worktree, coordinamento dei subagenti, riflessi di verifica e pattern di modellazione dei costi.
quorum ha due modalità di esecuzione molto diverse:
biome, tsc e
bun test. Non chiamano API dei modelli e non avviano CLI di agenti.La CI pubblica deve rimanere dalla parte dei controlli statici/di unità di quella linea.
Non aggiungere mai chiavi API, invocazioni live quorum run …, o lanci di agenti in
modalità pericolosa alla CI pubblica.
Le valutazioni live eseguono il Coding-Agent sotto test con ampi poteri di esecuzione:
--dangerously-skip-permissions.--dangerously-bypass-approvals-and-sandbox.--dangerously-skip-permissions e si basa sull'autenticazione
locale tramite browser/keyring per agy.--skip-trust --approval-mode=yolo; l'autenticazione tramite chiave API è predefinita,
con autenticazione OAuth opzionale per esecuzioni locali fidate.--yolo.--dangerously-skip-permissions.--allow-all.quorum fissa la HOME di ogni Coding-Agent (più le directory base XDG e TMPDIR)
in una home temporanea per esecuzione <run>/home — il launcher inserisce il
token $QUORUM_HOME_ENV costruito da src/agents/home-env.ts (xdgHomeEnv, l'unica
fonte di verità). La directory di configurazione di ogni agente è collassata sotto quella home
(Claude .claude, Codex .codex, Gemini ., OpenCode ., Antigravity .,
Copilot .copilot, Kimi .kimi-code, Pi .pi/agent), così il Coding-Agent
trova la sua configurazione tramite il suo default e non vede mai le reali
directory , , , , , ,
, o altro stato relativo alla home dell'host, plugin installati, o sessioni precedenti.
Il provisioning inserisce la configurazione — e le credenziali OAuth dell'host necessarie a ciascun agente — in
quella home temporanea prima del lancio, quindi non c'è login durante l'esecuzione. Copilot prepara anche
il plugin locale Superpowers sotto la home isolata, usa un ambiente esterno autorizzato,
e scrive un con segreti con chmod-0600 all'interno della directory di esecuzione.
Questo restringe il raggio d'impatto ma non è una sandbox. I launcher di OpenCode e Copilot
usano inoltre ambienti autorizzati, ma i Coding-Agent live vengono comunque eseguiti con ampi poteri di
esecuzione di comandi e filesystem.
Esegui le valutazioni live solo da un ambiente locale affidabile:
results/, i log di sessione grezzi, gli artefatti di stato di sessione/chiamate di strumenti e gli input del Gauntlet-Agent come
sensibili.Installa ed esegui i controlli statici:```bash bun install bun run check bun run quorum check
Esegui uno scenario locale o di break-glass all'esterno del contenitore:```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>
L'agente Gauntlet (driver QA) si autentica ad Anthropic con ANTHROPIC_API_KEY
per impostazione predefinita. Per utilizzarlo invece da un abbonamento Claude con accesso effettuato, imposta
CLAUDE_CODE_OAUTH_TOKEN (da claude setup-token) nell'ambiente (es.
.env); l'harness lo passa e gauntlet lo preferisce alla chiave API.
Nota: un abbonamento ha limiti di utilizzo pensati per l'uso interattivo — ad alta concorrenza
i batch run-all possono raggiungerli, quindi la chiave API rimane la scelta migliore per carichi pesanti.
I nomi degli agenti sono claude, codex, antigravity, gemini, kimi,
opencode, pi e copilot. Non tutti gli scenari sono validi per ogni agente.
BREAKING (credential axis): claude-haiku e claude-sonnet non sono più
nomi di agenti separati. Per eseguire l'harness Claude su Sonnet o Haiku:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run scenarios/ --coding-agent claude --credential haiku
La credenziale predefinita dell'agente `claude` è `opus`.
## Shared Eval Appliance
Gli eval live remoti condivisi sono progettati per essere eseguiti da un host appliance affidabile con un bundle di credenziali approvato, provenienza esatta repo/ref, blocchi host e record di job recuperabili. Gli agenti dovrebbero utilizzare l'helper dell'appliance una volta che esiste sull'host configurato:```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>
L'interfaccia di destinazione e le regole operative si trovano in
docs/appliance-runbook.md, supportate da
docs/superpowers/specs/2026-06-18-shared-eval-appliance-design.md.
doctor è in sola lettura. prepare restituisce lock_busy invece di modificare i riferimenti mentre un job attivo è in esecuzione.
L'accesso all'host e le procedure di break-glass specifiche del provider sono intenzionalmente tenuti fuori da questo repository pubblico; usa il runbook operativo privato per quei dettagli.
I comandi grezzi bun run quorum ... e scripts/evals-container exec quorum ... rimangono flussi di lavoro locali o break-glass affidabili per valutazioni live condivise.
Il runtime Docker è la ricetta principale per le esecuzioni reali della suite. Mantiene il checkout degli evals, il checkout di Superpowers in test, le credenziali, le fonti di autenticazione e tutti gli artefatti di esecuzione sull'host mentre quorum viene eseguito all'interno di un contenitore workspace Ubuntu ricco.
Crea .env.container o passa un file env esplicito a 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=...
Quindi costruisci, avvia e convalida il 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
Il wrapper monta questo checkout evals su /workspace/evals, il checkout Superpowers padre su /workspace/superpowers, e la directory host results/ su /workspace/evals/results. Sostituisci il checkout Superpowers con --superpowers-root <dir> quando il percorso padre predefinito non è il sistema in test.
La build dell'immagine necessita di un checkout locale di Gauntlet. Il wrapper lo trova da GAUNTLET_ROOT o da un'installazione globale bun link di Bun; usa --gauntlet-root <dir> con build per scegliere esplicitamente.
Le credenziali sono mount di sola lettura. Di default, up usa prima .env.container, poi .env, e monta il primo trovato su /run/evals/credentials.env. Passa --env-file <file> prima di up per scegliere esplicitamente. Il wrapper non passa l'intero ambiente host; solo lo shim quorum nel container carica il file dotenv, quindi scripts/evals-container exec bash ... non riceve automaticamente le credenziali live dell'evals. Usa down prima di cambiare il mount del file env su un container esistente.
Anche le sorgenti di autenticazione OAuth/file sono di sola lettura. Le directory esistenti ~/.codex, ~/.gemini, ~/.kimi-code e ~/.pi vengono montate rispettivamente su /auth/codex, /auth/gemini, /auth/kimi-code e /auth/pi. Usa --auth codex=<dir>, --auth gemini=<dir>, --auth kimi=<dir> o --auth pi=<dir> per sovrascrivere una sorgente.
Inizia con la suite sentinel:```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
Esegui gli stessi comandi senza `--tier sentinel` per la suite completa pronta. `run-all` scrive ogni batch in `results/batches/<batch-id>/` e ogni esecuzione in `results/<scenario>-<agent>-<os>-<timestamp>-<nonce>/`; renderizza un batch con:```bash
scripts/evals-container exec quorum show <batch-id>
run-all stampa un heartbeat periodico di attività
(⋯ … · running N/jobs · done D · queued Q · [agent:scenario, …]); è possibile regolarlo con
--heartbeat-seconds <n> (0 lo disabilita). Interrompere un batch — Ctrl-C, o la
chiusura della sessione exec — lo ferma in modo pulito: la coda viene cancellata, le esecuzioni
in corso ricevono un SIGINT (e vengono registrate come fermate), e il footer del batch viene comunque
scritto, quindi finished_at non viene mai lasciato nullo.
Il runtime del container non monta il socket Docker, non pubblica le porte della dashboard,
né include IDE desktop. L'immagine omette l'installer desktop agy di Antigravity;
esegui Antigravity lato host finché non esiste un percorso di installazione headless:```bash
bun run quorum run-all --coding-agents antigravity --jobs 1
Per sweep di host con tutti gli agenti raggruppati, credenziali per agente, dettagli di montaggio auth e risoluzione dei problemi, utilizzare [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 Runtime
Per valutazioni su Windows 11, usa `--os windows` (solo host Linux+KVM):```bash
bun run quorum run scenarios/<name> --coding-agent claude --os windows
Vedi docs/windows/eval-runtime.md per configurazione e implementazione.
Mantenere chiari gli attori; confonderli è l'errore di triage più comune. Questi nomi sono usati ovunque — documentazione, output CLI, codice, nomi di file, messaggi di commit.
Un run coinvolge due LLM — il Gauntlet-Agent (tester QA) e il Coding-Agent (soggetto). Modelli separati, log separati, costi di token separati.
La dimensione di valutazione è (scenario, coding-agent, credential, os). credentials.yaml nella root del repository definisce credenziali nominate; ogni voce dichiara il modello, il protocollo di connessione (api: openai-chat, openai-responses, anthropic, o gemini), opzionale base_url per endpoint non predefiniti, tipo di autenticazione (api-key, subscription, o oauth), opzionale api_key_env, le famiglie di runtime che serve (harnesses), e opzionali override dello scheduler (max_concurrency, launch_spacing_seconds) e un blocco (, ).
Ogni YAML di agente dichiara un default_credential. Sovrascrivi a runtime:```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` convalida `credentials.yaml` e `default_credential` di ogni agente.
Lo scheduler basa il proprio limite di concorrenza e il latch di rate-limit sulla **limiterKey** della credenziale — il `base_url` della credenziale se impostato, altrimenti il nome della credenziale, unito alla sua `api` (ad es. `https://…/v1|openai-chat`, o `opus|anthropic` per una credenziale nativa senza `base_url`). Le celle che condividono una limiterKey condividono un limite e un latch di rate-limit: una risposta di rate-limit su qualsiasi cella salta immediatamente tutte le celle rimanenti in coda per quell'endpoint.
Credenziali standard con nome (vedi `credentials.yaml`): `opus`, `sonnet`, `haiku` (Claude harness), `codex_sub` (abbonamento Codex), `kimi_default`, `openrouter_glm_5_2` (Pi predefinito), `pi_default` (opt-in Pi OAuth nativo), `opencode_gpt5`, `gemini_default`, `serf_default`, `glm_5_2_chat`, `glm_5_2_responses`, `ollama_local`.
### Campagne Serf esterne
Le campagne Serf di breve durata per modello/provider utilizzano un file di credenziali esterno, non il `credentials.yaml` canonico del repository. Passalo esplicitamente con `--credentials-file` a `quorum run`, `quorum run-all` o `quorum check`. Tieni il vero YAML della campagna e tutti gli artefatti grezzi delle esecuzioni fuori da Git: lo YAML contiene etichette di instradamento e il nome della variabile d'ambiente della chiave API selezionata, mai un valore di chiave.
Ogni preset di campagna deve fissare esattamente un modello e un provider, disabilitare i fallback, e non contenere override di prompt, sampling, reasoning, tool o limiti di token. Fornisci la sua chiave dedicata tramite il bundle di credenziali runtime affidabile. La chiave deve applicare la policy dei dati prevista dalla campagna, avere un limite di spesa per la campagna e, per una campagna a capacità condivisa, non avere binding BYOK. Un confronto BYOK è una campagna separata con una chiave separata e un file candidato separato.
Prima dell'invio, `run-all` analizza il file esterno una volta e scrive il suo snapshot canonico in `results/batches/<batch-id>/credentials.snapshot.yaml`; ogni figlio riceve quello snapshot immutabile. Un `quorum run` diretto scrive lo stesso snapshot canonico nella propria directory di esecuzione. Modificare lo YAML di origine dopo l'avvio di un batch non può cambiare le celle successive. Gli snapshot contengono metadati di instradamento conosciuti dallo schema e nomi di variabili d'ambiente, non valori segreti, ma rimangono parte degli artefatti di esecuzione sensibili.
Esegui prima lo smoke test neutrale rispetto all'agente, poi esegui lo scenario costoso solo per le credenziali il cui verdetto finale dello smoke test è `pass`:```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 è la baseline sequenziale di latenza/costo. Una cella della matrice è un
tentativo a pagamento; lo scheduler della campagna non ritenta o ripete automaticamente una
cella. Visualizza il confronto etichettato con quorum costs <batch-id>. Solo le righe
pass finali sono contrassegnate come confrontabili; fail e indeterminate rimangono visibili
ma non classificate, e le misurazioni mancanti vengono visualizzate come mancanti anziché zero.
Le colonne Charged, Estimated e Delta sono i costi del Coding-Agent. Le colonne esistenti
--with-gauntlet sono overhead separati dell'harness Gauntlet-Agent.
L'accettazione live è lavoro manuale di manutentori fidati, mai automazione CI pubblica:
--jobs 1.verdict.json, trajectory.json,
openrouter-generations.json, coding-agent-token-usage.json e
quorum costs <batch-id>. Conferma modello, provider, versione del preset, BYOK è
false, bucket token/cache, durata, costo addebitato, stima, delta ed
etichette dei candidati, inclusi quantizzazione e data del catalogo.--jobs 1; richiedi pass finale, ogni
controllo deterministico, consegna con checkout del main confermata e una riga
di confronto completa.--jobs 2; conferma attribuzione
distinta senza chiavi, generazioni, etichette o
costi incrociati contaminati.Pubblica solo conclusioni revisionate e sanificate in una nota datata
docs/experiments/, registrando sia fallimenti che successi. Il file YAML della campagna
esterna e gli artefatti grezzi rimangono fuori da 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` senza argomenti convalida ogni scenario e `credentials.yaml`.
`run-all` esegue ogni scenario incluso contro ogni Coding-Agent selezionato, filtrato dalla direttiva `# coding-agents:` di ogni scenario.
## Verdetto e Artefatti
quorum produce un verdetto a tre valori:
- `pass` - Gauntlet-Agent superato e ogni post-check superato.
- `fail` - Gauntlet-Agent fallito, o un post-check fallito.
- `indeterminate` - fallimento setup/pre-check/capture/quorum, Gauntlet `investigate`, o trace vuoto quando i trace checks sono presenti.
I codici di uscita sono 0 per `pass`, 1 per `fail` e 2 per `indeterminate`.
Ogni esecuzione produce una directory sotto `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/ è gitignored perché gli artefatti di esecuzione possono contenere trascrizioni sensibili, credenziali, chiamate di strumenti e stato del filesystem.
Questi sono i controlli previsti in CI e nelle PR di routine:```bash bun run check # biome ci . && tsc --noEmit && bun test — the full gate bun run quorum check # validate every scenario directory
`bun run check` è il singolo gate (Biome lint/format + full-strict `tsc` + `bun test`); i singoli passi sono `bun run lint`, `bun run typecheck` e `bun test`.
## Architettura
quorum è **TypeScript su Bun**. La console è `bun run quorum <cmd>` (una CLI [commander](https://github.com/tj/commander.js) in `src/cli/index.ts`, esposta anche come bin `quorum`); il gate è `bun run check` (Biome + full-strict `tsc` + `bun test`).
Le strutture che attraversano i confini di processo e file — `verdict.json`, indici batch, economics, il risultato Gauntlet, YAML degli agent — sono **schemi zod** in `src/contracts/`, validati a ogni confine, in modo che un file esterno malformato fallisca rumorosamente invece di corrompere un verdetto. Il livello `cli/` analizza i comandi e li smista nella pipeline `runner/` (uno scenario × un Coding-Agent) o in `run-all/` (la matrice). Le differenze per Coding-Agent risiedono in due fan-out paralleli chiave per nome agente: `agents/` semina la configurazione dell'agente sotto il `$HOME` temporaneo per esecuzione (`<run>/home`), e `normalize/` trasforma il log di sessione di quell'agente in una traccia uniforme di chiamate a strumenti. Le chiamate live agente-CLI e altri sottoprocessi non ermetici passano attraverso il punto di giunzione `agents/command-runner.ts`, in modo che la suite unità inietti finti e non lanci mai una CLI reale. `scheduler/` è il motore di concorrenza condiviso sotto `run-all/`. Il dashboard è un pacchetto separato in sola lettura che scansiona `results/` e `grid-manifest.json`. `env.ts` è l'unico modulo che legge `process.env`.```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
Il triage di un run non riuscito inizia con:```bash bun run quorum show []
Quindi utilizzare [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)
per l'atlante di attribuzione. Per i controlli di autenticazione, provisioning e acquisizione specifici dell'agente,
utilizzare [docs/coding-agent-care-and-feeding.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/coding-agent-care-and-feeding.md).
Per la baseline attuale conosciuta come buona, vedere [docs/baselines/](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/baselines/).
## Regole di Contribuzione
Questo repository eredita il livello di qualità di `superpowers`.
- Un problema per PR.
- Non fare commit di artefatti di esecuzione generati o segreti.
- Non aggiungere valutazioni live alla CI pubblica.
- Utilizzare il template PR e spiegare il rischio di sicurezza/lab di valutazione per le modifiche che riguardano configurazioni Coding-Agent, esecuzione shell, helper di setup, strumenti di controllo o input di Gauntlet-Agent.
- Le modifiche alla metodologia di valutazione che modella il comportamento necessitano di prove, non solo testo.
## Aggiornamento Submodulo Padre
`superpowers-evals` è consumato da `superpowers` come submodulo `evals`.
Dopo che qualsiasi PR viene unito a `main` qui, aprire un PR successivo contro il repository padre `superpowers` con destinazione `dev` che aggiorni il puntatore del submodulo `evals` al commit unito di `superpowers-evals`.
Non considerare un'unione di `superpowers-evals` come completamente propagata finché quel PR di aggiornamento del submodulo padre non esiste.
---
Segnalazione di sicurezza → [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| Attore | Cos'è | Dove risiede / i suoi file |
|---|
| Gauntlet | Framework QA generico; la CLI gauntlet. Un tester black-box. | repo github.com/prime-radiant-inc/gauntlet; su PATH come gauntlet (tramite bun link o GAUNTLET_ROOT) |
| Gauntlet-Agent | L'LLM all'interno di Gauntlet che guida il Coding-Agent e si auto-valuta rispetto ai criteri di accettazione (AC) della storia. | modello p.es. claude-sonnet-4-6; flusso di eventi → <run>/gauntlet-agent/results/<runId>/run.jsonl; verdetto → result.{json,md} |
| Coding-Agent | L'agente sotto test — il SUT. Istanze: Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi, Copilot. | config + log di sessione nella sua $HOME temporanea in <run>/home/…; i file che scrive → <run>/coding-agent-workdir/ |
| Quorum | Il wrapper TypeScript/Bun. Gestisce configurazione, adattamento del Coding-Agent, controlli deterministici e il verdetto finale. | repo superpowers-evals/src/; <run>/verdict.json |
compatthinking_formatmax_tokens_field