# Phase: Control Plane과 Client 운영

## 상태

[완료]

## 목표

여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 중앙 제어면과 Flutter client 운영면을 구축한다.

## Milestone 흐름

완료 또는 폐기된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다.
완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.

- [완료] Flutter-first Client 마이그레이션
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md`
  - 요약: Next.js `apps/web` scaffold를 제거하고 `apps/client` Flutter 앱, Flutter Web compose 배포 흐름, Client-Control Plane proto-socket WS hello 기반을 세웠다.

- [완료] Edge-local Dev Config와 바이너리 중심 실행 루프
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md`
  - 요약: Control Plane이 없는 동안 `edge.yaml`을 테스트용 source of truth로 삼고, config 템플릿 생성, effective environment 출력, Node register/bootstrap 출력, setup, smoke test를 `iop-edge` command 중심으로 모은다.

- [완료] Nexo 알림/메시지 Smoke 정합성
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/nexo-notification-message-smoke-alignment.md`
  - 요약: `../nomadcode`의 server-generated signed push smoke evidence와 IOP `apps/client`의 Nexo messaging 소비 설정 차이를 선행 게이트로 정리하고 archive했다.

- [폐기] Client Integration Clone Adoption
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md`
  - 요약: NomadCode Flutter client clone adoption은 별도 프로젝트에서 진행하기로 하여 IOP active roadmap에서 제외했다.

- [완료] Edge Command와 Control Plane 운영 경계
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/edge-command-control-plane-ops-boundary.md`
  - 요약: `iop-edge` local/field fallback과 Control Plane 기본 운영면의 책임 경계, shared Edge operation 분류 기준, 사용자 가이드 갱신 범위를 확정한다.

- [완료] Control Plane-Edge Wire Baseline
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/control-plane-edge-wire-baseline.md`
  - 요약: Control Plane과 Edge가 proto-socket 기반 IOP Wire Protocol로 연결되는 최소 통신 레일, status snapshot, node lifecycle event relay, service boundary를 완료하고 archive했다.

- [완료] Embeddable IOP Console Workbench
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md`
  - 요약: `packages/flutter/iop_console` 패키지, left rail shell, agent panel, standalone app mount, controller/config injection, execution/logs 영역, 독립 package test/analyze 검증을 완료하고 archive했다.

- [완료] Control Plane과 Client
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/control-plane-client.md`
  - 요약: 여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 중앙 제어면과 Flutter client 운영면을 구축한다.

- [완료] 정책, 이력, 감사
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/policy-history-audit.md`
  - 요약: 권한, 정책, 실행 이력, 감사 로그를 제품 운영에 필요한 수준으로 확장하고, 공통 audit schema evidence까지 확정했다.

- [완료] Multi-Edge 운영
  - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/multi-edge-operations.md`
  - 요약: 여러 Edge group을 관찰하고 운영하는 fleet-level 기능을 구축한다.

## Phase 경계

- Control Plane은 Node를 직접 스케줄링하지 않고 Edge를 통해 관찰/제어한다.
- Flutter client는 IOP 자체 운영 UI/UX이며 NomadCode 전용 shell로 만들지 않는다.
- IOP 관리 UI는 standalone application shell과 embeddable package 경계를 분리해 NomadCode 같은 host가 선택적으로 포함할 수 있게 한다.
- Multi-Edge 운영은 Edge의 로컬 상태 소유권을 침범하지 않는 범위에서 확장한다.
- NomadCode Flutter client 복제/표준화 작업은 별도 프로젝트 범위로 분리하고, IOP Phase에서는 필요한 경우 확정 산출물만 후속 Milestone으로 반영한다.
