컨텐츠로 건너뛰기

Arbiter

Arbiter는 판단의 순간을 가정하지 않고 책임질 수 있게 만듭니다. Python MCP 서버와 Claude Code PreToolUse 훅으로, AI가 생성한 ADR·설계 명세를 Markdown + frontmatter로 기록하고, 코드가 쓰이기 전에 리뷰 절차를 강제합니다: AI 비평 → 사람의 이슈 처분 → 사인오프. 승인된 문서는 Nexus 싱크로 발행할 수 있습니다.

어시스턴트가 확신에 찬 명세를 내놓으면 가장 쉬운 길은 그냥 승인하는 것입니다. 리뷰는 아무도 제대로 읽지 않은 텍스트에 찍히는 녹색 체크, 곧 의례로 전락합니다. Arbiter는 판단이 비용이 싸고 기록이 남는 곳에서 일어나도록 강제합니다. 명세가 승인되고 content hash로 스탬프되기 전까지, 비면제 소스 경로에 대한 모든 Write/Edit/MultiEdit차단됩니다. 게이트는 구현 중에만 켜집니다. begin_implementation이 무장하고 end_implementation이 해제합니다.

한마디로: “누가 무엇을, 왜 승인했는가”를 기록되고 귀속 가능한 행위로 만드는 원장입니다. 그 위로 고무도장을 찍고 지나갈 수 없습니다.

Recorded Critiqued · 2 issues Approved · locked GATE · APPROVED_HASH approved e34a17c9 change e34a17c9 ✓ MATCH · gate open mismatch → Write / Edit blocked

핵심 개념

  • 게이트 — 명세가 approved + content-hash 스탬프되기 전까지 비면제 경로의 파일 편집 도구가 차단됩니다. 기본 허용 글롭은 docs/**, tests/**(설정 가능).
  • 무장 / 해제begin_implementation이 특정 명세에 대해 게이트를 무장하고, end_implementation이 해제합니다.
  • 책임 있는 리뷰 흐름critique(AI 리뷰 → 이슈 개설) → 사람이 본문 수정 → approve(이슈별 처분 + 본문 변경 검증 + content hash 스탬프).
  • content-hash 스탬프 + 변조 감지 — 승인이 명세를 hash에 묶고, status가 상태와 변조를 보고합니다.
  • DB 없음 — 모든 상태가 ARBITER_DOCS 아래 Markdown과 ARBITER_ROOT의 작은 .arbiter/ 마커에 존재합니다.
  • 선택적 Nexus 발행publish는 승인 문서를 Nexus 싱크로 보내며, 미설정 시 안전한 no-op입니다.
  • CLI로도 같은 게이트 — MCP 없이 손으로 돌릴 수 있습니다: arbiter record · status · critique · approve · check-gate. MCP 서버와 같은 함수를 호출하므로 사람이 돌리든 에이전트가 돌리든 판정이 갈리지 않습니다.

설치(pip install -e ".[dev]"), .mcp.json·settings.json 등록, 10개 MCP 도구는 영어 페이지(Arbiter)를 참고하세요.