콘텐츠로 이동

아키텍처

emet/src의 코드 맵과 /emet 프롬프트가 이를 어떻게 구동하는지 설명합니다. 용어는 GLOSSARY.md를 따르며, 이 구조의 배경이 된 결정은 docs/adr에 있습니다. 문제가 생기면 문제 해결을 참고하세요.

구조

두 부분으로 이루어져 있습니다. 프롬프트(commands/run.md, agents/*.md, emet/reference/*.md)는 각 단계에서 Claude가 무엇을 해야 하는지 알려 줍니다. emet CLI(emet/bin/emet.ts와 emet/src/)는 결정적이어야 하는 모든 일, 즉 점검, 클레임, 슬롯, 게이트, 트래커 쓰기, 랜딩을 처리합니다. 프롬프트는 CLI가 이미 수행하는 점검을 다시 구현하지 않습니다.

emet/bin/emet.ts는 얇은 디스패처입니다. 첫 번째 인자를 읽고 하위 명령 모듈 하나에 넘기며, 그 모듈이 나머지 process.argv를 직접 읽습니다. 종료 코드는 모든 하위 명령에서 같은 의미를 가집니다.

프롬프트가 CLI를 구동하는 방식

commands/run.md는 짧은 라우터입니다. emet/reference/의 단계 파일을 한 번에 하나씩 불러오므로, 컴팩션이 일어나도 현재 단계의 규칙이 사라지지 않습니다.

단계 프롬프트 CLI 호출
1-5 인터뷰, 스펙, 티켓, 승인 phases-1-5.md init, doctor, validate, surfaces, approve, tracker
6-7 디스패치와 워커 phases-6-7-dispatch.md, worker-prompt.md preflight, claims, slots, launch, lock-reason, handoff, results
8 리뷰, 게이트, 랜딩, 마무리 phases-8-closeout.md, reviewer-prompt.md verify, review-package, review, assess, gate, land, cleanup
9 핸드오프와 체이닝 phases-9-handoff.md status, metrics, usage, spec-merge

코디네이터는 유일하게 트래커에 쓸 수 있는 주체입니다(ADR-0005). 워커는 핸드오프 노트와 emet results로 보고하고, 코디네이터가 이를 게시합니다. emet guard는 PreToolUse 훅으로 실행되어 무인 실행에서 실패를 일으키는 것으로 알려진 동작을 차단합니다.

모듈 맵

각 모듈 옆에는 *.test.ts가 있습니다.

영역 모듈
설정과 감사 init.ts(설정과 문서 골격), config.ts(emet.config.json, 예전 forge.config.json도 여전히 읽음), doctor.ts(플릿 스윕), preflight.ts(디스패치 위생), dependencies.ts, skills.ts(mattpocock-skills 계약), map.ts(코드베이스 개요)
실행 상태 claims.ts(티켓 예약), slots.ts(워커 슬롯 풀), resources.ts(호스트 정보), runs.ts(생존 여부), locks.ts, lockreason.ts, proctree.ts, worktrees.ts, cleanup.ts, status.ts, launch.ts
트래커 tracker.ts, tracker-files.ts(로컬 .scratch/ 트래커), validate.ts(스펙 커버리지), specmerge.ts, approve.ts, surfaces.ts(편집 범위 겹침)
워커 핸드오프 handoff.ts, results.ts, materializelog.ts
리뷰와 랜딩 verify.ts, reviewpackage.ts, review.ts(지적 원장), assess.ts(위험 분류기), gate.ts, land.ts
보고 metrics.ts, usage.ts
안전 guard.ts, guard-destructive.ts
공유 헬퍼 narrow.ts, optional.ts, assets.ts(컴파일된 바이너리에 내장된 파일)

프롬프트 배치

commands/run.md(약 130줄)가 /emet 라우터입니다. emet/reference/의 각 파일은 단계 그룹 하나(phases-1-5.md, phases-6-7-dispatch.md, phases-8-closeout.md, phases-9-handoff.md)이며, 현재 실행의 모드가 필요로 할 때만 불러옵니다. 어느 하나라도 20,000바이트를 넘으면 테스트가 실패하므로, 파일 하나가 컴팩션 이후의 컨텍스트를 차지할 수 없습니다. 각 단계는 수정이나 리뷰 라운드 전에 코디네이터가 관련 섹션을 다시 읽도록 안내합니다. install.sh는 예전의 단일 phases-6-9.md를, 직접 수정했거나 설치 매니페스트보다 오래된 경우에는 phases-6-9.md.retired로 옆에 옮겨 두고, 그렇지 않으면 삭제합니다. 또한 install.sh는 emet guard를 PreToolUse 훅으로 ~/.claude/settings.json에 연결합니다.

배포

install.sh는 emet/를 ~/.claude/emet에 복사하고 프롬프트를 다시 씁니다. 플러그인 경로는 tools/build-binaries.ts가 빌드한 체크섬 검증 독립 실행형 바이너리를 내려받는 심을 제공합니다. ADR-0008을 참고하세요.

함께 보기