# Task Complete - 01_internal_target_naming

## 완료 일시

2026-05-10

## 요약

내부 proto/runtime/store/console 계층의 `model` 식별자를 `target`(adapter execution target)으로 일괄 리네임. 외부 OpenAI-compatible API와 외부 CLI 인자 등 외부 경계는 `model` 유지. 1 loop(plan 0 / review 0)로 PASS.

## 루프 이력

| Plan | Review | Verdict |
|------|--------|---------|
| plan_cloud_G09_0.log | code_review_cloud_G09_0.log | PASS |

## 최종 리뷰 요약

- **Proto 계약**: `proto/iop/runtime.proto`의 `RunRequest`/`CancelRequest`/`NodeCommandRequest`/`NodeCommandResponse`와 `proto/iop/control.proto`의 `ScheduleRequest` 모두 `model` → `target`. field 번호 보존, `make proto`로 `proto/gen/iop/*.pb.go` 갱신.
- **Runtime 도메인**: `runtime.ExecutionSpec`/`RunRequest`/`CommandRequest`/`CommandResponse`의 `Model` → `Target`, `Capabilities.Models` → `Targets`. `SessionTerminator.TerminateSession(ctx, target, sessionID)` 시그니처 변경.
- **Router/Node**: router 매핑·zap 로그 키, node `OnRunRequest`/`OnCancel`/`OnCommandRequest` 호출부에서 `req.GetTarget()` 사용. `runHandle.model` → `target`.
- **Store**: `runs.model` 컬럼 → `target` (신규 schema 직접 적용 + legacy DB는 `ALTER TABLE … RENAME COLUMN`로 무손실 마이그레이션). `RunRecord.Model` → `Target`. 마이그레이션·재오픈 idempotency 테스트 추가 검증.
- **Adapters**: cli/ollama/vllm/mock 모두 `Capabilities.Targets` 사용, `spec.Target` 참조. cli adapter는 target=profile/agent 의미를 유지하면서 내부 도메인 명명만 변경.
- **Edge console**: `RunRequest.Target`/`CancelRequest.Target`/`NodeCommandRequest.Target`로 wire 메시지 구성. `EdgeConsoleConf.Model` legacy 폴백과 `console.model` → `console.agent` 호환 경로 보존.
- **테스트**: parser/router/store/node/cli/console 테스트 일괄 갱신. `go test ./...` 전체 PASS.
- **검증**: `gofmt -l` clean. `rg "GetModel\(\)|Model:" apps packages` 0건. 잔여 `model` 매치는 모두 의도적 예외(외부 API/CLI 경계, placeholder Job/Policy, store 마이그레이션 코드, 외부 출력 fixture/regex).

## 잔여 Nit

- `packages/config/config.go:108-119` — gofmt 정렬 보정에 따른 whitespace 변경(사전 존재하던 정렬 불일치를 부수 효과로 수정). 별도 fix 불필요.
