<!-- task=m-iop-agent-cli-runtime/05_contract_boundary plan=0 tag=API -->

# IOP Agent CLI Runtime 계약 경계

## For the Implementing Agent

구현과 검증 결과를 `CODE_REVIEW-cloud-G07.md`의 구현 소유 섹션에 기록한다. active 파일을 archive하거나 `complete.log`를 만들지 않는다.

## Background

승인 SDD는 repo-global/local config, workspace grant·overlay·change set integration 계약 원문이 아직 없음을 명시한다. 이후 runtime 코드는 이 계약을 먼저 고정하지 않으면 config와 isolation 의미를 추측하게 된다.

## Analysis

### Files Read

- `agent-roadmap/sdd/automation-runtime-bridge/iop-agent-cli-runtime/SDD.md`
- `agent-contract/index.md`
- `agent-contract/inner/agent-runtime.md`
- `packages/go/agenttask/ports.go`
- `packages/go/agentguard/types.go`

### SDD Criteria

SDD `S05`~`S09`, `S18`~`S19`의 입력·durable type·출력은 모두 새 계약 원문에 연결한다. Evidence Map의 S05/S06/S07/S08/S09/S18/S19가 후속 계획의 검증 anchor다.

### Test Environment Rules

`local` 규칙과 `platform-common-smoke`를 읽었다. proto 변경은 이 작업에 없다. 계약 링크와 Go package baseline은 `go test -count=1`으로 확인한다.

### Split Judgment

계약 원문은 config, policy, durable state, overlay와 integration의 공통 선행조건이므로 단일 packet으로 유지한다. `06`~`12`는 이 계약의 PASS 후에만 시작한다.

### Scope Rationale

코드, proto, YAML 예시와 SDD/roadmap은 변경하지 않는다. 계약은 agent runtime의 새 boundary만 다루며 Edge provider-pool 계약을 재정의하지 않는다.

### Final Routing

`first-pass`; local G07. boundary-contract risk 1개, prior rework 0, trusted baseline test가 있다. review는 official cloud G07이다.

## Implementation Checklist

- [ ] `iop-agent` config, workspace grant, overlay, change set, integration record의 ownership·versioning·failure semantics를 inner contract로 작성한다.
- [ ] S05~S09 및 S18~S19와 각각의 completion evidence를 계약에 연결한다.
- [ ] Contract index에 새 inner 계약을 등록하고 중복 원문이 없음을 확인한다.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

### [API-1] 새 inner runtime 계약을 고정한다

**Problem:** SDD Interface Contract는 새 config/isolation 원문이 없다고 명시한다.

**Solution:** `agent-contract/inner/iop-agent-cli-runtime.md`에 repo-owned defaults와 user-local state의 precedence/read-only 경계, immutable revisions, ordered-rule replacement, selector history, failure snapshot, overlay/change-set/integration record, lease/recovery와 retained blocker를 규정한다. `agent-contract/index.md`에 읽기 조건과 원본 후보를 추가한다.

**Test Strategy:** 문서 작업이므로 새 Go test는 만들지 않는다. index 링크와 이미 존재하는 runtime package regression을 실행한다.

**Verification:** 아래 명령이 성공하고 contract path가 index에서 한 번만 발견된다.

## Modified Files Summary

| File | Item |
|---|---|
| `agent-contract/inner/iop-agent-cli-runtime.md` | API-1 |
| `agent-contract/index.md` | API-1 |

## Final Verification

```bash
rg --sort path -n 'iop-agent-cli-runtime' agent-contract/index.md agent-contract/inner/iop-agent-cli-runtime.md
go test -count=1 ./packages/go/agenttask ./packages/go/agentguard
git diff --check
```

After completing all code changes, fill implementation-owned sections in `CODE_REVIEW-*-G??.md`.
