서비스 스코프 워커 모델 향상 보고서
보고서 목적
이 보고서는 Sanctum의 서비스별 LLM 워커 운영 모델을 실행 가능한 정책으로 재정리한다. 독자는 wallet-api, kms-api, hd-manager, rust-mpc/mpc-manager-rs, rust-mpc/party-node-rs, contracts/, root/e2e agent를 함께 운영해야 하는 엔지니어링 리드다.
핵심 결론
Sanctum의 기본 운영 모델은 서비스별 워커 + root/e2e 통합 워커다. 서비스별 워커는 자기 서비스의 코드, 테스트, 서비스 문맥, 제한된 dependency stub을 소유한다. root/e2e agent는 contract alignment, e2e validation, handoff 병합, release impact 판단을 소유한다.
- 서비스 워커는 넓게 읽되 좁게 써야 한다.
contracts/는 canonical contract SSOT이고 servicellm-context/contracts.md는 mapping이어야 한다.- 각 서비스에는
AGENTS.md와llm-context/가 필요하다. - Graphify는 context-router로만 사용한다.
- RAG와 Derived Knowledge는 evidence retrieval 또는 보조 결론 계층이며 SSOT가 아니다.
- hard boundary는 discord-codex-bot runtime의 write allowlist, diff guard, sparse worktree/container/read-only mount가 담당한다.
서비스별 역할
wallet-api 워커는 사용자-facing 요청과 wallet flow orchestration을 담당한다. downstream public interface와 관련 contract는 읽을 수 있지만 sibling implementation이나 canonical contracts/ 변경은 직접 하지 않는다.
kms-api 워커는 key management API boundary를 담당한다. secret, credential, 실제 key material은 artifact나 보고서에 노출하지 않으며 key operation contract 변경이나 secret/config 운영 정책 변경은 handoff 대상이다.
hd-manager 워커는 HD derivation logic과 테스트를 담당한다. wallet request flow나 KMS implementation은 직접 고치지 않고 root/e2e agent 또는 대상 service worker로 넘긴다.
mpc-manager-rs 워커는 MPC orchestration과 manager-level state/control logic을 담당한다. party-node-rs public interface는 읽지만 internals는 직접 수정하지 않는다.
party-node-rs 워커는 protocol participant behavior와 node-local validation을 담당한다. manager orchestration, API service behavior, root e2e suite 변경은 propose-only다.
root/e2e agent는 service worker handoff, contracts/ 변경, e2e test, cross-service flow, final diff review를 조정하며 모든 구현을 직접 하는 super-worker가 되어서는 안 된다.
Sanctum 적용 해석
Sanctum은 wallet, key management, HD derivation, MPC orchestration, party execution이 연결된다. 한 서비스 변경이 다른 서비스 지식을 필요로 할 수 있지만 확인할 수 있다는 것과 수정할 수 있다는 것은 다르다.
- read boundary: 이해와 검증을 위해 읽는 범위
- write boundary: 직접 diff를 만들 수 있는 범위
- propose-only boundary: 변경 필요성을 제안하지만 직접 수정하지 않는 범위
- handoff boundary: 어떤 조건에서 누구에게 넘기는지 정의하는 범위
각 서비스의 AGENTS.md와 llm-context/service.md, commands.md, test-scope.md, e2e-role.md, contracts.md, dependency-stubs.md가 필요하다. contracts.md는 canonical contract를 복사하지 않고 어떤 contract를 consumer/producer로 참조하는지만 기록해야 한다.
운영 판단
wallet-api는 초기 pilot에 적합하되 test 추가, response validation 보강, context pack 작성처럼 낮은 위험 작업으로 시작한다.kms-api와 MPC 계층은 보안과 correctness 영향이 큰 고위험 워커로 취급한다.- root/e2e agent는 통합 구현자가 아니라 통합 검증자로 시작한다.
- Codex App은 개인 탐색과 설계 리뷰에, enforcement가 필요한 실행은 discord-codex-bot runtime에 둔다.
리스크와 가드레일
- scope invasion: worker별 write allowlist와 final diff guard로 막는다.
- contract duplication: service
llm-context/contracts.md는 canonical path, service usage, assumptions, stale condition 중심 mapping으로 유지한다. - Graphify overreach: Graphify 결과는 read context로만 표시한다.
- false confidence from workspace separation: 실제 diff path 기준 검증이 필요하다.
- handoff 누락: final response와 runtime job record에 out-of-scope findings를 강제한다.
실행 체크리스트
- 각 서비스의 실제 경로와 owner를 확정한다.
- 각 서비스에
AGENTS.md와llm-context/기본 세트를 만든다. llm-context/contracts.md는 canonicalcontracts/mapping으로만 작성한다.- worker metadata에
worker,cwd,writeAllowlist,readHints,proposeOnly,handoffRequiredOn을 포함한다. - Graphify/RAG는 navigation/evidence로만 사용한다고 명시한다.
- 작업 종료 전 diff guard가 allowlist 밖 변경을 차단한다.
- contract, e2e, sibling service 변경 필요성은 root/e2e agent 또는 해당 service worker로 handoff한다.
- secret, private credential, 실제 key material은 artifact에 포함하지 않는다.