<!-- task=m-iop-agent-chronos-extraction-decoupling/08+07_cleanup_build_contract plan=1 tag=REFACTOR -->

# Standalone build·계약·문서 전환 정리

## For the Implementing Agent

`CODE_REVIEW-cloud-G07.md`의 implementation-owned 섹션 작성은 필수다. encoded predecessor의 exact PASS를 확인한 뒤 이 child 범위만 구현·검증하고 실제 출력과 결정을 review stub에 기록한다. active pair를 유지해 review 준비 완료를 보고하며 finalization은 code-review agent만 수행한다. 차단되면 질문하거나 상태를 분류하지 말고 blocker, 시도한 명령/출력, 재개 조건만 implementation-owned evidence 필드에 기록한다. 사용자 입력 도구, control-plane stop file, archive, `complete.log`는 만들지 않는다.

## Background

Standalone `iop-agent` source 제거 뒤에도 build target, active contract/spec/rule, README와 HANDOFF가 과거 책임을 광고하면 새 책임 경계가 성립하지 않는다. IOP는 외부 추론 API와 model/provider/device operation만 소유하고, Chronos Server/독립 Chronos Node가 loop engineering, agent profile/session, workspace/tool execution, terminal/PTY와 원격 제어를 소유하도록 전환 문맥을 정리한다. 03 manifest/receipt는 historical digest로 동결하고 최종 disposition·receipt는 10, 13, 14의 후속 evidence에 맡긴다.

## Archive Evidence Snapshot

- 이전 pair `plan_local_G07_0.log`, `code_review_cloud_G07_0.log`에는 구현 evidence/verdict, Required/Suggested/Nit, 실행된 verification이 없다.
- unsplit source pair `agent-task/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/plan_cloud_G09_0.log`, `code_review_cloud_G09_0.log`도 REFACTOR-2 evidence/verdict 없이 split되었다. build/contract/spec/docs 범위만 이 child가 이어받는다.
- Roadmap carryover는 S03 removed-path/reference audit와 IOP clean build다. 03 ownership manifest와 receipt digest는 historical snapshot이므로 수정하지 않는다.
- 필요한 prior-loop 사실은 위에 모두 적었으므로 archive를 다시 읽지 않는다.

## Analysis

### Files Read

- `Makefile`
- `go.mod`
- `go.sum`
- `agent-roadmap/phase/automation-runtime-bridge/PHASE.md`
- `agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md`
- `agent-roadmap/sdd/automation-runtime-bridge/iop-agent-chronos-extraction-decoupling/SDD.md`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/plan_cloud_G09_0.log`
- `agent-task/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/code_review_cloud_G09_0.log`
- `agent-contract/index.md`
- `agent-contract/inner/iop-agent-cli-runtime.md`
- `agent-contract/inner/agent-runtime.md`
- `agent-spec/index.md`
- `agent-spec/runtime/iop-agent-cli-runtime.md`
- `README.md`
- `HANDOFF.md`
- `apps/client/README.md`
- `apps/node/README.md`
- `agent-ops/rules/project/rules.md`
- `agent-ops/rules/project/domain/agent/rules.md`
- `agent-ops/rules/project/domain/client/rules.md`
- `agent-ops/rules/project/domain/node/rules.md`
- `agent-ops/rules/project/domain/platform-common/rules.md`
- `agent-ops/rules/project/domain/testing/rules.md`
- `agent-test/local/testing-smoke.md`
- `agent-test/local/platform-common-smoke.md`

### SDD Criteria

- SDD는 `[승인됨]`, 잠금 `해제`다. 대상은 Acceptance Scenario `S03`, Milestone Task `decouple`이며 Evidence Map은 removed-path/reference audit와 IOP clean build를 요구한다.
- D04/S01은 03 original manifest digest를 수정하지 않고 10의 boundary-disposition delta, 13의 original+delta digest 기반 effective final matrix, 14의 final receipt pointer로 이어가도록 요구한다.
- 따라서 이 child는 active build/governance/docs만 정리한다. 단독 PASS는 `decouple`을 체크하지 않으며 다음 UI closure child가 predecessor evidence와 함께 completion을 보고한다.

### Verification Context

- handoff 입력은 없다. Milestone/SDD, build manifests, active contract/spec/rules/docs와 local testing profiles를 읽었다.
- preflight는 `go version go1.26.2 linux/arm64`, `go env GOMOD=/config/workspace/iop-s1/go.mod`, `protoc 29.3`, `protoc-gen-go v1.36.11`, GNU Make 4.3이다. module/local rule의 Go 1.24 기준과 host toolchain 차이는 blocker가 아니며 실제 checkout 결과를 기록한다.
- 외부 서비스/credential은 없다. `make proto`, `go mod tidy -diff`, `make build-local`, fresh `go test -count=1 ./...`가 repository-native evidence다.
- predecessor `07+06_remove_go_surface`의 exact PASS `complete.log`는 현재 missing이다. 구현 시 active 또는 matching archive에서 정확히 하나를 찾아 PASS row를 확인한다.
- confidence는 high다. 07 삭제 결과에 따른 tidy diff는 actual output으로 고정한다.

### Test Coverage Gaps

- build/proto/dependency 정리는 새 동작을 추가하지 않으므로 새 test file은 만들지 않는다. generation, tidy idempotency, local binaries와 fresh full Go suite로 검증한다.
- contract/spec/rule/docs는 deterministic active-reference와 stale-architecture scan으로 검증한다.

### Symbol References

- 제거 build surface는 `build-agent`, `test-iop-agent-parity`, `test-iop-agent-logged-smoke-*`, `IOP_AGENT_SMOKE_*`, Go `proto/iop/agent.proto` entry다. call site는 `Makefile`의 `.PHONY`, variables, `build-local`, target bodies다.
- 제거 active governance id/path는 `iop.agent-cli-runtime`, `runtime/iop-agent-cli-runtime`, `apps/agent/`, agent domain routing과 `iop-agent` testing exception이다.
- `iop.agent-runtime`, `packages/go/agentruntime`, `packages/go/agentprovider/cli`, Node runtime bridge와 edge-node spec은 10이 boundary-disposition delta와 최소 provider primitive 처분으로 확정한다.

### Split Judgment

- 안정 계약은 “07이 삭제한 standalone tree와 IOP build·active governance·top-level docs가 일치하되 historical manifest digest는 변하지 않는다”이다.
- predecessor index 07 (`07+06_remove_go_surface`)은 exact PASS `complete.log`가 현재 missing이다.
- 09는 이 PASS 뒤 Flutter/agent-ui와 client 문서를 제거한다. 10은 transitional shared runtime/CLI provider 처분과 boundary delta를 소유한다.

### Scope Rationale

- 03 ownership manifest/receipt와 digest는 수정하지 않는다.
- Flutter code, `apps/client/README.md`, client domain rule, agent-ui는 09가 UI code와 같은 transaction으로 정리한다.
- `agent-contract/inner/agent-runtime.md`, edge-node spec, node/platform-common rules, `packages/go/agentruntime`, `packages/go/agentprovider/cli`, Node bridge는 10 범위다.
- effective final matrix/audit는 13, final receipt pointer와 최종 README/HANDOFF 축약은 14가 소유한다. 여기서는 stale architecture 제거와 transitional owner 안내까지만 한다.
- common rules/skills와 readability baseline/read-set은 수정하지 않는다.

### Final Routing

- `evaluation_mode=isolated-reassessment`, `finalizer=finalize-task-policy.sh`, `finalizer_mode=pair`.
- Build closures=`2,0,2,1,2`, grade=`G07`, base/route=`local-fit`, lane=`local`, filename=`PLAN-local-G07.md`.
- Review closures=`2,0,2,1,2`, grade=`G07`, route=`official-review`, lane=`cloud`, adapter=`codex`, model=`gpt-5.6-sol`, reasoning=`xhigh`, filename=`CODE_REVIEW-cloud-G07.md`.
- `large_indivisible_context=false`; positive loop-risk=`boundary_contract`, count=`1`; `review_rework_count=0`; `evidence_integrity_failure=false`; risk/recovery boundary=false; capability gap 없음.

## Dependencies and Execution Order

1. `07+06_remove_go_surface`가 active 또는 matching archive 위치에 정확히 하나의 PASS `complete.log`를 만들어야 한다.
2. 그 evidence 뒤 build/dependency, active governance, transitional docs 순으로 정리한다.
3. 08 PASS 뒤에만 09가 UI closure를 시작한다.

## Implementation Checklist

- [ ] Verify exactly one PASS `complete.log` for predecessor `07+06_remove_go_surface` before editing this child.
- [ ] Remove standalone build/proto/smoke entry points and reconcile `go.mod`/`go.sum`; verify generated proto, tidy idempotency, and Edge/IOP Node local builds.
- [ ] Deindex the standalone contract/spec, delete standalone active spec/domain rule, and align project/testing rules without changing the 03 manifest or preempting task 10's retained primitive disposition.
- [ ] Rewrite README/HANDOFF stale ownership and Node-to-Chronos bridge narrative to the D04 boundary, while leaving effective matrix/final receipt closure to tasks 13/14.
- [ ] Run fresh full Go tests, deterministic stale-reference/architecture scans, and diff checks.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

### [REFACTOR-1] Standalone build·proto·dependency entry 제거

**Problem**

`Makefile:1,23-30,38,53-58,112-158`이 삭제될 `apps/agent`, standalone smoke와 `proto/iop/agent.proto`를 build graph에 포함한다.

```make
# Makefile:38,53-55
build-local: build-edge build-node build-agent
build-agent:
	go build ... ./apps/agent/cmd/agent
```

**Solution**

`.PHONY`, `IOP_AGENT_SMOKE_*`, `build-local`, standalone build/test/smoke targets와 Go proto input을 함께 제거한다. `build-local`은 Edge와 IOP Node만 빌드한다. 07 삭제 결과에 맞춰 `go mod tidy`로 실제 orphan dependency만 제거한다.

```make
# after
build-local: build-edge build-node
proto:
	protoc ... proto/iop/runtime.proto proto/iop/node.proto proto/iop/control.proto proto/iop/job.proto
```

**Modified Files and Checklist**

- [ ] `Makefile` — standalone entry 제거와 `build-local` 축소.
- [ ] `go.mod` — tidy 결과의 orphan dependency만 반영.
- [ ] `go.sum` — tidy 결과와 동기화.

**Test Strategy**

새 test는 쓰지 않는다. target graph를 `make proto`, tidy idempotency, `make build-local`로 실행 검증한다.

**Verification**

- `make proto`
- `go mod tidy && test -z "$(go mod tidy -diff)"`
- `make build-local`

### [REFACTOR-2] Standalone active contract·spec·rule 제거

**Problem**

`agent-contract/index.md:28`, `agent-spec/index.md:36`, `agent-ops/rules/project/rules.md:5,14,19,62`와 testing/agent domain 문서가 IOP의 standalone host/workflow/workspace/client lifecycle ownership을 선언한다.

```text
# agent-contract/index.md:28
| iop.agent-cli-runtime | Standalone iop-agent host lifecycle ... |
```

**Solution**

contract를 active index에서 제거하고 원문에는 D04 `transfer-reference-only` banner를 추가해 14 전까지 migration reference로만 남긴다. standalone living spec과 agent domain rule은 삭제하고 project/testing rule에서 binary/workflow 예외를 제거한다. transitional `iop.agent-runtime`과 generic paths의 최종 처분은 10으로 넘긴다.

```text
# after
agent-contract/index.md: no iop.agent-cli-runtime row
agent-contract/inner/iop-agent-cli-runtime.md: unindexed transfer-reference-only
agent-spec/index.md: no runtime/iop-agent-cli-runtime row
```

**Modified Files and Checklist**

- [ ] `agent-contract/index.md` — standalone active row 제거.
- [ ] `agent-contract/inner/iop-agent-cli-runtime.md` — transfer-reference-only banner; historical body/digest 의미는 재작성하지 않음.
- [ ] `agent-spec/index.md` — standalone living spec row 제거.
- [ ] `agent-spec/runtime/iop-agent-cli-runtime.md` — active spec 삭제.
- [ ] `agent-ops/rules/project/rules.md` — standalone 소유/경로/실행 예외 제거.
- [ ] `agent-ops/rules/project/domain/agent/rules.md` — 삭제.
- [ ] `agent-ops/rules/project/domain/testing/rules.md` — standalone binary/smoke/task-loop 문구 제거; retained provider smoke는 10 전 임의 삭제하지 않음.

**Test Strategy**

새 test는 쓰지 않는다. active index와 project-rule scan으로 검증한다.

**Verification**

- `test -z "$(rg --sort path -n 'build-agent|test-iop-agent|IOP_AGENT_SMOKE|proto/iop/agent\.proto|iop\.agent-cli-runtime|runtime/iop-agent-cli-runtime|apps/agent/|domain/agent' Makefile agent-contract/index.md agent-spec/index.md agent-ops/rules/project README.md)"`

### [REFACTOR-3] README·HANDOFF를 D04 전환 경계로 정리

**Problem**

`README.md:5,140,202,258,271`은 CLI Agent/workspace/tool/remote terminal을 IOP 책임으로 설명하고, `HANDOFF.md:1,42-73,80-108,138-170,191-200`은 IOP Node가 Chronos를 연결·제어하는 gateway/provider 방향을 유지한다.

```text
# HANDOFF.md:55-59
Control Plane → Edge → 기존 Node outbound session
                 ↕ Node agent_bridge gateway ↕
                 동일한 Chronos daemon
```

**Solution**

README는 IOP를 external inference API와 model/provider/device execution·cancel·status·usage·lifecycle로 제한한다. HANDOFF는 Chronos Server + 독립 Chronos Node가 loop/agent/workspace/tool/terminal/PTY/remote host control을 소유하고, Chronos는 필요할 때 IOP external inference API의 일반 client일 뿐 IOP Node control/bridge가 없다고 정리한다. 03 original digest → 10 delta → 13 effective matrix → 14 final receipt 순서를 안내하되 완료를 선포하지 않는다.

```text
# after
Chronos Server/Chronos Node -> loop, agent, workspace/tool, terminal/PTY, remote control
Chronos -> optional ordinary client of IOP external inference API
IOP -> no Chronos bridge/API/proto/config/target/registry/control hook
```

**Modified Files and Checklist**

- [ ] `README.md` — current responsibility와 금지 경계를 D04에 맞춤.
- [ ] `HANDOFF.md` — stale gateway/provider narrative 제거, transitional evidence chain과 owner만 유지.

**Test Strategy**

문서-only 변경이다. exact stale phrase scan과 reviewer owner-matrix 확인으로 검증한다.

**Verification**

- `test -z "$(rg --sort path -n 'CLI Agent 실행 환경|shell/git/docker/code workspace|Node는 .*CLI Agent|Node는 .*도구 실행|CLI Automation runtime|Remote terminal bridge는 Edge/Node 운영 제어|Node Domain-Agent Gateway|Node agent_bridge gateway|agent_bridge provider framework|kind: chronos-agent|Node companion/connector|Node가 소유한 local gateway|Node gateway를 통한|Node External Agent Provider|Edge Managed Agent Routing' README.md HANDOFF.md agent-ops/rules/project)"`

## Modified Files Summary

| File | Item |
|------|------|
| `Makefile` | REFACTOR-1 |
| `go.mod` | REFACTOR-1 |
| `go.sum` | REFACTOR-1 |
| `agent-contract/index.md` | REFACTOR-2 |
| `agent-contract/inner/iop-agent-cli-runtime.md` | REFACTOR-2 |
| `agent-spec/index.md` | REFACTOR-2 |
| `agent-spec/runtime/iop-agent-cli-runtime.md` | REFACTOR-2 |
| `agent-ops/rules/project/rules.md` | REFACTOR-2 |
| `agent-ops/rules/project/domain/agent/rules.md` | REFACTOR-2 |
| `agent-ops/rules/project/domain/testing/rules.md` | REFACTOR-2 |
| `README.md` | REFACTOR-3 |
| `HANDOFF.md` | REFACTOR-3 |
| `agent-task/m-iop-agent-chronos-extraction-decoupling/08+07_cleanup_build_contract/CODE_REVIEW-cloud-G07.md` | REFACTOR-1, REFACTOR-2, REFACTOR-3 |

## Final Verification

1. `mapfile -t predecessor_logs < <({ test ! -f agent-task/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/complete.log || printf '%s\n' agent-task/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/complete.log; find agent-task/archive -path '*/m-iop-agent-chronos-extraction-decoupling/07+06_remove_go_surface/complete.log' -type f -print 2>/dev/null; } | sort -u); test "${#predecessor_logs[@]}" -eq 1; rg -q '^\| .* \| PASS \|' "${predecessor_logs[0]}"`
2. `go version && test "$(go env GOMOD)" = "/config/workspace/iop-s1/go.mod"`
3. `make proto`
4. `go mod tidy && test -z "$(go mod tidy -diff)"`
5. `make build-local`
6. `test -z "$(rg --sort path -n 'build-agent|test-iop-agent|IOP_AGENT_SMOKE|proto/iop/agent\.proto|iop\.agent-cli-runtime|runtime/iop-agent-cli-runtime|apps/agent/|domain/agent' Makefile agent-contract/index.md agent-spec/index.md agent-ops/rules/project README.md)"`
7. `test -z "$(rg --sort path -n 'CLI Agent 실행 환경|shell/git/docker/code workspace|Node는 .*CLI Agent|Node는 .*도구 실행|CLI Automation runtime|Remote terminal bridge는 Edge/Node 운영 제어|Node Domain-Agent Gateway|Node agent_bridge gateway|agent_bridge provider framework|kind: chronos-agent|Node companion/connector|Node가 소유한 local gateway|Node gateway를 통한|Node External Agent Provider|Edge Managed Agent Routing' README.md HANDOFF.md agent-ops/rules/project)"`
8. `go test -count=1 ./...`
9. `git diff --check`

`go test -count=1`은 fresh output이 필수다. 다른 명령도 current checkout에서 재실행한다. 03 manifest/receipt, 10 delta, 13 effective matrix, 14 final receipt는 이 task write claim에 없어야 한다.

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