<!-- task=m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification plan=35 tag=REVIEW_API milestone-task=workspace-binding,claude-smoke -->

# Complete - m-iop-owned-single-request-agent-execution/25+23,24_claude_smoke_qualification

## 완료 일시

2026-08-08 23:28:08 KST

## 요약

36회 plan/review 루프 끝에 Claude CLI가 IOP의 Gemini -> ornith-fast -> Gemini 단일 요청 실행을 완료했고, 정확한 workspace 결과와 redacted S12 매니페스트를 검증하여 최종 PASS했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_*_0.log` ~ `plan_*_34.log` | `code_review_*_0.log` ~ `code_review_*_34.log` | FAIL / USER_REVIEW 후 재개 | 인증·dev 격리·Anthropic 호환·stage codec·도구 루프·증거 경계를 순차적으로 닫고 각 sole-live 실패를 무재시도 가드로 보존했다. |
| `plan_cloud_G10_35.log` | `code_review_cloud_G10_35.log` | PASS | Work 완료 자격과 Review mandatory repair를 서버 상태로 강제한 뒤 `sole-live-18` 전체 경로와 S12 증거가 통과했다. |

## 구현/정리 내용

- Anthropic marked single-request를 IOP 소유 Plan/Work/Review 실행기로 연결하고, Gemini -> ornith-fast -> Gemini stage binding과 workspace 도구 루프를 구현했다.
- Work는 성공 도구 결과 전 completion을 거부하고, tool-required 요청과 strict structured completion 요청을 분리한다.
- Review는 정확한 `not_found`를 모델에 전달하되 성공한 repair 전 pass/재검사를 거부하며, 반복·예산·오류·취소 경계를 fail-closed로 유지한다.
- Claude smoke harness는 SOPS에서 읽은 IOP API key를 프로세스 메모리에서만 사용하고, exact LF 결과·단일 ingress·stage/terminal/cleanup 관찰·runtime identity·redaction을 검증한다.

## 최종 검증

- `go test ./apps/edge/internal/openai -count=1` - PASS; local `8.554s`, isolated dev `8.633s`.
- focused `go test -race` - PASS; local `1.092s`, isolated dev `1.695s`.
- `go test ./apps/edge/... -count=1` - PASS locally and on isolated dev.
- `make build-edge` and `/usr/bin/make build-edge BUILD_DIR=build/s12 EDGE_TARGET=darwin-arm64` - PASS.
- `./scripts/e2e-single-request-claude.sh --self-test` - PASS locally and on isolated dev.
- provider-free preflight - PASS; ingress `0 -> 0`, tunnels `25 -> 25`, finalized guards 17, started guards 0, Claude processes 0.
- `sole-live-18` - PASS exactly once; ingress `0 -> 1`, tunnels `25 -> 30`, Plan/Work/Review success, Work write, Review read, cleanup, one `end_turn`, guard `sole-live-18.rc-0`.
- exact result - PASS; 42 bytes, one line, last byte `0a`, SHA-256 `a35f0e4ed7ffe237d87c5af56e896db839ddb1f12fcc6afbd18c75e63dd9f57c`.
- S12 manifest validation - PASS; SHA-256 `9ea7c4b2970e7e40dcb1c936746d2dbe779b09ed3da53e27c815ef79135dc2c6`, forbidden key/match counts 0.

## 잔여 Nit

- 없음

## 후속 작업

- 없음
