Update roadmap and SDD: control plane product surface changes

This commit is contained in:
toki 2026-07-06 15:03:47 +09:00
parent 0c55381b8c
commit 3323dfefff
5 changed files with 27 additions and 29 deletions

View file

@ -12,25 +12,25 @@ OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서
검토중 또는 진행중 Phase는 계획 Phase보다 위에 두어, 아래로 갈수록 미래 계획에 가까워지게 정렬한다. 검토중 또는 진행중 Phase는 계획 Phase보다 위에 두어, 아래로 갈수록 미래 계획에 가까워지게 정렬한다.
- [완료] CLI 자동화 표면 정리 - [완료] CLI 자동화 표면 정리
- 경로: `agent-roadmap/archive/phase/cli-automation-surface/PHASE.md` - 경로: [PHASE.md](archive/phase/cli-automation-surface/PHASE.md)
- 요약: Jenkins, 파일 실행, 스케줄러로 동작하는 현재 CLI 표면을 장기 호환 경계와 외부 자동화 계약으로 정리했다. - 요약: Jenkins, 파일 실행, 스케줄러로 동작하는 현재 CLI 표면을 장기 호환 경계와 외부 자동화 계약으로 정리했다.
- [폐기] Edge 직접 연결 기반 `oto-agent` - [폐기] Edge 직접 연결 기반 `oto-agent`
- 경로: `agent-roadmap/archive/phase/edge-direct-oto-agent/PHASE.md` - 경로: [PHASE.md](archive/phase/edge-direct-oto-agent/PHASE.md)
- 요약: OTO가 iop Edge와 proto-socket 기반 outbound 통신을 하는 경로는 검증 근거만 보존하고, 독립 OTO Control Plane 방향으로 전환하며 기본 제품 경로에서는 폐기한다. - 요약: OTO가 iop Edge와 proto-socket 기반 outbound 통신을 하는 경로는 검증 근거만 보존하고, 독립 OTO Control Plane 방향으로 전환하며 기본 제품 경로에서는 폐기한다.
- [완료] 독립 Control Plane 기반 OTO - [완료] 독립 Control Plane 기반 OTO
- 경로: `agent-roadmap/archive/phase/independent-control-plane/PHASE.md` - 경로: [PHASE.md](archive/phase/independent-control-plane/PHASE.md)
- 요약: OTO를 iop 직접 연결 구조에서 분리해 `apps/runner`, `apps/client`, `services/core`를 가진 독립 CI/CD runner/control plane 제품 구조로 전환하고 archive로 정리했다. - 요약: OTO를 iop 직접 연결 구조에서 분리해 `apps/runner`, `apps/client`, `services/core`를 가진 독립 CI/CD runner/control plane 제품 구조로 전환하고 archive로 정리했다.
- [완료] 메시지 기반 빌드 에이전트 - [완료] 메시지 기반 빌드 에이전트
- 경로: `agent-roadmap/archive/phase/message-based-build-agent/PHASE.md` - 경로: [PHASE.md](archive/phase/message-based-build-agent/PHASE.md)
- 요약: `oto agent` 또는 `oto daemon` 모드에서 OTO Server와 양방향 메시지 통신을 사용하는 build/deploy 전용 runner 경계를 정리하고 archive로 이동했다. - 요약: `oto agent` 또는 `oto daemon` 모드에서 OTO Server와 양방향 메시지 통신을 사용하는 build/deploy 전용 runner 경계를 정리하고 archive로 이동했다.
- [진행중] Control Plane 제품 표면 완성 - [진행중] Control Plane 제품 표면 완성
- 경로: `agent-roadmap/phase/control-plane-product-surface/PHASE.md` - 경로: [PHASE.md](phase/control-plane-product-surface/PHASE.md)
- 요약: 현재 분리된 Core API, Flutter client, runner bootstrap 경계를 실제 운영 가능한 UI 스켈레톤과 OS별 설치 흐름으로 연결한다. - 요약: 현재 분리된 Core API, Flutter client, runner bootstrap 경계를 실제 운영 가능한 UI 스켈레톤과 OS별 설치 흐름으로 연결한다.
## 로딩 정책 ## 로딩 정책
- 일반 작업에서는 `agent-roadmap/ROADMAP.md`를 매번 읽지 않는다. - 일반 작업에서는 [ROADMAP.md](ROADMAP.md)를 매번 읽지 않는다.
- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-roadmap/current.md`를 먼저 읽는다. - 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 [current.md](current.md)를 먼저 읽는다.
- `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 Milestone 후보 목록이다. - `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 Milestone 후보 목록이다.
- `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. - `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다.
- `current.md`의 활성 Phase는 `agent-roadmap/phase/<phase-slug>/PHASE.md`를 가리킨다. - `current.md`의 활성 Phase는 `agent-roadmap/phase/<phase-slug>/PHASE.md`를 가리킨다.

View file

@ -16,28 +16,28 @@
스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다. 스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다.
- [완료] Runner bootstrap, OTO binary, 노드 연결 - [완료] Runner bootstrap, OTO binary, 노드 연결
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/cross-os-runner-bootstrap.md` - 경로: [cross-os-runner-bootstrap.md](../../archive/phase/control-plane-product-surface/milestones/cross-os-runner-bootstrap.md)
- 요약: OTO Core bootstrap command와 bootstrap asset이 Linux, macOS, Windows에서 `oto` binary를 내려받고 runner/node로 Core에 연결할 수 있도록 확장한다. - 요약: OTO Core bootstrap command와 bootstrap asset이 Linux, macOS, Windows에서 `oto` binary를 내려받고 runner/node로 Core에 연결할 수 있도록 확장한다.
- [완료] Flutter 콘솔 스켈레톤 - [완료] Flutter 콘솔 스켈레톤
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/flutter-console-skeleton.md` - 경로: [flutter-console-skeleton.md](../../archive/phase/control-plane-product-surface/milestones/flutter-console-skeleton.md)
- 요약: bootstrap과 runner/node 연결 기준을 바탕으로 `apps/client``packages/flutter/oto_console`에 Control Plane 주요 화면, 상태 표시, 빈 상태를 갖춘 UI 스켈레톤을 만든다. - 요약: bootstrap과 runner/node 연결 기준을 바탕으로 `apps/client``packages/flutter/oto_console`에 Control Plane 주요 화면, 상태 표시, 빈 상태를 갖춘 UI 스켈레톤을 만든다.
- [완료] Control Plane API 데이터 바인딩 - [완료] Control Plane API 데이터 바인딩
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/control-plane-api-data-binding.md` - 경로: [control-plane-api-data-binding.md](../../archive/phase/control-plane-product-surface/milestones/control-plane-api-data-binding.md)
- 요약: UI 스켈레톤에 기존 OTO Core runner/job/execution/log/artifact API의 read path를 연결하고, 실제 데이터가 비어 있거나 실패할 때의 상태 표현을 검증한다. - 요약: UI 스켈레톤에 기존 OTO Core runner/job/execution/log/artifact API의 read path를 연결하고, 실제 데이터가 비어 있거나 실패할 때의 상태 표현을 검증한다.
- [완료] Control Plane 운영 액션 표면 - [완료] Control Plane 운영 액션 표면
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/control-plane-operator-actions.md` - 경로: [control-plane-operator-actions.md](../../archive/phase/control-plane-product-surface/milestones/control-plane-operator-actions.md)
- 요약: 기존 OTO Core write endpoint를 UI/adapter action 표면으로 연결하되, 상태 전이와 실패/확인 UX는 SDD로 먼저 잠근다. - 요약: 기존 OTO Core write endpoint를 UI/adapter action 표면으로 연결하되, 상태 전이와 실패/확인 UX는 SDD로 먼저 잠근다.
- [완료] Runner proto-socket transport hardening - [완료] Runner proto-socket transport hardening
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/runner-proto-socket-transport-hardening.md` - 경로: [runner-proto-socket-transport-hardening.md](../../archive/phase/control-plane-product-surface/milestones/runner-proto-socket-transport-hardening.md)
- 요약: OTO Server와 runner의 기본 내부 연결을 proto-socket push/session 기준으로 다듬고, HTTP job claim/polling 잔존 경로를 compatibility 경계로 축소한다. - 요약: OTO Server와 runner의 기본 내부 연결을 proto-socket push/session 기준으로 다듬고, HTTP job claim/polling 잔존 경로를 compatibility 경계로 축소한다.
- [완료] Control Plane Jenkins 정렬 레이아웃 패스 - [완료] Control Plane Jenkins 정렬 레이아웃 패스
- 경로: `agent-roadmap/archive/phase/control-plane-product-surface/milestones/control-plane-jenkins-aligned-layout-pass.md` - 경로: [control-plane-jenkins-aligned-layout-pass.md](../../archive/phase/control-plane-product-surface/milestones/control-plane-jenkins-aligned-layout-pass.md)
- 요약: Jenkins 최신 weekly/LTS와 `2.516+` refreshed UI, Pipeline Graph View를 러프 참조로 삼아 OTO console shell, navigation, 주요 운영 view의 레이아웃을 구현에 반영했다. - 요약: Jenkins 최신 weekly/LTS와 `2.516+` refreshed UI, Pipeline Graph View를 러프 참조로 삼아 OTO console shell, navigation, 주요 운영 view의 레이아웃을 구현에 반영했다.
- [진행중] Control Plane Jenkins 메뉴·IA 코드 동기화 - [진행중] Control Plane Jenkins 메뉴·IA 코드 동기화
- 경로: `agent-roadmap/phase/control-plane-product-surface/milestones/control-plane-jenkins-menu-ia-code-sync.md` - 경로: [control-plane-jenkins-menu-ia-code-sync.md](milestones/control-plane-jenkins-menu-ia-code-sync.md)
- 요약: 화면정의서에 재정렬된 OTO 적용 가능 Jenkins 메뉴 모델을 Flutter shell, jobs, executions, runners, settings와 원격 preview에 코드로 동기화한다. - 요약: 화면정의서에 재정렬된 OTO 적용 가능 Jenkins 메뉴 모델을 Flutter shell, jobs, executions, runners, settings와 원격 preview에 코드로 동기화한다.
- [진행중] Control Plane 운영 보안·감사 표면 - [진행중] Control Plane 운영 보안·감사 표면
- 경로: `agent-roadmap/phase/control-plane-product-surface/milestones/control-plane-security-audit-surface.md` - 경로: [control-plane-security-audit-surface.md](milestones/control-plane-security-audit-surface.md)
- 요약: write action 표면 이후 필요한 인증/권한, 감사 로그, 민감 정보 마스킹, UI 노출 경계를 SDD와 구현 가능한 Task로 구체화한다. - 요약: write action 표면 이후 필요한 인증/권한, 감사 로그, 민감 정보 마스킹, UI 노출 경계를 SDD와 구현 가능한 Task로 구체화한다.
## Phase 경계 ## Phase 경계

View file

@ -2,8 +2,8 @@
## 위치 ## 위치
- Roadmap: `agent-roadmap/ROADMAP.md` - Roadmap: [ROADMAP.md](../../../ROADMAP.md)
- Phase: `agent-roadmap/phase/control-plane-product-surface/PHASE.md` - Phase: [PHASE.md](../PHASE.md)
## 목표 ## 목표
@ -59,10 +59,8 @@ Jenkins 정렬 레이아웃 패스 이후 발견된 메뉴/정보구조 불일
## 작업 컨텍스트 ## 작업 컨텍스트
- 관련 active plan: `agent-task/m-control-plane-jenkins-menu-ia-code-sync/01_definition_guardrails/PLAN-cloud-G07.md` - 관련 active plan: 없음 (현재 활성 `agent-task/` 문서 없음)
- 관련 active plan: `agent-task/m-control-plane-jenkins-menu-ia-code-sync/02+01_shell_jobs/PLAN-cloud-G07.md` - agent-ui source of truth: [views index](../../../../agent-ui/definition/views/index.md), [console-rail index](../../../../agent-ui/definition/components/console-rail/index.md), [components index](../../../../agent-ui/definition/components/index.md)
- 관련 active plan: `agent-task/m-control-plane-jenkins-menu-ia-code-sync/03+01_executions_ops/PLAN-cloud-G07.md`
- agent-ui source of truth: `agent-ui/definition/views/index.md`, `agent-ui/definition/components/console-rail/index.md`, `agent-ui/definition/components/index.md`
- 선행 작업: `Control Plane Jenkins 정렬 레이아웃 패스` - 선행 작업: `Control Plane Jenkins 정렬 레이아웃 패스`
- 후속 작업: `Control Plane 운영 보안·감사 표면` - 후속 작업: `Control Plane 운영 보안·감사 표면`
- 확인 필요: 없음 - 확인 필요: 없음

View file

@ -2,8 +2,8 @@
## 위치 ## 위치
- Roadmap: `agent-roadmap/ROADMAP.md` - Roadmap: [ROADMAP.md](../../../ROADMAP.md)
- Phase: `agent-roadmap/phase/control-plane-product-surface/PHASE.md` - Phase: [PHASE.md](../PHASE.md)
## 목표 ## 목표
@ -16,13 +16,13 @@ Control Plane write action 표면 위에 운영 권한, 확인 가능한 감사
## 승격 조건 ## 승격 조건
- 충족: SDD가 `[승인됨]`이고 D01-D03 사용자 결정이 `user_review_0.log`로 해결되어 최소 인증/권한, 감사 source of truth, UI 노출/마스킹 기준이 구현 계획으로 전환 가능한 범위로 고정되었다. - 충족: SDD가 `[승인됨]`이고 D01-D03 사용자 결정이 [user_review_0.log](../../../sdd/control-plane-product-surface/control-plane-security-audit-surface/user_review_0.log)로 해결되어 최소 인증/권한, 감사 source of truth, UI 노출/마스킹 기준이 구현 계획으로 전환 가능한 범위로 고정되었다.
## 구현 잠금 ## 구현 잠금
- 상태: 해제 - 상태: 해제
- SDD: 필요 - SDD: 필요
- SDD 문서: `agent-roadmap/sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md` - SDD 문서: [SDD.md](../../../sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md)
- SDD 사유: 인증/권한, 감사 로그, write action 책임 경계는 API/schema/UI 상태와 사용자 승인 gate에 영향을 주므로 구현 전에 source of truth와 상태 전이를 고정해야 한다. - SDD 사유: 인증/권한, 감사 로그, write action 책임 경계는 API/schema/UI 상태와 사용자 승인 gate에 영향을 주므로 구현 전에 source of truth와 상태 전이를 고정해야 한다.
- 잠금 해제 조건: - 잠금 해제 조건:
- [x] SDD 상태가 `[승인됨]`이고 SDD 잠금이 해제되어 있다. - [x] SDD 상태가 `[승인됨]`이고 SDD 잠금이 해제되어 있다.
@ -45,7 +45,7 @@ Control Plane write action 표면 위에 운영 권한, 확인 가능한 감사
write action 이후 필요한 운영 보안과 감사 capability를 SDD 기준으로 구현하고 검증한다. write action 이후 필요한 운영 보안과 감사 capability를 SDD 기준으로 구현하고 검증한다.
- [x] [security-sdd] 인증/권한, 감사 source of truth, 민감 정보 마스킹, 실패/거부 UX, 검증 evidence를 SDD로 고정한다. 검증: `SDD.md` 상태가 `[승인됨]`이고 SDD 잠금이 `해제`이며 `user_review_0.log`가 남아 있다. - [x] [security-sdd] 인증/권한, 감사 source of truth, 민감 정보 마스킹, 실패/거부 UX, 검증 evidence를 SDD로 고정한다. 검증: [SDD.md](../../../sdd/control-plane-product-surface/control-plane-security-audit-surface/SDD.md) 상태가 `[승인됨]`이고 SDD 잠금이 `해제`이며 [user_review_0.log](../../../sdd/control-plane-product-surface/control-plane-security-audit-surface/user_review_0.log)가 남아 있다.
- [ ] [auth-scope] Core write endpoint와 Flutter action surface에 operator/admin 단일 역할 및 표시 가능한 token reference 기준의 허용/거부, disabled/error 상태를 구현한다. 검증: Core handler/route 테스트 또는 adapter/widget 테스트로 권한 허용/거부와 UI 상태를 확인한다. - [ ] [auth-scope] Core write endpoint와 Flutter action surface에 operator/admin 단일 역할 및 표시 가능한 token reference 기준의 허용/거부, disabled/error 상태를 구현한다. 검증: Core handler/route 테스트 또는 adapter/widget 테스트로 권한 허용/거부와 UI 상태를 확인한다.
- [ ] [audit-scope] Control Plane write action의 actor, action, target, outcome, timestamp, optional reason 감사 metadata와 UI 노출/마스킹 경계를 구현한다. 검증: audit event field, in-memory/event surface boundary, UI masking/widget 테스트 또는 민감 문자열 미노출 검색으로 확인한다. - [ ] [audit-scope] Control Plane write action의 actor, action, target, outcome, timestamp, optional reason 감사 metadata와 UI 노출/마스킹 경계를 구현한다. 검증: audit event field, in-memory/event surface boundary, UI masking/widget 테스트 또는 민감 문자열 미노출 검색으로 확인한다.

View file

@ -2,8 +2,8 @@
## 위치 ## 위치
- Milestone: `agent-roadmap/phase/control-plane-product-surface/milestones/control-plane-security-audit-surface.md` - Milestone: [control-plane-security-audit-surface.md](../../../phase/control-plane-product-surface/milestones/control-plane-security-audit-surface.md)
- Phase: `agent-roadmap/phase/control-plane-product-surface/PHASE.md` - Phase: [PHASE.md](../../../phase/control-plane-product-surface/PHASE.md)
## 상태 ## 상태
@ -31,7 +31,7 @@
| 영역 | 기준 | 메모 | | 영역 | 기준 | 메모 |
|------|------|------| |------|------|------|
| Roadmap | `agent-roadmap/phase/control-plane-product-surface/milestones/control-plane-security-audit-surface.md` | Milestone 상태, 기능 Task, 구현 잠금의 장기 원장이다. | | Roadmap | [control-plane-security-audit-surface.md](../../../phase/control-plane-product-surface/milestones/control-plane-security-audit-surface.md) | Milestone 상태, 기능 Task, 구현 잠금의 장기 원장이다. |
| Code | `services/core/internal/httpserver/routes.go` | Core HTTP write route의 현재 source of truth다. | | Code | `services/core/internal/httpserver/routes.go` | Core HTTP write route의 현재 source of truth다. |
| Code | `services/core/internal/httpserver/runner_cicd_handlers.go` | runner self-update, execution cancel/report/log/artifact write handler의 현재 검증·상태 변경 기준이다. | | Code | `services/core/internal/httpserver/runner_cicd_handlers.go` | runner self-update, execution cancel/report/log/artifact write handler의 현재 검증·상태 변경 기준이다. |
| Code | `apps/client/lib/src/app/core_connection_client.dart` | Flutter client가 Core write endpoint를 호출하고 success/deferred/failed로 해석하는 기준이다. | | Code | `apps/client/lib/src/app/core_connection_client.dart` | Flutter client가 Core write endpoint를 호출하고 success/deferred/failed로 해석하는 기준이다. |