# SDD User Review Log

## 상태

해결됨

## 검토 대상

- SDD: [SDD.md](SDD.md)
- Milestone: [iop-agent-cli-runtime](../../../phase/automation-runtime-bridge/milestones/iop-agent-cli-runtime.md)

## 확정된 설계 기준

### [D01] Milestone 시작과 재개 권한

- 상태: 확정
- 확정: 새 Milestone의 project 선택, Milestone 선택과 최초 start는 수동으로 수행한다.
- 확정: ready Milestone의 자동 최초 시작은 허용하지 않는다. 시작 기록이 있는 중단 작업만 기본적으로 자동 재개하되 `auto_resume_interrupted` local 설정으로 조정한다.
- 확정: 명시 stop은 해당 project의 실행과 후속 자동 재개를 중단하며 다른 project는 계속 관측한다.
- 영향: scheduler state, start intent/checkpoint, CLI/proto control과 restart recovery에 영향을 준다.

### [D02] Repo-global과 User-local 설정 분리

- 상태: 확정
- 확정: repo-global 설정은 비밀정보 없는 provider/default/selection policy template을 버전 관리하고 runtime은 읽기만 한다.
- 확정: user-local 설정·상태는 장비 경로, provider command/env reference, project registry/override, 자동 재개, client launch policy, checkpoint/lease를 소유한다.
- 확정: user-local 값은 repo-global 뒤에 적용하고 ordered rule array는 전체 교체한다. credential과 로그인 상태는 각 provider CLI가 계속 소유한다.
- 영향: config schema, merge precedence, file watcher, clean worktree와 migration에 영향을 준다.

### [D03] Dependency와 병렬 실행

- 상태: 확정
- 확인 결과: 현재 오케스트레이션 스킬은 `NN_task`를 즉시 eligible로 보고 `NN+PP[,QQ...]_task`는 명시 predecessor의 `complete.log`가 검증된 뒤 eligible로 본다. 파일 번호 순서에서는 의존성을 추론하지 않으며, dependency-ready task는 overlapping/unknown write-set도 직렬화하지 않는다.
- 반영 결정: explicit predecessor grammar와 task-local blocker는 유지한다. 서로 다른 project/clone/worktree/branch workspace instance는 provider concurrency 한도 안에서 병렬 실행한다.
- 반영 결정: 같은 workspace instance는 declared write-set 비중첩이 증명된 ready sibling만 병렬 실행한다. overlapping/unknown은 직렬화하거나 격리 workspace를 사용한다.
- 반영 결정: Python/스킬의 no-write-set-barrier 동작은 parity matrix에서 `replace`로 분류하고, 숫자 순서에서 암묵 dependency를 만들지 않는다.
- 영향: scheduler admission, plan metadata, workspace isolation, parity disposition과 동시성 테스트에 영향을 준다.

### [D04] 단일 Process와 Local Client Topology

- 상태: 확정
- 확정: 개인 장비의 소유 OS 사용자 범위에서 active `iop-agent` supervisor는 하나만 실행하고 여러 project를 관측·실행한다.
- 확정: `iop-agent`가 Flutter와 Unity를 subprocess로 시작·중단·복구하며, 같은 OS 사용자에게 제한된 local proto-socket client는 별도 app token 없이 신뢰한다.
- 확정: Flutter는 전체 설정·운영 UI이고 Unity는 캐릭터 표시와 간단한 메뉴를 제공한다. Unity가 상세 UI를 요청하면 Flutter를 직접 실행하지 않고 `iop-agent`가 Flutter를 시작하거나 전면 표시한다.
- 영향: singleton/workspace lease, socket permission, process ownership, client contract와 후속 Flutter/Unity Milestone에 영향을 준다.

## 확정된 추가 설계 기준

### [D05] Provider approval 기본 정책

- 상태: 확정
- 확정: 프로젝트 전제는 완전 자동화이며 등록 workspace 안에서는 provider approval bypass를 기본으로 사용한다.
- 확정: 사용자가 project folder를 등록한 행위는 해당 canonical workspace 범위의 agent action을 사전 승인한 workspace grant다.
- 확정: `iop-agent`는 dispatch 전에 canonical/symlink containment, full clone 또는 worktree VCS metadata allowance와 provider의 unattended/approval-bypass capability를 검증한다.
- 확정: bypass가 설정되지 않았거나 workspace guardrail을 충족하지 않으면 agent invocation은 0회이며 해당 work unit만 blocked로 두고 bypass/workspace 설정 방법을 안내한다. 독립 project는 계속 진행한다.
- 확정: workspace grant는 외부 서비스 mutation, 다른 project 또는 임의 장비 경로의 포괄 승인이 아니다.
- 영향: 무인 실행 가능성, 로컬 파일·명령 변경 권한, provider profile schema, workspace isolation, blocker notification과 smoke 범위에 영향을 준다.
- 적용 위치:
  - SDD: `State Machine`, `Interface Contract`, `Acceptance Scenarios`, `작업 컨텍스트`
  - Milestone: `guardrail-admission`, `provider-catalog`, `cli-surface`

## 승인 항목

- [x] D01 Milestone 시작과 재개 권한이 반영됐다.
- [x] D02 Repo-global/User-local 설정 분리가 반영됐다.
- [x] D03 Dependency와 병렬 실행 정책이 반영됐다.
- [x] D04 단일 process와 local client topology가 반영됐다.
- [x] D05 provider approval 기본 정책을 결정했다.
- [x] SDD 잠금 해제를 승인했다.

## 답변 기록

- 2026-07-28: D01은 새 Milestone 수동 선택·시작, 중단 작업 기본 자동 재개와 설정 가능 방식으로 확정했다.
- 2026-07-28: D02는 repo-global 공통 설정과 user-local 임시 설정·상태를 분리하고 세부 분류를 runtime 설계에서 정하도록 확정했다.
- 2026-07-28: D03은 실제 오케스트레이션 스킬의 dependency 분류를 확인한 뒤 안전한 병렬 정책을 추천·반영하도록 위임했다.
- 2026-07-28: D04는 개인 장비의 단일 `iop-agent`가 다중 project와 Flutter·Unity subprocess를 소유하고 same-OS-user proto client를 신뢰하는 방식으로 확정했다.
- 2026-07-28: D05는 등록 workspace 범위의 전자동 approval bypass를 기본으로 확정했다. `iop-agent`가 workspace guardrail과 provider bypass capability를 선검증하고 미충족이면 agent를 호출하지 않은 채 설정 안내 알림을 낸다.

## 해결 조건

- [x] D05 답변이 SDD와 Milestone에 반영되어 있다.
- [x] `USER_REVIEW.md`가 `user_review_0.log`로 이동되어 있다.
- [x] SDD 상태가 `[승인됨]`이고 SDD·Milestone 구현 잠금이 해제되어 있다.
