Update roadmap and SDD: control plane product surface changes
This commit is contained in:
parent
0c55381b8c
commit
3323dfefff
5 changed files with 27 additions and 29 deletions
|
|
@ -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`를 가리킨다.
|
||||||
|
|
|
||||||
|
|
@ -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 경계
|
||||||
|
|
|
||||||
|
|
@ -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 운영 보안·감사 표면`
|
||||||
- 확인 필요: 없음
|
- 확인 필요: 없음
|
||||||
|
|
|
||||||
|
|
@ -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 테스트 또는 민감 문자열 미노출 검색으로 확인한다.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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로 해석하는 기준이다. |
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue