Out-of-Scope 변경 Handoff 정책 향상 보고서
보고서 목적
이 보고서는 Sanctum 서비스 워커가 자기 범위를 벗어난 변경 필요성을 발견했을 때 어떻게 멈추고, 기록하고, 올바른 owner에게 넘겨야 하는지 정리한다.
핵심 결론
Out-of-scope 변경은 직접 고칠 대상이 아니라 handoff 대상이다. 서비스 워커는 자기 write allowlist 안에서만 diff를 만들고, 범위 밖 파일에 대해서는 propose-only 모드로 problem, evidence, target worker, suggested validation을 기록해야 한다.
- In-scope write: 자기 서비스 코드, 테스트, llm-context 수정만 허용한다.
- Cross-scope read: 계약 확인, public interface 확인, flow 추적은 허용하되 읽은 파일을 바로 수정하지 않는다.
- Out-of-scope propose: evidence와 target worker를 포함한 handoff를 남기고 직접 diff를 만들지 않는다.
- Contract update: contracts worker 또는 root/e2e agent로 handoff한다.
- Integration fix: root/e2e agent로 넘기고 단일 service worker가 e2e 흐름을 독단 조정하지 않는다.
Codex App workspace separation은 hard boundary가 아니다. 실제 집행은 write allowlist, diff guard, sparse worktree, container/read-only mount에서 수행해야 한다.
Handoff trigger
- 필요한 수정 파일이 현재 worker write allowlist 밖이다.
- canonical
contracts/변경이 필요하다. - 다른 서비스의 API behavior, schema, error code, lifecycle contract를 바꿔야 한다.
- e2e flow나 multi-service orchestration 변경이 필요하다.
- Graphify/RAG/generated summary와 실제 파일 내용이 충돌한다.
- 테스트 실패 원인이 다른 서비스 implementation에 있는 것으로 보인다.
- root-level build, deployment, runtime sandbox, CI policy 변경이 필요하다.
- 현재 서비스 안에 workaround를 넣으면 contract drift가 커질 가능성이 있다.
Sanctum 적용 해석
wallet-api worker가 signing error shape mismatch를 발견했을 때 kms-api를 직접 고치면 책임 경계를 흐린다. 올바른 완료 상태는 wallet-api worker가 자기 allowlist 안의 validation 또는 caller code만 수정하고, mismatch evidence를 contracts/, kms-api public interface, local test result로 정리하며, target을 kms-api worker, contracts worker, root/e2e agent로 명시하는 것이다.
MPC 영역도 같다. mpc-manager-rs worker가 party-node-rs retry response mismatch를 발견하면 party node internals를 직접 고치지 않고 manager expectation, party-node public behavior, MPC session lifecycle contract를 evidence로 남긴다.
운영 판단
- handoff를 실패가 아니라 정상 완료 상태 중 하나로 취급한다.
- Graphify query나 RAG chunk만으로 handoff evidence를 끝내지 않는다. 실제 파일, canonical contract, service context pack, 테스트 결과로 연결한다.
- handoff routing을 키워드 기반 parser로 구현하지 않고 structured handoff, task metadata, owner registry, current-turn reasoning으로 결정한다.
- handoff와 diff guard를 연결해 allowlist 밖 diff를 blocked 또는 handoff-required 상태로 전환한다.
리스크와 가드레일
- handoff 증가로 throughput이 낮아질 수 있으나 초기 rollout에서는 correctness와 ownership을 우선한다.
- silent skip을 막기 위해 final response와 runtime job record에 out-of-scope findings 섹션을 강제한다.
- Graphify는 관련 파일 탐색에만 사용하고 write permission을 주지 않는다.
- RAG에는 canonical source path, validation state, stale condition이 필요하다.
- contracts 변경은 canonical decision 후 service workers가 implementation과 mapping을 맞추는 순서로 진행한다.
kms-api나 MPC handoff에는 실제 secret, private credential, key material을 넣지 않는다.
관련 주제 연결
이 정책은 service-scoped-worker-model.md의 propose-only boundary를 운영 절차로 바꾸고, cwd-worker-scope-boundary.md의 diff guard와 연결되며, root-e2e-orchestrator-role.md가 handoff 병합과 e2e validation으로 닫을 입력을 제공한다.