# Complete - m-iop-agent-run-bridge/01_iop_invocation_contract

## 완료 일시

2026-06-16

## 요약

IOP agent_run invocation/result worker contract를 2회 리뷰 루프로 완료했다. 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G05_0.log` | `code_review_local_G05_0.log` | FAIL | `PickQueuedOperation`이 이미 running으로 전환한 operation을 runner가 다시 `StartOperation`하는 Required 이슈로 follow-up 생성 |
| `plan_local_G06_1.log` | `code_review_local_G06_1.log` | PASS | 중복 `StartOperation` 호출 제거와 stateful fake test 보강 확인 |

## 구현/정리 내용

- worker에 `agent_run` input/result adapter 경계와 result 기반 terminal state/event 기록을 추가했다.
- 기존 `NewRunner` 시그니처를 유지하고 `NewRunnerWithDependencies`로 테스트/후속 wiring 주입 경로를 열었다.
- `PickQueuedOperation`이 이미 `running`으로 만든 operation을 다시 시작하지 않도록 runner state transition 경계를 정리했다.
- worker unit test fake를 실제 operation transition rule에 맞게 강화하고 success/failure path에서 backend invoke, terminal state, operation events, sanitized failure message를 검증했다.

## 최종 검증

- `cd services/core && go test -count=1 ./internal/worker ./internal/storage ./internal/core` - PASS; worker/storage/core package 모두 `ok`.
- `cd services/core && go test ./...` - PASS; core module 전체 Go package 통과.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/agent-shell-iop-execution/milestones/iop-agent-run-bridge.md`
- Completed task ids:
  - `invoke`: PASS; evidence=`agent-task/archive/2026/06/m-iop-agent-run-bridge/01_iop_invocation_contract/plan_local_G06_1.log`, `agent-task/archive/2026/06/m-iop-agent-run-bridge/01_iop_invocation_contract/code_review_local_G06_1.log`; verification=`cd services/core && go test -count=1 ./internal/worker ./internal/storage ./internal/core`, `cd services/core && go test ./...`
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
