
행동 평가 랩(Quorum)은 superpowers 프로젝트를 위한 것으로, 실제 코딩 에이전트 CLI(Claude, Codex, Gemini, Kimi 등)를 QA 에이전트를 통해 구동하고, 시나리오 기준 및 결정론적 사후 검사에 대한 워크플로우 준수 여부를 평가합니다.
행동 평가 연구소 for superpowers. Quorum는 실제 코딩 에이전트 CLI (Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi, and Copilot)를 Gauntlet QA 에이전트를 통해 구동하고 시나리오 승인 기준과 결정론적 사후 검사에 대해 평가합니다.
코드, CLI, 경로 및 인라인 텍스트는 모두 소문자 quorum을 사용합니다. 대문자 Quorum은 제목과 행위자 테이블에 나타납니다.
이것은 일반적인 벤치마크 스위트가 아닙니다. 워크플로우 준수: 기술 트리거링, 작업 트리 동작, 서브에이전트 조정, 검증 반사, 리뷰 품질 및 비용 형성 패턴을 위한 평가 연구소입니다.
quorum에는 두 가지 매우 다른 실행 모드가 있습니다:
biome, tsc, bun test를 실행합니다. 모델 API를 호출하지 않으며 에이전트 CLI를 실행하지 않습니다.공개 CI는 그 선의 정적/단위 측면에 머물러야 합니다. API 키, 라이브 quorum run … 호출 또는 위험 모드 에이전트 실행을 공개 CI에 절대 추가하지 마십시오.
라이브 평가는 테스트 중인 코딩 에이전트를 광범위한 실행 권한으로 실행합니다:
--dangerously-skip-permissions를 사용합니다.--dangerously-bypass-approvals-and-sandbox를 사용합니다.--dangerously-skip-permissions를 사용하며 agy에 대해 로컬 브라우저/키체인 인증에 의존합니다.--skip-trust --approval-mode=yolo를 사용합니다. API 키 인증이 기본이며, 신뢰할 수 있는 로컬 실행을 위해 옵트인 OAuth 인증이 있습니다.--yolo를 사용합니다.--dangerously-skip-permissions를 사용합니다.--allow-all을 사용합니다.quorum은 각 코딩 에이전트의 HOME (및 XDG 기본 디렉터리와 TMPDIR)을 <run>/home의 1회성 실행별 홈에 고정합니다. 실행기는 src/agents/home-env.ts (xdgHomeEnv, 단일 진실 공급원)에 의해 빌드된 $QUORUM_HOME_ENV 토큰을 삽입합니다. 각 에이전트의 구성 디렉터리는 해당 홈 아래에 축소됩니다 (Claude .claude, Codex .codex, Gemini ., OpenCode ., Antigravity ., Copilot .copilot, Kimi .kimi-code, Pi .pi/agent). 따라서 코딩 에이전트는 자체 $HOME 기본값을 통해 구성을 찾으며 호스트의 실제 , , , , , , 또는 기타 홈 상대 상태, 설치된 플러그인 또는 이전 세션을 전혀 보지 않습니다. 프로비저닝은 실행 전에 해당 1회성 홈에 구성과 각 에이전트에 필요한 호스트 OAuth 자격 증명을 시드하므로 런타임 로그인이 없습니다. Copilot는 또한 격리된 홈 아래에 로컬 Superpowers 플러그인을 스테이징하고, 허용된 외부 환경을 사용하며, 실행 디렉터리 내에 시크릿이 포함된 chmod-0600 를 작성합니다. 이는 폭발 반경을 좁히지만 샌드박스는 아닙니다. OpenCode 및 Copilot 실행기는 추가로 허용된 환경을 사용하지만 라이브 코딩 에이전트는 여전히 광범위한 파일 시스템 및 명령 실행 권한으로 실행됩니다.
신뢰할 수 있는 로컬 환경에서만 라이브 평가를 실행하십시오:
results/, 원시 세션 로그, 세션 상태/도구 호출 아티팩트 및 Gauntlet 에이전트 입력을 민감하게 취급하십시오.설치 및 정적 게이트 실행:```bash bun install bun run check bun run quorum check
컨테이너 외부에서 로컬 또는 break-glass 시나리오를 하나 실행하십시오:```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>
The Gauntlet-Agent(QA 드라이버)는 기본적으로 ANTHROPIC_API_KEY를 사용하여 Anthropic에 인증합니다. 로그인된 Claude 구독을 통해 구동하려면 환경(예: .env)에 CLAUDE_CODE_OAUTH_TOKEN(claude setup-token에서 얻음)을 설정하십시오. 하네스가 이를 전달하며 gauntlet은 API 키보다 이를 선호합니다. 참고: 구독에는 대화형 사용에 맞춰진 사용량 제한이 있습니다. 높은 동시성을 가진 run-all 배치는 이 제한에 도달할 수 있으므로, 많은 부하에는 API 키가 더 적합합니다.
에이전트 이름은 claude, codex, antigravity, gemini, kimi, opencode, pi, copilot입니다. 모든 시나리오가 모든 에이전트에 유효한 것은 아닙니다.
BREAKING(자격 증명 축): claude-haiku와 claude-sonnet은 더 이상 별도의 에이전트 이름이 아닙니다. Claude 하네스를 Sonnet 또는 Haiku에 대해 실행하려면:```bash
bun run quorum run scenarios/ --coding-agent claude --credential sonnet
bun run quorum run scenarios/ --coding-agent claude --credential haiku
`claude` 에이전트의 기본 자격 증명은 `opus`입니다.
## 공유 평가 어플라이언스
공유 원격 라이브 평가는 신뢰할 수 있는 어플라이언스 호스트에서 실행되도록 설계되었으며, 승인된 자격 증명 번들, 정확한 저장소/참조 출처, 호스트 잠금, 복구 가능한 작업 기록을 갖추고 있습니다. 에이전트는 구성된 호스트에 어플라이언스 헬퍼가 존재하면 이를 사용해야 합니다:```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>
대상 인터페이스 및 운영 규칙은 docs/appliance-runbook.md에 있으며, docs/superpowers/specs/2026-06-18-shared-eval-appliance-design.md에 의해 뒷받침됩니다.
doctor는 읽기 전용입니다. prepare는 라이브 작업이 활성화된 동안 참조를 변경하는 대신 lock_busy를 반환합니다.
호스트 액세스 및 공급자별 비상 절차는 이 공개 리포지토리에서 의도적으로 제외되었습니다. 해당 세부 사항은 비공개 운영 런북을 사용하세요.
원시 bun run quorum ... 및 scripts/evals-container exec quorum ...은 공유 라이브 평가를 위한 로컬 또는 신뢰할 수 있는 비상 워크플로로 남아 있습니다.
Docker 런타임은 실제 제품군 실행을 위한 기본 레시피입니다. quorum이 풍부한 Ubuntu 워크스페이스 컨테이너 내에서 실행되는 동안 evals 체크아웃, 테스트 중인 Superpowers 체크아웃, 자격 증명, 인증 소스 및 모든 실행 아티팩트를 호스트에 유지합니다.
.env.container를 생성하거나 명시적 env 파일을 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=...
그런 다음, 컨테이너를 빌드하고, 시작하고, 검증하십시오:```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
래퍼는 이 evals 체크아웃을 /workspace/evals에, 상위 Superpowers 체크아웃을 /workspace/superpowers에, 호스트 results/를 /workspace/evals/results에 마운트합니다. 기본 부모 경로가 테스트 대상 시스템이 아닌 경우 --superpowers-root <dir>을 사용하여 Superpowers 체크아웃을 재정의합니다.
이미지 빌드에는 로컬 Gauntlet 체크아웃이 필요합니다. 래퍼는 GAUNTLET_ROOT 또는 Bun 글로벌 bun link 설치에서 이를 발견합니다. build와 함께 --gauntlet-root <dir>을 사용하여 명시적으로 선택하십시오.
자격 증명은 읽기 전용 마운트입니다. 기본적으로 up은 먼저 .env.container를 사용하고, 그 다음 .env를 사용하며, 발견된 첫 번째 파일을 /run/evals/credentials.env에 마운트합니다. up 앞에 --env-file <file>을 전달하여 명시적으로 선택하십시오. 래퍼는 호스트 환경을 그대로 전달하지 않습니다. 컨테이너 내부의 quorum shim만 dotenv 파일을 소싱하므로 scripts/evals-container exec bash ...는 라이브 평가 자격 증명을 자동으로 받지 않습니다. 기존 컨테이너에서 env-file 마운트를 변경하기 전에 down을 사용하십시오.
OAuth/파일 인증 소스도 읽기 전용입니다. 기존 ~/.codex, ~/.gemini, ~/.kimi-code, ~/.pi 디렉토리는 /auth/codex, /auth/gemini, /auth/kimi-code, /auth/pi에 마운트됩니다. 소스를 재정의하려면 --auth codex=<dir>, --auth gemini=<dir>, --auth kimi=<dir>, --auth pi=<dir>을 사용하십시오.
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
전체 준비된 제품군을 위해 `--tier sentinel` 없이 동일한 명령을 실행하세요. `run-all`은 각 배치를 `results/batches/<batch-id>/` 아래에 기록하고 각 실행을 `results/<scenario>-<agent>-<os>-<timestamp>-<nonce>/` 아래에 기록합니다; 다음으로 배치를 렌더링하세요:```bash
scripts/evals-container exec quorum show <batch-id>
run-all은 주기적인 활성 하트비트를 출력합니다
(⋯ … · running N/jobs · done D · queued Q · [agent:scenario, …]); --heartbeat-seconds <n>으로 조정할 수 있습니다
(0은 비활성화). 배치를 중단하면 — Ctrl-C, 또는 exec 세션 종료 — 정상적으로 중지됩니다: 큐가 취소되고, 진행 중인 실행은 SIGINT 처리되며(중단으로 기록됨), 배치 푸터는 계속 작성되므로 finished_at이 null로 남지 않습니다.
컨테이너 런타임은 Docker 소켓을 마운트하거나, 대시보드 포트를 게시하거나, 데스크탑 IDE를 포함하지 않습니다. 이미지에는 Antigravity의 데스크탑 agy 설치 관리자가 포함되어 있지 않습니다. 헤드리스 설치 경로가 나올 때까지 Antigravity를 호스트 측에서 실행하십시오:```bash
bun run quorum run-all --coding-agents antigravity --jobs 1
그룹화된 전체 에이전트 호스트 스위핑, 에이전트별 자격 증명, 인증 마운트 세부 정보 및 문제 해결에 대해서는 [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
Windows 11에서 평가를 수행하려면 `--os windows`를 사용하세요(Linux+KVM 호스트만 해당):```bash
bun run quorum run scenarios/<name> --coding-agent claude --os windows
See docs/windows/eval-runtime.md for setup and deployment.
액터들을 혼동하지 않도록 주의하세요; 이를 혼동하는 것이 가장 흔한 트라이어지 오류입니다. 이 이름들은 문서, CLI 출력, 코드, 파일 이름, 커밋 메시지 등 모든 곳에서 사용됩니다.
한 번의 실행에는 두 개의 LLM이 포함됩니다 — Gauntlet-Agent(QA 테스터)와 Coding-Agent(대상). 별도의 모델, 별도의 로그, 별도의 토큰 비용.
평가 차원은 **(scenario, coding-agent, credential, os)**입니다. 리포지토리 루트의 credentials.yaml은 명명된 자격 증명을 정의합니다. 각 항목은 모델, 와이어 프로토콜 (api: openai-chat, openai-responses, anthropic, 또는 gemini), 기본이 아닌 엔드포인트에 대한 선택적 base_url, 인증 유형 (api-key, subscription, 또는 oauth), 선택적 api_key_env, 서비스 대상 런타임 패밀리 (harnesses), 선택적 스케줄러 오버라이드 (max_concurrency, launch_spacing_seconds) 및 compat 블록 (, )을 선언합니다.
각 에이전트 YAML은 default_credential을 선언합니다. 런타임에 재정의 가능:```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`는 `credentials.yaml`과 각 에이전트의 `default_credential`을 검증합니다.
스케줄러는 동시성 상한과 속도 제한 래치를 자격 증명의 **limiterKey**에 키잉합니다. **limiterKey**는 자격 증명의 `base_url`이 설정된 경우 그 값이고, 그렇지 않으면 자격 증명 이름과 `api`를 결합한 것입니다(예: `https://…/v1|openai-chat`, 또는 `base_url`이 없는 네이티브 자격 증명의 경우 `opus|anthropic`). 동일한 limiterKey를 공유하는 셀은 하나의 상한과 하나의 속도 제한 래치를 공유합니다. 즉, 어떤 셀에서 속도 제한 응답이 발생하면 해당 엔드포인트에 대해 대기 중인 나머지 모든 셀이 즉시 건너뛰어집니다.
표준 명명된 자격 증명 (`credentials.yaml` 참조): `opus`, `sonnet`, `haiku` (Claude harness), `codex_sub` (Codex 구독), `kimi_default`, `openrouter_glm_5_2` (Pi 기본값), `pi_default` (네이티브 Pi OAuth 옵트인), `opencode_gpt5`, `gemini_default`, `serf_default`, `glm_5_2_chat`, `glm_5_2_responses`, `ollama_local`.
### 외부 Serf 캠페인
단기 Serf 모델/공급자 캠페인은 저장소의 표준 `credentials.yaml`이 아닌 외부 자격 증명 파일을 사용합니다. `quorum run`, `quorum run-all` 또는 `quorum check`에 `--credentials-file`을 사용하여 명시적으로 전달하세요. 실제 캠페인 YAML과 모든 원시 실행 아티팩트는 Git 외부에 보관하세요. YAML에는 라우팅 레이블과 선택된 API 키 환경 변수 이름이 포함되며, 키 값은 절대 포함되지 않습니다.
각 캠페인 사전 설정은 정확히 하나의 모델과 하나의 공급자를 고정하고, fallback을 비활성화해야 하며, 프롬프트, 샘플링, 추론, 도구 또는 토큰 제한 재정의를 포함하지 않아야 합니다. 신뢰할 수 있는 런타임 자격 증명 번들을 통해 전용 키를 제공하세요. 키는 캠페인의 의도된 데이터 정책을 적용하고, 캠페인 지출 상한을 가져야 하며, 공유 용량 캠페인의 경우 BYOK 바인딩이 없어야 합니다. BYOK 비교는 별도의 키와 후보 파일을 사용하는 별도의 캠페인입니다.
디스패치 전에 `run-all`은 외부 파일을 한 번 구문 분석하고 표준 스냅샷을 `results/batches/<batch-id>/credentials.snapshot.yaml`에 기록합니다. 모든 하위 프로세스는 해당 불변 스냅샷을 받습니다. 직접 `quorum run`은 동일한 표준 스냅샷을 실행 디렉터리 아래에 기록합니다. 배치 시작 후 소스 YAML을 편집해도 이후 셀을 변경할 수 없습니다. 스냅샷에는 스키마에서 알 수 있는 라우팅 메타데이터와 환경 변수 이름이 포함되며, 비밀 값은 포함되지 않지만 민감한 실행 아티팩트의 일부로 남아 있습니다.
먼저 에이전트 중립적인 스모크 테스트를 실행한 다음, 최종 스모크 판정이 `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은 순차적 지연/비용 기준선입니다. 하나의 매트릭스 셀은 하나의 유료 시도입니다. 캠페인 스케줄러는 셀을 자동으로 재시도하거나 반복하지 않습니다. quorum costs <batch-id>를 사용하여 레이블이 지정된 비교를 렌더링합니다. 최종 pass 행만 비교 가능으로 표시됩니다. fail 및 indeterminate는 계속 표시되지만 순위가 매겨지지 않으며, 누락된 측정값은 0이 아닌 누락으로 렌더링됩니다. Charged, estimated 및 delta 열은 Coding-Agent 비용입니다. 기존의 --with-gauntlet 열은 별도의 Gauntlet-Agent 하네스 오버헤드입니다.
라이브 승인은 수동으로 수행되는 신뢰할 수 있는 유지보수자 작업이며, 공개 CI 자동화가 아닙니다.
--jobs 1을 사용하여 하나의 알려진 양호한 hello-world 셀을 실행합니다.verdict.json, trajectory.json, openrouter-generations.json, coding-agent-token-usage.json 및 quorum costs <batch-id>를 검사합니다. 모델, 제공자, 프리셋 버전, BYOK가 false인지, 토큰/캐시 버킷, 기간, 청구 비용, 추정치, 델타 및 후보 레이블(양자화 및 카탈로그 날짜 포함)을 확인합니다.--jobs 1을 사용하여 하나의 Fractals 셀을 실행합니다. 최종 pass, 모든 결정론적 검사, 커밋된 메인 체크아웃 전달, 완전한 비교 행이 필요합니다.--jobs 2를 사용하여 두 개의 hello-world 후보를 실행합니다. 키, 생성물, 레이블 또는 경제성에 교차 오염이 없는 별도의 귀속을 확인합니다.릴리스 검토되고 정리된 결론만 날짜가 포함된 docs/experiments/ 노트에 게시하며, 실패와 성공 모두 기록합니다. 외부 캠페인 YAML 및 원시 아티팩트는 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`은 인수 없이 모든 시나리오와 `credentials.yaml`의 유효성을 검사합니다.
`run-all`은 각 시나리오의 `# coding-agents:` 지시문에 따라 필터링된 모든 선택된 코딩 에이전트에 대해 포함된 모든 시나리오를 실행합니다.
## 평결 및 결과물
quorum은 세 가지 값의 평결을 생성합니다:
- `pass` - Gauntlet-Agent가 통과했으며 모든 사후 검사가 통과되었습니다.
- `fail` - Gauntlet-Agent가 실패했거나 사후 검사 중 하나가 실패했습니다.
- `indeterminate` - 설정/사전 검사/캡처/쿼럼 실패, Gauntlet `investigate`, 또는 추적 검사가 있을 때 빈 추적.
종료 코드는 `pass`의 경우 0, `fail`의 경우 1, `indeterminate`의 경우 2입니다.
각 실행은 `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/는 gitignore되어 있습니다. 실행 아티팩트에 민감한 대화 내용, 자격 증명, 도구 호출, 파일 시스템 상태가 포함될 수 있기 때문입니다.
다음은 CI와 일상적인 PR에서 예상되는 검사입니다.```bash bun run check # biome ci . && tsc --noEmit && bun test — the full gate bun run quorum check # validate every scenario directory
`bun run check`는 단일 게이트입니다 (Biome 린트/포맷 + 완전 엄격 `tsc` + `bun test`); 개별 단계는 `bun run lint`, `bun run typecheck`, `bun test`입니다.
## Architecture
quorum은 **Bun 위의 TypeScript**입니다. 콘솔은 `bun run quorum <cmd>`입니다 ( `src/cli/index.ts`에 있는 [commander](https://github.com/tj/commander.js) CLI이며, `quorum` bin으로도 노출됩니다); 게이트는 `bun run check`입니다 (Biome + 완전 엄격 `tsc` + `bun test`).
프로세스 및 파일 경계를 넘는 형태들 — `verdict.json`, 배치 인덱스, 이코노믹스, Gauntlet 결과, 에이전트 YAML — 은 `src/contracts/`에 있는 **zod 스키마**로, 모든 경계에서 검증되므로 잘못된 외부 파일은 판결을 손상시키는 대신 큰 소리로 실패합니다. `cli/` 레이어는 명령을 파싱하고 `runner/` 파이프라인 (하나의 시나리오 × 하나의 Coding-Agent) 또는 `run-all/` (매트릭스)로 디스패치합니다. Coding-Agent별 차이는 에이전트 이름으로 키가 지정된 두 개의 병렬 팬-아웃에 있습니다: `agents/`는 일회용 per-run `$HOME` (`<run>/home`) 아래에 에이전트의 구성을 시드하고, `normalize/`는 해당 에이전트의 세션 로그를 균일한 도구 호출 추적으로 변환합니다. 실제 에이전트-CLI 호출 및 기타 비-허메틱 서브프로세스는 `agents/command-runner.ts` 심을 통해 진행되므로, 단위 스위트는 가짜를 주입하고 실제 CLI를 실행하지 않습니다. `scheduler/`는 `run-all/` 아래의 공유 동시성 엔진입니다. 대시보드는 `results/` 및 `grid-manifest.json`을 스캔하는 별도의 읽기 전용 패키지입니다. `env.ts`는 `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
통과하지 않은 실행을 트라이어지하는 것은 다음으로 시작됩니다:```bash bun run quorum show []
Then use [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)
for the attribution atlas. For agent-specific auth, provisioning, and capture
checks, 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).
For the current known-good baseline, see [docs/baselines/](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/docs/baselines/).
## 기여 규칙
이 저장소는 `superpowers`의 품질 기준을 따릅니다.
- PR당 하나의 문제.
- 생성된 실행 아티팩트나 비밀을 커밋하지 마세요.
- 공개 CI에 라이브 평가를 추가하지 마세요.
- PR 템플릿을 사용하고 변경 사항에 대한 보안/평가-실험실 위험을 설명하세요. 다음을 변경하는 경우:
Coding-Agent 설정, 셸 실행, 설정 도우미, 체크 도구 또는
Gauntlet-Agent 입력을 건드리는 경우.
- 행동 형성 평가 방법론의 변경은 단순한 설명이 아닌 증거가 필요합니다.
## 상위 서브모듈 범프
`superpowers-evals`는 `superpowers`에서 `evals` 서브모듈로 사용됩니다.
여기서 `main`에 PR이 병합된 후, 상위 `superpowers` 저장소에서 `dev`를 대상으로 하는 후속 PR을 열어 `evals` 서브모듈 포인터를 병합된 `superpowers-evals` 커밋으로 범프하세요.
해당 상위 서브모듈 범프 PR이 존재할 때까지 `superpowers-evals` 병합이 완전히 전파된 것으로 간주하지 마세요.
---
Security reporting → [SECURITY.md](https://github.com/prime-radiant-inc/superpowers-evals/blob/HEAD/SECURITY.md).
~/.claude~/.codex~/.gemini~/.kimi-code~/.pi~/.copilot~/.config.copilot-env| 액터 | 정의 | 위치 / 파일 |
|---|
| Gauntlet | 범용 QA 프레임워크; gauntlet CLI. 블랙박스 테스터. | repo github.com/prime-radiant-inc/gauntlet; PATH에서 gauntlet ( bun link 또는 GAUNTLET_ROOT 통해 ) |
| Gauntlet-Agent | Gauntlet 내부의 LLM으로, Coding-Agent를 구동하고 스토리의 AC에 대해 자체 평가를 수행합니다. | 모델 예 claude-sonnet-4-6; 이벤트 스트림 → <run>/gauntlet-agent/results/<runId>/run.jsonl; 평결 → result.{json,md} |
| Coding-Agent | 테스트 대상 에이전트 — SUT. 인스턴스: Claude, Codex, Antigravity, Gemini, Kimi, OpenCode, Pi, Copilot. | config + 세션 로그는 일회용 $HOME 아래 <run>/home/…에; 작성한 파일 → <run>/coding-agent-workdir/ |
| Quorum | TypeScript/Bun 래퍼입니다. 설정, Coding-Agent 적응, 결정론적 검사, 그리고 최종 평결을 담당합니다. | repo superpowers-evals/src/; <run>/verdict.json |
thinking_formatmax_tokens_field