<!-- task=m-iop-agent-chronos-extraction-decoupling/04+02,03_retain_node plan=0 tag=REFACTOR -->

# Node generic execution/control boundary 중립화

## For the Implementing Agent

`CODE_REVIEW-cloud-G08.md`의 implementation-owned 섹션 작성은 필수다. 두 predecessor의 exact PASS completion을 확인한 뒤 package move와 모든 call site를 한 transaction으로 적용하고 fresh verification output을 기록한다. active pair를 보존하고 review 준비 완료만 보고하며, finalization은 code-review agent가 수행한다. 차단 시 사용자 질의나 상태 분류 없이 evidence 필드에 정확한 blocker와 재개 조건을 남긴다.

## Background

decouple 직후 Node는 기능상 generic인 `agentruntime`과 CLI provider를 임시 old path로 사용한다. S04와 D02를 닫으려면 이 code를 non-Agent package로 이동하고 Node가 실행·취소·조회·session·stream·control command만 처리하며 Chronos workflow/state/selection/retry/review/integration 의미를 해석하지 않음을 계약과 회귀 test로 증명해야 한다.

## Roadmap Targets

- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-chronos-extraction-decoupling.md)
- Task ids:
  - `retain-node`: non-Agent generic execution/provider package와 Edge-Node control boundary 유지
- Completion mode: check-on-pass

## Analysis

### Files Read

- `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-contract/index.md`
- `agent-contract/inner/agent-runtime.md`
- `agent-spec/runtime/edge-node-execution.md`
- `agent-ops/rules/project/domain/node/rules.md`
- `agent-ops/rules/project/domain/platform-common/rules.md`
- `agent-test/local/node-smoke.md`
- `agent-test/local/platform-common-smoke.md`
- `packages/go/agentruntime/types.go`
- `packages/go/agentruntime/session.go`
- `packages/go/agentruntime/registry.go`
- `packages/go/agentruntime/failure.go`
- `packages/go/agentruntime/status.go`
- `packages/go/agentprovider/cli/cli.go`
- `apps/node/internal/node/runtime_bridge.go`
- `apps/node/internal/bootstrap/module.go`
- `apps/node/internal/adapters/factory.go`
- `apps/node/internal/adapters/config_set.go`

### SDD Criteria

- SDD 상태 `[승인됨]`, 잠금 `해제`; target S04 / Task `retain-node`.
- Evidence Map: generic Node execution/control focused tests와 contract regression.
- D02 prohibits Chronos workflow, durable task state, target selection policy, retry/review/integration meaning in Node, while preserving provider execute/cancel/query/session/stream/control wire.
- 따라서 package path, package comments/error prefix, internal `AgentUsageStatus` symbol, contract/spec/rules를 neutral execution vocabulary로 바꾸되 external Edge-Node protobuf wire values는 compatibility 기준으로 유지한다.

### Verification Context

- Handoff 없음. predecessors `02+01_transfer_bundle`과 `03+02_decouple` completion은 현재 missing이다.
- Local rules state usable. node/platform-common profiles는 current checkout, Go module, no external service/credential의 focused tests를 제공한다.
- Commands: fresh package/Node tests, race tests for registry/session/concurrency paths, full `go test -count=1 ./...`, `go vet`, forbidden semantic scan.
- External host/runtime은 필요 없다. Edge wire는 in-process fixtures로 검증한다.
- Confidence: high. import call sites는 exact `rg -l`로 닫히고 existing tests가 lifecycle/concurrency/tunnel/command behavior를 다룬다.

### Test Coverage Gaps

- Package move 자체는 existing tests를 새 path로 이동해 커버한다.
- `AgentUsageStatus -> UsageStatus` call sites와 error prefix를 update한다.
- Node가 workflow semantics를 해석하지 않는다는 부정 조건은 package/import/symbol scan과 contract review가 필요하다.
- race test는 registry/session/Node concurrency의 기존 tests에 적용한다.

### Symbol References

- Rename package `agentruntime` -> `execution`; path `packages/go/agentruntime` -> `packages/go/execution`.
- Rename internal symbol `AgentUsageStatus` -> `UsageStatus`; wire `iop.AgentUsageStatus`는 Edge-Node runtime proto compatibility로 유지.
- Move path `packages/go/agentprovider/cli` -> `packages/go/provider/cli`; package identifier `cli`와 subpackage `status`는 유지.
- All current non-standalone import call sites are enumerated in Modified Files Summary under REFACTOR-3.

### Split Judgment

- Stable contract: all generic runtime/provider code and consumers compile only from neutral paths while wire behavior remains unchanged.
- Predecessors `02`, `03`: exact active/archived `complete.log` both missing. Both must PASS before implementation.
- PASS evidence: old path absent, all import/symbol scans clean, execution/provider/Node race and focused regressions PASS, neutral contract/spec active.
- Handoff gate depends on this task and decouple.

### Scope Rationale

- Edge-Node protobuf field/message names and `agent.status`/domain-agent operational commands are preserved unless they encode forbidden Chronos workflow semantics; changing wire compatibility is out of scope.
- Chronos connector, agent bridge, scheduling, durable task state and selection policy are not implemented.
- No source is copied to Chronos repository.

### Final Routing

- `evaluation_mode=first-pass`, finalizer=`finalize-task-policy.sh`, mode=`pair`.
- Build closures 모두 true. Scores=`2,2,1,1,2`, grade=`G08`, base/route=`local-fit`, lane=`local`.
- Review scores=`2,2,1,1,2`, route=`official-review`, lane=`cloud`, grade=`G08`.
- `large_indivisible_context=false`; loop risks=`concurrent_consistency, boundary_contract` (2); `review_rework_count=0`; `evidence_integrity_failure=false`; capability gap 없음.
- Canonical files: `PLAN-local-G08.md`, `CODE_REVIEW-cloud-G08.md`.

## Dependencies and Execution Order

1. `02+01_transfer_bundle` and `03+02_decouple` must each have exactly one matching PASS `complete.log`; both are currently missing.
2. Move generic packages and update all consumers atomically.
3. Update contract/spec/rules after code paths compile.
4. Run focused/race/full regressions and semantic audit.

## Implementation Checklist

- [ ] Refuse to start until predecessors `02+01_transfer_bundle` and `03+02_decouple` each have an exact PASS `complete.log`.
- [ ] Move `agentruntime` to `packages/go/execution`, neutralize package docs/error prefixes and `AgentUsageStatus`, and preserve execution/session/registry behavior with moved tests.
- [ ] Move CLI provider implementation to `packages/go/provider/cli` and update its internal status/test imports without introducing workflow ownership.
- [ ] Update every Node/provider-smoke consumer and reconcile contract/spec references through `update-contract`/`update-spec`; update domain/readability references to neutral paths and terminology while preserving Edge-Node wire compatibility.
- [ ] Run fresh focused, race, full-build, contract, and forbidden-semantic audits and record exact output.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

### [REFACTOR-1] Host-neutral execution package 이동

**Problem**

`packages/go/agentruntime/types.go:1-3`와 error prefixes가 standalone agent host를 이름과 문서에 포함해 D02의 neutral boundary를 흐린다.

```go
// packages/go/agentruntime/types.go:1-3
// Package agentruntime ...
package agentruntime
```

**Solution**

모든 파일을 `packages/go/execution`으로 이동하고 package declaration/comment/error prefix를 `execution`으로 바꾼다. public behavior와 type fields는 유지하고 internal `AgentUsageStatus`만 `UsageStatus`로 rename한다. moved tests가 동일 semantics를 검증한다.

```go
// after: packages/go/execution/types.go:1
+// Package execution defines host-neutral provider execution contracts.
+package execution
```

**Modified Files and Checklist**

- [ ] Move every REFACTOR-1 old/new path in Modified Files Summary.
- [ ] Update test package/import and all `AgentUsageStatus` internal references.

**Test Strategy**

- Existing conformance, emitter, failure, registry, session tests를 moved path에서 fresh/race 실행한다.

**Verification**

- `go test -count=1 ./packages/go/execution`
- `go test -race -count=1 ./packages/go/execution`
- `test ! -e packages/go/agentruntime`

### [REFACTOR-2] Generic CLI provider path 이동

**Problem**

CLI execution adapter는 Node가 계속 사용하지만 `agentprovider/cli` path가 이전 workflow ownership과 결합돼 보인다.

```go
// packages/go/agentprovider/cli/cli.go:1-4
// Package cli provides the shared Agent Runtime provider ...
```

**Solution**

전체 tree를 `packages/go/provider/cli`로 이동하고 import/comment만 generic provider execution vocabulary로 바꾼다. CLI mode/session/output/status behavior와 package name `cli`는 유지한다.

```go
// after: packages/go/provider/cli/cli.go:1
+// Package cli provides the shared CLI execution provider.
```

**Modified Files and Checklist**

- [ ] Move every REFACTOR-2 old/new path in Modified Files Summary.
- [ ] Preserve blackbox/session/status fixtures and platform behavior.

**Test Strategy**

- all moved CLI/status tests fresh 실행; external provider credentials는 사용하지 않는다.

**Verification**

- `go test -count=1 ./packages/go/provider/cli/...`
- `go test -race -count=1 ./packages/go/provider/cli/...`
- `test ! -e packages/go/agentprovider`

### [REFACTOR-3] Node consumers와 living contract/spec 중립화

**Problem**

Node/router/adapters/bootstrap와 active contract/spec/rules가 old paths와 Common Agent Runtime 명칭을 import/source-of-truth로 사용한다.

```go
// apps/node/internal/node/runtime_bridge.go:3-5
+runtime "iop/packages/go/agentruntime"
```

**Solution**

모든 exact consumer import를 `iop/packages/go/execution` 또는 `iop/packages/go/provider/cli`로 바꾼다. `runtime` alias는 generic local readability를 위해 유지할 수 있다. `agent-runtime.md`는 `execution-runtime.md`로 이동해 Node execution/control contract만 남기고 index/spec/domain pointers를 갱신한다. wire `iop.AgentUsageStatus` 변환은 보존한다.

```go
// after: apps/node/internal/node/runtime_bridge.go
+runtime "iop/packages/go/execution"
```

**Modified Files and Checklist**

- [ ] Update every REFACTOR-3 path in Modified Files Summary.
- [ ] Ensure active contract/spec indexes contain only the neutral runtime path.
- [ ] Do not add Chronos import, workflow state, retry, review, or integration fields.

**Test Strategy**

- Node adapters/router/handler/bootstrap suites and provider smoke compile/test.
- Edge-Node wire DTO values are asserted unchanged by existing runtime bridge/command/tunnel tests.

**Verification**

- `go test -count=1 ./apps/node/... ./cmd/iop-provider-smoke`
- `go test -race -count=1 ./apps/node/internal/node ./apps/node/internal/router ./apps/node/internal/adapters/...`
- `go vet ./packages/go/execution ./packages/go/provider/cli/... ./apps/node/...`

### [REFACTOR-4] Neutral-boundary semantic audit

**Problem**

컴파일 성공만으로 Node에 hidden task/review/selection semantics가 없는지 증명할 수 없다.

```text
# SDD.md:79,89
Node must not interpret Chronos work/state semantics.
```

**Solution**

old path/import, forbidden workflow vocabulary, Chronos application import를 deterministic scan하고 allowed protobuf/domain-agent terms는 exact rationale와 함께 audit log에 기록한다.

```text
# after: node-boundary-audit.log
old_agent_paths=0
chronos_imports=0
forbidden_workflow_symbols=0
wire_compatibility_exceptions=<exact list>
```

**Modified Files and Checklist**

- [ ] `agent-task/m-iop-agent-chronos-extraction-decoupling/04+02,03_retain_node/node-boundary-audit.log` — exact commands/output and allowed wire exceptions.
- [ ] `agent-task/m-iop-agent-chronos-extraction-decoupling/04+02,03_retain_node/CODE_REVIEW-cloud-G08.md` — actual evidence.

**Test Strategy**

- fresh full Go suite and deterministic semantic scans; cache 불허.

**Verification**

- `test -z "$(rg --sort path -n 'packages/go/agentruntime|packages/go/agentprovider' apps packages cmd agent-contract agent-spec agent-ops/rules/project README.md)"`
- `test -z "$(rg --sort path -n 'agenttask|SelectionPolicy|review_rework|integration queue|Plan/Review|Milestone|Roadmap lifecycle|git\.toki-labs\.com/toki/chronos' apps/node packages/go/execution packages/go/provider)"`
- `go test -count=1 ./...`

## Modified Files Summary

| File | Item |
|------|------|
| `packages/go/agentprovider/cli/antigravity_print.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/antigravity_print_blackbox_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/cli.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/cli_emitters_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/cli_session_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/cli_test_support_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/cli_workspace_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_app_server.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_app_server_events_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_app_server_process.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_app_server_session_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_exec.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/codex_exec_blackbox_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/command.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/emitter_profile_json.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/emitter_stream_json.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/emitters.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/internal/testutil/testutil.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/lifecycle_blackbox_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/oneshot.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/oneshot_blackbox_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/opencode_sse.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/opencode_sse_blackbox_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/opencode_sse_events.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/opencode_sse_internal_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_completion_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_output_filter.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_output_filter_claude.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_output_filter_claude_helpers.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_output_filter_terminal.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_output_filter_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_process.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_process_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_terminal_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/persistent_test_support_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/profile.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/antigravity.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/antigravity_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/claude.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/claude_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/codex.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/codex_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/parser.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/parser_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/quota.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/quota_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/screen.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/status.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/status_test.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/status/tail_buffer.go` | REFACTOR-2 |
| `packages/go/agentprovider/cli/workspace.go` | REFACTOR-2 |
| `packages/go/agentruntime/conformance_test.go` | REFACTOR-1 |
| `packages/go/agentruntime/doc.go` | REFACTOR-1 |
| `packages/go/agentruntime/emitter.go` | REFACTOR-1 |
| `packages/go/agentruntime/emitter_test.go` | REFACTOR-1 |
| `packages/go/agentruntime/failure.go` | REFACTOR-1 |
| `packages/go/agentruntime/failure_test.go` | REFACTOR-1 |
| `packages/go/agentruntime/registry.go` | REFACTOR-1 |
| `packages/go/agentruntime/registry_test.go` | REFACTOR-1 |
| `packages/go/agentruntime/session.go` | REFACTOR-1 |
| `packages/go/agentruntime/session_test.go` | REFACTOR-1 |
| `packages/go/agentruntime/status.go` | REFACTOR-1 |
| `packages/go/agentruntime/types.go` | REFACTOR-1 |
| `packages/go/provider/cli/antigravity_print.go` | REFACTOR-2 |
| `packages/go/provider/cli/antigravity_print_blackbox_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/cli.go` | REFACTOR-2 |
| `packages/go/provider/cli/cli_emitters_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/cli_session_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/cli_test_support_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/cli_workspace_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_app_server.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_app_server_events_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_app_server_process.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_app_server_session_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_exec.go` | REFACTOR-2 |
| `packages/go/provider/cli/codex_exec_blackbox_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/command.go` | REFACTOR-2 |
| `packages/go/provider/cli/emitter_profile_json.go` | REFACTOR-2 |
| `packages/go/provider/cli/emitter_stream_json.go` | REFACTOR-2 |
| `packages/go/provider/cli/emitters.go` | REFACTOR-2 |
| `packages/go/provider/cli/internal/testutil/testutil.go` | REFACTOR-2 |
| `packages/go/provider/cli/lifecycle_blackbox_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/oneshot.go` | REFACTOR-2 |
| `packages/go/provider/cli/oneshot_blackbox_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/opencode_sse.go` | REFACTOR-2 |
| `packages/go/provider/cli/opencode_sse_blackbox_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/opencode_sse_events.go` | REFACTOR-2 |
| `packages/go/provider/cli/opencode_sse_internal_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_completion_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_output_filter.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_output_filter_claude.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_output_filter_claude_helpers.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_output_filter_terminal.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_output_filter_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_process.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_process_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_terminal_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/persistent_test_support_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/profile.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/antigravity.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/antigravity_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/claude.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/claude_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/codex.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/codex_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/parser.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/parser_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/quota.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/quota_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/screen.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/status.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/status_test.go` | REFACTOR-2 |
| `packages/go/provider/cli/status/tail_buffer.go` | REFACTOR-2 |
| `packages/go/provider/cli/workspace.go` | REFACTOR-2 |
| `packages/go/execution/conformance_test.go` | REFACTOR-1 |
| `packages/go/execution/doc.go` | REFACTOR-1 |
| `packages/go/execution/emitter.go` | REFACTOR-1 |
| `packages/go/execution/emitter_test.go` | REFACTOR-1 |
| `packages/go/execution/failure.go` | REFACTOR-1 |
| `packages/go/execution/failure_test.go` | REFACTOR-1 |
| `packages/go/execution/registry.go` | REFACTOR-1 |
| `packages/go/execution/registry_test.go` | REFACTOR-1 |
| `packages/go/execution/session.go` | REFACTOR-1 |
| `packages/go/execution/session_test.go` | REFACTOR-1 |
| `packages/go/execution/status.go` | REFACTOR-1 |
| `packages/go/execution/types.go` | REFACTOR-1 |
| `apps/node/cmd/node/quota_probe.go` | REFACTOR-3 |
| `apps/node/cmd/node/quota_probe_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/adapters_blackbox_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/config_set.go` | REFACTOR-3 |
| `apps/node/internal/adapters/factory.go` | REFACTOR-3 |
| `apps/node/internal/adapters/mock/mock.go` | REFACTOR-3 |
| `apps/node/internal/adapters/ollama/chat.go` | REFACTOR-3 |
| `apps/node/internal/adapters/ollama/command.go` | REFACTOR-3 |
| `apps/node/internal/adapters/ollama/ollama.go` | REFACTOR-3 |
| `apps/node/internal/adapters/ollama/ollama_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/ollama/provider.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/capabilities_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/execute.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/execute_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/openai_compat_test_support_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/provider.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/provider_tunnel.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/provider_tunnel_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/request.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/stream.go` | REFACTOR-3 |
| `apps/node/internal/adapters/openai_compat/thinking_policy_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/provider.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/provider_tunnel.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/request.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/stream.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/vllm_test.go` | REFACTOR-3 |
| `apps/node/internal/adapters/vllm/vllm_tunnel_test.go` | REFACTOR-3 |
| `apps/node/internal/bootstrap/module.go` | REFACTOR-3 |
| `apps/node/internal/node/cancel_handler.go` | REFACTOR-3 |
| `apps/node/internal/node/command_handler.go` | REFACTOR-3 |
| `apps/node/internal/node/command_test.go` | REFACTOR-3 |
| `apps/node/internal/node/concurrency_gate_test.go` | REFACTOR-3 |
| `apps/node/internal/node/gate_refresh_test.go` | REFACTOR-3 |
| `apps/node/internal/node/node.go` | REFACTOR-3 |
| `apps/node/internal/node/node_concurrency_integration_test.go` | REFACTOR-3 |
| `apps/node/internal/node/node_test_support_test.go` | REFACTOR-3 |
| `apps/node/internal/node/provider_tunnel_test.go` | REFACTOR-3 |
| `apps/node/internal/node/registry_refresh_test.go` | REFACTOR-3 |
| `apps/node/internal/node/run_cancel_test.go` | REFACTOR-3 |
| `apps/node/internal/node/run_handler.go` | REFACTOR-3 |
| `apps/node/internal/node/runtime_bridge.go` | REFACTOR-3 |
| `apps/node/internal/node/runtime_bridge_test.go` | REFACTOR-3 |
| `apps/node/internal/node/runtime_sink.go` | REFACTOR-3 |
| `apps/node/internal/node/sink_test.go` | REFACTOR-3 |
| `apps/node/internal/node/tunnel_handler.go` | REFACTOR-3 |
| `apps/node/internal/router/router.go` | REFACTOR-3 |
| `apps/node/internal/router/router_test.go` | REFACTOR-3 |
| `cmd/iop-provider-smoke/main.go` | REFACTOR-3 |
| `README.md` | REFACTOR-3 |
| `agent-contract/index.md` | REFACTOR-3 |
| `agent-contract/inner/agent-runtime.md` | REFACTOR-3 |
| `agent-contract/inner/execution-runtime.md` | REFACTOR-3 |
| `agent-spec/index.md` | REFACTOR-3 |
| `agent-spec/runtime/edge-node-execution.md` | REFACTOR-3 |
| `agent-ops/rules/project/rules.md` | REFACTOR-3 |
| `agent-ops/rules/project/domain/node/rules.md` | REFACTOR-3 |
| `agent-ops/rules/project/domain/platform-common/rules.md` | REFACTOR-3 |
| `scripts/readability_baseline.json` | REFACTOR-3 |
| `scripts/readability_read_sets.json` | REFACTOR-3 |
| `agent-task/m-iop-agent-chronos-extraction-decoupling/04+02,03_retain_node/node-boundary-audit.log` | REFACTOR-4 |
| `agent-task/m-iop-agent-chronos-extraction-decoupling/04+02,03_retain_node/CODE_REVIEW-cloud-G08.md` | REFACTOR-4 |

## Final Verification

1. Confirm exact PASS `complete.log` for predecessors `02+01_transfer_bundle` and `03+02_decouple`.
2. `go test -count=1 ./packages/go/execution`
3. `go test -race -count=1 ./packages/go/execution`
4. `go test -count=1 ./packages/go/provider/cli/...`
5. `go test -race -count=1 ./packages/go/provider/cli/...`
6. `go test -count=1 ./apps/node/... ./cmd/iop-provider-smoke`
7. `go test -race -count=1 ./apps/node/internal/node ./apps/node/internal/router ./apps/node/internal/adapters/...`
8. `go vet ./packages/go/execution ./packages/go/provider/cli/... ./apps/node/...`
9. `test ! -e packages/go/agentruntime && test ! -e packages/go/agentprovider`
10. `test -z "$(rg --sort path -n 'packages/go/agentruntime|packages/go/agentprovider' apps packages cmd agent-contract agent-spec agent-ops/rules/project README.md)"`
11. `test -z "$(rg --sort path -n 'agenttask|SelectionPolicy|review_rework|integration queue|Plan/Review|Milestone|Roadmap lifecycle|git\.toki-labs\.com/toki/chronos' apps/node packages/go/execution packages/go/provider)"`
12. `go test -count=1 ./...`
13. `git diff --check`

All Go tests are fresh; cache is not acceptable.

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