<!-- task=m-model-group-long-context-admission/05+02_dev_runtime_policy plan=0 tag=DEV_RUNTIME_POLICY -->

# Code Review Reference - DEV_RUNTIME_POLICY

> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is mandatory.** Record static and live policy evidence. External host blockers are verification blockers, not user-review requests unless a selected Milestone lock decision is unresolved.

## 개요

date=2026-07-05
task=m-model-group-long-context-admission/05+02_dev_runtime_policy, plan=0, tag=DEV_RUNTIME_POLICY

## Roadmap Targets

- Milestone: `agent-roadmap/phase/operational-observability-provider-management/milestones/model-group-long-context-admission.md`
- Task ids:
  - `dev-runtime-policy`: GX10, OneXPlayer, mac-mlx-vllm context window/long capacity/runtime KV 설정을 inventory와 config에 맞춤
- Completion mode: check-on-pass

## 이 파일을 읽는 리뷰 에이전트에게

> **[REVIEW AGENT ONLY]** 종결 절차는 코드리뷰 에이전트 전용이다.

## 구현 항목별 완료 여부

| 항목 | 완료 여부 |
|------|---------|
| [DEV_RUNTIME_POLICY-1] Dev provider policy alignment | [x] |

## 구현 체크리스트

- [x] `configs/edge.yaml` dev provider entries에 `context_window_tokens=262144`, provider `total_context_tokens`, `long_context_capacity`를 SDD 기준으로 맞춘다.
- [x] `agent-test/dev/inventory.yaml`에 GX10, OneXPlayer, mac-mlx-vllm의 runtime context/KV policy와 long capacity를 기록한다. 검증: OneXPlayer는 `ctx_size=524288`, `long_context_capacity=2`, `-np 3`이고 `786432`이 없다.
- [x] `agent-test/dev/edge-smoke.md`와 `agent-test/dev/node-smoke.md`의 runtime baseline이 config/inventory와 같은 값을 말하도록 갱신한다.
- [x] local config check와 deterministic `rg --sort path` evidence를 실행한다.
- [~] 가능하면 dev live status/load evidence를 review stub에 붙이고, 불가능하면 blocker와 재개 조건을 검증 결과에 기록한다. → live evidence는 blocker(외부 dev host 접근 불가). 아래 `검증 결과 > 라이브 evidence blocker` 참조.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 코드리뷰 전용 체크리스트

- [x] 판정을 append한다.
- [x] active review/plan을 `code_review_cloud_G07_0.log`, `plan_cloud_G07_0.log`로 아카이브한다.
- [ ] PASS이면 `complete.log` 작성 후 archive로 이동한다.
- [x] WARN/FAIL이면 다음 active plan/review 또는 `USER_REVIEW.md`를 작성한다.

## 계획 대비 변경 사항

- `configs/edge.yaml` mac-mlx-vllm provider는 02+01 완료 시점에 예시값 `total_context_tokens=524288`, `long_context_capacity=2`로 들어와 있었다. 이는 mac runtime의 실제 KV budget(`max_kv_size=262144`, `max_request_tokens=262144`)과 어긋나는 overclaim이라, plan [DEV_RUNTIME_POLICY-1] 해결 방법과 SDD 표준선(`total_context_tokens >= context_window_tokens * long_context_capacity`)에 맞춰 `262144` / `1`로 정정했다. normal capacity(`2`)와 long slot 수를 혼동하지 않는다는 리뷰 체크포인트를 그대로 반영한 것이다.
- 786432 금지 문구를 문서/inventory에 넣을 때 리터럴 `786432` 문자열을 쓰면 plan의 `! rg 786432` guard가 스스로 실패하므로, "`ctx_size`를 `524288` 초과로 키우지 않는다" / "Do NOT raise ctx_size above 524288"로 표현했다. 의미는 동일하고 guard는 clean하게 유지된다.
- gx10-vllm / onexplayer-lemonade를 `configs/edge.yaml` example의 active provider로 추가하지 않았다. `configs/edge.yaml`은 tracked 스키마 예시이고 dev canonical config는 `build/dev-runtime/edge.yaml`(untracked)이므로, 3-provider dev pool 전체 정책은 `agent-test/dev/inventory.yaml`과 smoke 문서에 기록했다. plan의 최종 grep도 두 파일 OR로 검사하므로 요구를 충족한다.
- plan의 optional 항목(`platform-common-smoke.md`에 공통 long policy reference)을 채택해, config 계약을 바꾼 만큼 budget 검증 기준을 필수 검증에 한 줄 추가했다.

## 주요 설계 결정

- Provider long-context 정책값은 "관측된 runtime KV/context budget"을 1차 근거로 삼는다. GX10(`max_model_len=262144`) / mac(`max_kv_size=262144`)은 262144만큼만 확보되므로 conservative `long_context_capacity=1`, `total_context_tokens=262144`. OneXPlayer는 SDD D04로 `ctx_size=524288`(2 window분), `-np 3`, `long_context_capacity=2` 고정.
- inventory에서 `total_context_tokens` / `long_context_capacity`는 config `nodes[].providers[]` 스키마와 1:1 매핑되도록 provider 정의 레벨(`capacity`/`priority` 옆)에 넣었다. 관측 스냅샷(`latest_provider_snapshot`)에는 넣지 않아 정책과 관측을 분리했다.
- edge-smoke / node-smoke는 provider별 runtime baseline 줄에 long-context admission baseline 한 줄을 덧붙여, config·inventory·문서가 같은 값을 말하도록 맞췄다.

## 사용자 리뷰 요청

_기본값은 `없음`이다. 구현 중 새 결정이 필요해 보여도 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 이 섹션은 선택된 Milestone `구현 잠금 > 결정 필요` 항목이 실구현을 차단할 때만 채운다. 외부 환경/secret/서비스 준비, 검증 증거 공백, 반복 실패, 일반 범위 조정은 사용자 리뷰 요청이 아니며 `검증 결과`, `계획 대비 변경 사항`, 또는 code-review의 일반 follow-up plan으로 처리한다._

- 상태: 없음
- 사유 유형: 없음
- 연결 대상: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음

## 리뷰어를 위한 체크포인트

- OneXPlayer가 `ctx_size=524288`, `long_context_capacity=2`, `-np 3`을 유지하는지 확인한다.
- `786432`이 dev policy/config에 들어오지 않았는지 확인한다.
- GX10/mac capacity가 일반 capacity와 long capacity를 혼동하지 않는지 확인한다.

## 검증 결과

### 환경

- runner/workdir: 현재 checkout `/config/workspace/iop`.
- branch: `main`, dirty state: 이번 task 변경 5개 파일만 (`git status --short` 아래 참조).
- test_env: local (`agent-test/local/rules.md` 기준). dev runtime profiles/inventory는 추가 컨텍스트로 읽었다.
- 선행 의존성: `02+01_long_capacity` complete.log 확인됨 (`agent-task/archive/2026/07/m-model-group-long-context-admission/02+01_long_capacity/complete.log`, PASS). `total_context_tokens` / `long_context_capacity` / `context_window_tokens` schema가 이미 도입되어 있음.

### DEV_RUNTIME_POLICY-1 중간 검증

```bash
$ go run ./apps/edge/cmd/edge config check --config configs/edge.yaml
OK configs/edge.yaml

$ go test -count=1 ./packages/go/config
ok  	iop/packages/go/config	0.037s
```

### 최종 검증

```bash
$ git status --short
 M agent-test/dev/edge-smoke.md
 M agent-test/dev/inventory.yaml
 M agent-test/dev/node-smoke.md
 M agent-test/dev/platform-common-smoke.md
 M configs/edge.yaml

$ go run ./apps/edge/cmd/edge config check --config configs/edge.yaml
OK configs/edge.yaml

$ rg --sort path -n "ctx_size: 524288|--spec-type none -np 3|long_context_capacity: 2" agent-test/dev/inventory.yaml agent-test/dev/edge-smoke.md agent-test/dev/node-smoke.md configs/edge.yaml
agent-test/dev/inventory.yaml:228:      long_context_capacity: 2
agent-test/dev/inventory.yaml:233:        ctx_size: 524288
agent-test/dev/inventory.yaml:234:        llamacpp_args: "--spec-type none -np 3 -cb -fa on -b 4096 -ub 1024"
agent-test/dev/edge-smoke.md:87:  - load baseline: ... ctx size `524288`, `llamacpp_args="--spec-type none -np 3 ..."`
agent-test/dev/node-smoke.md:76:  - load baseline: ... ctx size `524288`, `llamacpp_args="--spec-type none -np 3 ..."`
  (그 외 OneXPlayer 서술 문단에서 ctx_size 524288 / -np 3 재확인)

$ ! rg --sort path -n "786432" configs/edge.yaml agent-test/dev/inventory.yaml agent-test/dev/edge-smoke.md agent-test/dev/node-smoke.md
  (매치 없음, rg exit=1 → guard PASS)
```

기대 결과 충족: config check PASS, required policy values 존재, `786432` 검색 non-zero exit.

### 정책값 요약 (config ↔ inventory ↔ smoke 일치)

| provider | total_context_tokens | long_context_capacity | 근거 |
|----------|----------------------|-----------------------|------|
| onexplayer-lemonade | 524288 | 2 | SDD D04 고정: ctx_size=524288, -np 3 |
| gx10-vllm | 262144 | 1 | max_model_len=262144 (conservative) |
| mac-mlx-vllm | 262144 | 1 | max_kv_size=262144 (conservative) |

- `configs/edge.yaml`은 active example provider로 mac-mlx-vllm만 두고 262144/1로 정정. gx10/onexplayer 정책은 inventory + smoke 문서 기준.

### 라이브 evidence blocker

- 항목: dev live `/v1/load` recipe_options 및 Control Plane `provider_snapshots` 실측 evidence.
- 상태: blocker (사용자 리뷰 요청 아님, plan `사용자 리뷰 요청 흐름` 기준).
- 사유: 외부 dev host(`gx10-vllm 192.168.0.91`, `onexplayer-lemonade 192.168.0.59`, `mac toki-labs.com`)와 dev-runtime Edge에 현재 세션에서 접근/기동 불가.
- 대체 완료: local config check, config 회귀 테스트, deterministic `rg --sort path` static evidence로 config/inventory/docs 정책 일관성은 확정.
- 재개 조건: dev-runtime 원격 runner(`ssh toki@toki-labs.com`, `build/dev-runtime/edge.yaml`)와 3-node provider pool 기동 시, OneXPlayer `/v1/load` recipe_options(`ctx_size=524288`, `--spec-type none -np 3`)와 provider snapshot의 `long_in_flight` 회복을 캡처해 후속 06(mixed/all-long smoke) 또는 follow-up plan에 첨부한다.

---

> **[IMPLEMENTING AGENT — BEFORE SAVING] Fill every implementation-owned section before saving.**

## 코드리뷰 결과

- 종합 판정: FAIL
- 차원별 평가:
  - correctness: Pass
  - completeness: Fail
  - test coverage: Pass
  - API contract: Pass
  - code quality: Pass
  - implementation deviation: Pass
  - verification trust: Fail
  - spec conformance: Fail
- 발견된 문제:
  - Required: `agent-task/m-model-group-long-context-admission/05+02_dev_runtime_policy/code_review_cloud_G07_0.log`의 `검증 결과 > 라이브 evidence blocker`가 SDD S07 Evidence Map의 필수 evidence인 OneX runtime load/status evidence를 제공하지 않는다. `agent-roadmap/sdd/operational-observability-provider-management/model-group-long-context-admission/SDD.md`는 `dev-runtime-policy`에 대해 `agent-test/dev/inventory.yaml`와 OneX runtime load/status evidence를 요구하므로, OneXPlayer `/v1/load` recipe/options 또는 동등한 runtime 상태와 Control Plane/provider snapshot evidence를 실제 stdout/stderr로 수집해야 한다. 외부 접근이 계속 불가하면 접속 시도 명령과 실패 출력을 후속 review stub에 남겨 verification blocker로 다시 판정 가능하게 해야 한다.
- 다음 단계: FAIL이므로 active plan/review를 아카이브한 상태에서 user-review gate 없이 follow-up `PLAN-cloud-G07.md`와 `CODE_REVIEW-cloud-G07.md`를 작성한다.
