# Milestone: Control Plane Jenkins 정렬 레이아웃 패스

## 위치

- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/control-plane-product-surface/PHASE.md`

## 목표

Jenkins 최신 weekly/LTS, `2.516+` refreshed UI, Pipeline Graph View를 pixel parity가 아닌 운영 화면 정보 구조와 레이아웃 밀도 참조로 삼아 OTO Control Plane Flutter console의 shell, navigation, 주요 view layout을 재정렬한다.
완료 후 agent-ui의 Jenkins 정렬 `계획` view/component는 코드 evidence와 검증 결과를 바탕으로 `구현됨`으로 되돌릴 수 있어야 한다.

## 상태

[완료]

## 구현 잠금

- 상태: 해제
- SDD: 불필요
- SDD 사유: 현재 범위는 Flutter UI layout 재배치와 agent-ui/code 동기화이며 API/proto/config/schema, 외부 provider, 감사 source of truth, durable persistence를 바꾸지 않는다.
- 결정 필요: 없음

## 범위

- `agent-ui/definition/**`에 정리된 Jenkins reference baseline과 Target Layout Delta를 구현 입력으로 삼는다.
- `packages/flutter/oto_console`의 shell, navigation, overview, runners, pipelines, executions, artifacts, settings layout을 재정렬한다.
- `apps/client` host wiring은 기존 package boundary를 유지하며 필요한 mount/config 조정만 허용한다.
- Pipeline Graph View의 stage graph는 OTO stage 데이터가 없으면 placeholder/summary region까지만 반영한다.
- agent-shell view는 Jenkins parity 대상이 아니므로 navigation consistency만 확인한다.

## 기능

### Epic: [layout-pass] Jenkins 정렬 레이아웃 구현

Jenkins 참조 기준선을 OTO console 코드에 구현하고 agent-ui 상태를 검증 근거로 되돌린다.

- [x] [layout-definition] Jenkins reference baseline, view/component Target Layout Delta, status=`계획` 정합성을 agent-ui에 고정한다. 검증: `validate-agent-ui` 결과가 PASS이고, 대상 view/component가 코드 반영 전 `계획` 상태로 남아 있다.
- [x] [shell-layout] `console-shell`과 `console-rail`을 Jenkins refreshed header/action context와 운영 destination grouping에 맞춰 재배치한다. 검증: Flutter 정적 분석 또는 widget test, shell/navigation smoke, `validate-agent-ui`.
- [x] [view-layout] `overview`, `runners`, `pipelines`, `executions`, `artifacts`, `settings`를 Target Layout Delta에 맞춰 재배치한다. 검증: 각 view의 주요 region이 코드에 남고 empty/error/data 상태가 깨지지 않는다.
- [x] [component-layout] `record-list`, `state-panel`, `status-badge`, `action-feedback`, `execution-action-toolbar`, `log-preview`, `artifact-list`, create/update form의 reusable layout pattern을 정리한다. 검증: shared component 또는 surface별 widget 코드가 agent-ui component rules와 충돌하지 않는다.
- [x] [agent-ui-completion] 코드 반영과 검증이 끝난 view/component의 `status`를 `구현됨`으로 되돌리고 code evidence를 유지한다. 검증: 최종 `validate-agent-ui` PASS와 code-review의 `Agent UI Completion` 근거가 남아 있다.

## 완료 리뷰

- 상태: 통과
- 요청일: 2026-07-03
- 완료 근거: `layout-definition`, `shell-layout`, `view-layout`, `component-layout`은 archived PASS complete.log의 Roadmap Completion으로 확인했고, `agent-ui-completion`은 대상 agent-ui view/component status=`구현됨` 반영과 활성 정의서 검증 PASS로 확인했다.
- 완료 근거: 코드 레벨 종료 검토에서 `packages/flutter/oto_console`와 `apps/client`의 Flutter analyze/test가 현재 checkout 기준 PASS했고, `git diff --check`도 PASS했다.
- 검토 항목:
  - agent-ui 상태 반영: 완료
  - Workspace 잠금: 관련 lock 없음
- 리뷰 코멘트: 모든 기능 Task, 구현 잠금, 검증 근거가 충족되어 완료 archive 대상으로 판단했다.

## 범위 제외

- Jenkins pixel parity, exact spacing/color token 복제는 하지 않는다.
- Jenkins plugin ecosystem 전체, Blue Ocean 신규 기준화, Jenkins folder/multibranch taxonomy 구현은 제외한다.
- Core API, proto, auth/audit source of truth, durable artifact storage 변경은 제외한다.
- production identity provider나 조직/테넌트 모델은 제외한다.

## 작업 컨텍스트

- 관련 agent-ui: `agent-ui/definition/index.md`, `agent-ui/definition/views/**`, `agent-ui/definition/components/**`, `agent-ui/frame/index.md`
- 관련 코드: `packages/flutter/oto_console/lib/src/**`, `apps/client/lib/src/app/oto_client_app.dart`
- 표준선: 기존 `OtoConsoleSection` enum과 package boundary를 우선 유지한다.
- 표준선: Jenkins reference는 정보 구조와 운영 밀도 기준이며, exact visual clone이 아니다.
- sync-agent-ui 라우팅: `MILESTONE_REQUIRED`
- 확인 필요: 없음. 구현 계획은 이 Milestone의 기능 Task와 agent-ui Target Layout Delta를 입력으로 작성한다.
