<!-- task=m-iop-agent-cli-runtime/22+16_local_control plan=1 tag=REVIEW_API -->

# Code Review Reference - REVIEW_API

> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> The task is NOT complete until every implementation-owned section below is filled in.
> Complete the `Implementation Checklist`; the final checklist item is mandatory before saving.
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
> If implementation is blocked, record the exact blocker, attempted commands/output, and resume condition only in implementation-owned evidence fields.
> Do not ask the user directly, present choices, call user-input tools, create control-plane stop files, or classify the next state.
> Finalization (`Code Review Result`, log rename, `complete.log`, archive moves, `Review-Only Checklist`) is review-agent-only, even after compaction/resume.
> Follow the ownership table at the bottom of this file for which sections you own.

## Overview

date=2026-07-30
task=m-iop-agent-cli-runtime/22+16_local_control, plan=1, tag=REVIEW_API

## Roadmap Targets

- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)
- Task ids:
  - `local-control`: daemon-owned same-user local proto-socket lifecycle, state, events, and control endpoints
- Completion mode: check-on-pass

## Archive Evidence Snapshot

- Prior plan: `agent-task/m-iop-agent-cli-runtime/22+16_local_control/plan_cloud_G10_0.log`
- Prior review: `agent-task/m-iop-agent-cli-runtime/22+16_local_control/code_review_cloud_G10_0.log`
- Verdict: `FAIL`; Required `1`, Suggested `0`, Nit `0`.
- Finding: `Ledger.BeginCommand` exposes an incomplete `"accepted"` response because the existing-record path does not check `durableCommand.Complete`; a blocking-controller reproducer returned final state `"project.start"` to the owner and provisional state `"accepted"` to the duplicate.
- Affected files: `apps/agent/internal/localcontrol/ledger.go`, `apps/agent/internal/localcontrol/service.go`, `apps/agent/internal/localcontrol/service_test.go`, and `apps/agent/internal/localcontrol/ledger_test.go`.
- Verification evidence: the repository package, race, vet, protobuf determinism, Darwin arm64 cross-build, shared-package, and whole-Go suites passed; the focused reviewer reproducer failed response equality and was removed after capture.
- Roadmap carryover: SDD scenario S11 and task `local-control` remain incomplete until durable command convergence is proven.

## For the Review Agent

> **[REVIEW AGENT ONLY]** The finalization steps below are review-agent only. Implementing agents must not execute this section.

Compare implementation of each item against source files and verify that output in `Verification Results` matches code.
Review completion means the following steps are finished:

1. Append verdict and `review_rework_count` / `evidence_integrity_failure` routing signals.
2. Archive `CODE_REVIEW-cloud-G08.md` → `code_review_cloud_G08_1.log` and `PLAN-cloud-G08.md` → `plan_cloud_G08_1.log`.
3. If PASS, write `complete.log` and move active task directory to `agent-task/archive/YYYY/MM/m-iop-agent-cli-runtime/22+16_local_control/`. If WARN/FAIL, fully write the next filesystem state required by the code-review skill.
4. If PASS and task group is `m-<milestone-slug>`, report completion event metadata. Roadmap state check and `update-roadmap` calls are runtime responsibilities.
5. Check applicable `Review-Only Checklist` items at the final `.log` location before reporting.

---

## Implementation Item Completion

| Item | Status |
|------|---------|
| REVIEW_API-1 Command completion | [ ] |
| REVIEW_API-2 Regression coverage | [ ] |
| REVIEW_API-3 S11 evidence | [ ] |

## Implementation Checklist

- [ ] Prevent incomplete durable command records from being returned as final results, and make concurrent/restarted identical requests converge on one stored completed response without a second effective mutation.
- [ ] Add deterministic blocking concurrency and accepted-but-unfinished restart regressions that assert complete response, event, cursor, and conflict behavior.
- [ ] Run fresh focused, race, contract, protobuf, Darwin cross-build, shared-package, and whole-Go verification on stable source.
- [ ] Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.

## Review-Only Checklist

> **[REVIEW AGENT ONLY]** This checklist is used only by the review agent.
> Implementing agents must not modify or check this section.

- [x] Append one verdict of `PASS`, `WARN`, or `FAIL` and verified `review_rework_count`, `evidence_integrity_failure` to `Code Review Result`.
- [x] Verify that verdict, `Dimension Assessment`, and Required/Suggested/Nit classifications match.
- [x] Archive active `CODE_REVIEW-*-G??.md` to `code_review_cloud_G08_1.log`.
- [x] Archive active `PLAN-*-G??.md` to `plan_cloud_G08_1.log`.
- [x] Verify that the Agent-Ops managed block in `.gitignore` unignores `agent-task/**/*.md` and `agent-task/**/*.log` and ignores `agent-roadmap/current.md`.
- [ ] If PASS, write `complete.log` based on `agent-ops/skills/common/code-review/templates/complete-log-template.md` and leave no active `.md` files.
- [ ] If PASS, move active task directory `agent-task/m-iop-agent-cli-runtime/22+16_local_control/` to `agent-task/archive/YYYY/MM/m-iop-agent-cli-runtime/22+16_local_control/` and update this checklist at the final archive path.
- [ ] If PASS and task group is `m-<milestone-slug>`, report completion event metadata for runtime, without modifying roadmap or directly calling `update-roadmap`.
- [ ] If PASS for split work, remove empty active parent `agent-task/m-iop-agent-cli-runtime/` or verify it was kept due to remaining siblings/files.
- [x] If WARN/FAIL, write the next filesystem state matching code-review verdict and do not write `complete.log`.

## Deviations from Plan

_Record any deviations from the plan and the rationale here._

## Key Design Decisions

_Record key design decisions here._

## Reviewer Checkpoints

- No matching incomplete command record is returned as a completed replay.
- Concurrent identical commands wait for and receive the same stored final response.
- Restart reconciliation of accepted-but-unfinished state uses the stable command ID and causes no second effective mutation.
- Different immutable arguments under one command ID return `command_id_conflict` with zero conflicting mutation.
- Exactly one completed event and coherent state revision/replay cursor are retained and broadcast.
- Fresh race, contract, protobuf determinism, Darwin arm64 cross-build, shared-package, and whole-Go evidence is present.

## Verification Results

Paste actual stdout/stderr under each command. Do not summarize reconstructed output. Record command substitutions or omissions in `Deviations from Plan`.

### REVIEW_API-1 Command completion

```bash
gofmt -d apps/agent/internal/localcontrol/ledger.go apps/agent/internal/localcontrol/service.go
go test -count=1 ./apps/agent/internal/localcontrol -run 'TestConcurrentIdenticalCommand|TestCommandIdempotency|TestCommandIDConflict'
```

```text
<fill actual output>
```

### REVIEW_API-2 Regression coverage

```bash
go test -count=1 ./apps/agent/internal/localcontrol -run 'TestConcurrentIdenticalCommand|TestAcceptedButIncomplete|TestCommandIdempotency|TestCommandIDConflict'
go test -count=1 -race ./apps/agent/internal/localcontrol ./packages/go/agentstate
```

```text
<fill actual output>
```

### REVIEW_API-3 S11 evidence

```bash
go test -count=1 ./apps/agent/internal/localcontrol
go vet ./apps/agent/internal/localcontrol ./packages/go/...
git diff --check
```

```text
<fill actual output>
```

### Final Verification

```bash
command -v go
go version
go env GOROOT
git status --short
gofmt -w apps/agent/internal/localcontrol/ledger.go apps/agent/internal/localcontrol/service.go apps/agent/internal/localcontrol/service_test.go apps/agent/internal/localcontrol/ledger_test.go
go test -count=1 ./apps/agent/internal/localcontrol -run 'TestConcurrentIdenticalCommand|TestAcceptedButIncomplete|TestCommandIdempotency|TestCommandIDConflict'
go test -count=1 ./apps/agent/internal/localcontrol
go test -count=1 -race ./apps/agent/internal/localcontrol ./packages/go/agentstate
go vet ./apps/agent/internal/localcontrol ./packages/go/...
make proto
GOOS=darwin GOARCH=arm64 go test -c -o /tmp/localcontrol-darwin.test ./apps/agent/internal/localcontrol
go test -count=1 ./packages/go/...
go test -count=1 ./...
rg -n --sort path 'S11|agent.proto|localcontrol|same OS user|SO_PEERCRED|LOCAL_PEERCRED|getpeereid' agent-contract/inner/iop-agent-cli-runtime.md apps/agent/internal/localcontrol proto/iop/agent.proto
git diff --check
git status --short
```

```text
<fill actual output>
```

---

> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section?**
> If anything is blank, go back and fill it in before saving this file.
> Leave review-agent-only sections unchanged.

## Section Ownership

| Section | Owner | Note |
|---------|-------|------|
| Header comment, Overview, Review Agent Instructions | Fixed at stub creation | Implementing agent must not modify or execute these (archive, complete.log, and task-directory archive move are review-agent only) |
| Roadmap Targets | Fixed at stub creation from plan when present | Implementing agent must not modify; code-review copies it into `complete.log` as `Roadmap Completion` only on PASS |
| Archive Evidence Snapshot | Fixed at stub creation from plan when present | Implementing agent uses it as default prior-loop context; read only the specific archive files cited there when more detail is required |
| Implementation Item Completion (item names) | Fixed at stub creation | Implementing agent checks `[ ]` → `[x]` only |
| Implementation Checklist (item text/order) | Fixed at stub creation from plan | Implementing agent checks `[ ]` → `[x]` only |
| Review-Only Checklist | Review agent only | Implementing agent must not modify or check this section |
| Deviations from Plan, Key Design Decisions | Implementing agent | Replace placeholder text with actual content |
| Reviewer Checkpoints | Fixed at stub creation | Pre-filled from plan |
| Verification Results (section headings + commands) | Fixed at stub creation | Implementing agent fills in command output only; command changes require a `Deviations from Plan` entry |
| Code Review Result | Review agent appends | Not included in stub |

## Code Review Result

- Overall Verdict: FAIL
- Dimension Assessment:
  - Correctness: Fail — matching incomplete command records are still returned as terminal responses.
  - Completeness: Fail — none of the planned implementation or evidence items was completed.
  - Test Coverage: Fail — the required blocking-concurrency and accepted-but-incomplete restart regressions are absent.
  - API Contract: Fail — identical concurrent or restarted `command_id` requests still do not provably converge on one completed result.
  - Spec Conformance: Fail — SDD scenario S11 durable command convergence remains unproven.
  - Code Quality: Pass
  - Implementation Deviation: Fail — the follow-up source, tests, and review artifact remain unchanged from the failed baseline.
  - Verification Trust: Fail — every required output block is still a placeholder, and the focused command passes without running an accepted-but-incomplete regression.
- Findings:
  - Required — `apps/agent/internal/localcontrol/ledger.go:141`, `apps/agent/internal/localcontrol/service.go:247`, `apps/agent/internal/localcontrol/service_test.go:315`: `BeginCommand` still decodes and returns a matching durable response without checking `durableCommand.Complete`, and `handleProjectMutation` still returns that provisional `"accepted"` response immediately. The only concurrent test still asserts response kind and one host call; `go test -list` confirms that no `TestAcceptedButIncomplete...` regression exists. Separate incomplete ownership/waiting from completed replay, make concurrent and restart paths converge on the stored final response without a second effective mutation, and add deterministic response/event/cursor/conflict assertions.
  - Required — `agent-task/m-iop-agent-cli-runtime/22+16_local_control/CODE_REVIEW-cloud-G08.md:52`: all implementation items and checkboxes remain unchecked, implementation notes remain placeholders, and every verification output block remains `<fill actual output>`. Complete the implementation-owned sections with fresh exact output from the required focused, race, contract, protobuf, Darwin cross-build, shared-package, and whole-Go commands on stable source.
- Routing Signals:
  - `review_rework_count=2`
  - `evidence_integrity_failure=true`
- Next Step: Invoke the plan skill for an isolated freshly routed follow-up that implements durable command convergence, adds the missing regressions, and captures complete S11 verification evidence.
