독립 control plane 구성을 위해 기존 Dart CLI/runtime을 runner 앱 경계로 옮기고, 후속 client/core/root 작업을 같은 마일스톤 task group에 연결한다.
143 lines
6.1 KiB
Markdown
143 lines
6.1 KiB
Markdown
<!-- task=m-control-plane-separation-migration/04+01,02,03_root_entrypoints plan=0 tag=MONOREPO_ROOT -->
|
|
|
|
# Implementation Plan - MONOREPO_ROOT
|
|
|
|
## 이 파일을 읽는 구현 에이전트에게
|
|
|
|
이 subtask는 디렉터리명 기준으로 `01_runner_app`, `02_client_app`, `03_core_service`의 `complete.log`가 먼저 필요하다. 구현 완료 전 `CODE_REVIEW-cloud-G06.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 구현 에이전트는 `USER_REVIEW.md`, archive log, `complete.log`를 만들지 않는다.
|
|
|
|
## 배경
|
|
|
|
첫 Epic의 앞선 세 작업이 앱/서비스 경계를 만들면 monorepo root에서 반복 개발 진입점이 필요하다. 현재 README와 scripts는 루트 단일 Dart package 기준이라 runner/client/core 작업을 위임하는 root helper로 정리해야 한다. 이 plan은 root `Makefile`과 README 실행 명령만 다룬다.
|
|
|
|
## 사용자 리뷰 요청 흐름
|
|
|
|
구현 중 blocker는 active review stub의 `사용자 리뷰 요청` 섹션에 기록한다. code-review가 검증하고 `USER_REVIEW.md` 작성 여부를 결정한다.
|
|
|
|
## Roadmap Targets
|
|
|
|
- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/control-plane-separation-migration.md`
|
|
- Task ids:
|
|
- `root-entrypoints`: root `bin/`, Makefile 또는 동등한 helper가 runner/client/core 작업을 위임하도록 정리되어 monorepo root에서 개발 진입점이 명확하다.
|
|
- Completion mode: check-on-pass
|
|
|
|
## 분석 결과
|
|
|
|
### 읽은 파일
|
|
|
|
- `agent-roadmap/current.md`
|
|
- `agent-roadmap/phase/independent-control-plane/PHASE.md`
|
|
- `agent-roadmap/phase/independent-control-plane/milestones/control-plane-separation-migration.md`
|
|
- `agent-ops/rules/project/rules.md`
|
|
- `agent-ops/skills/common/plan/SKILL.md`
|
|
- `agent-test/local/rules.md`
|
|
- `agent-test/local/cli-smoke.md`
|
|
- `agent-test/local/framework-smoke.md`
|
|
- `README.md`
|
|
- `assets/script/shell/build.sh`
|
|
- `assets/script/batch/build.bat`
|
|
- `lib/cli/cli.dart`
|
|
- `test/oto_agent_cli_test.dart`
|
|
- `test/oto_application_test.dart`
|
|
- `test/oto_catalog_cli_test.dart`
|
|
- `test/oto_validate_cli_test.dart`
|
|
|
|
### 테스트 환경 규칙
|
|
|
|
- test_env: `local`
|
|
- 적용 profiles: `cli-smoke`, `framework-smoke`.
|
|
- 적용 명령: `make runner-analyze`, `make runner-test`, `make client-test`, `make core-test`, `make test`.
|
|
- 확인한 도구: `make`는 `/config/.local/bin/make`, GNU Make `4.3`.
|
|
|
|
### 테스트 커버리지 공백
|
|
|
|
- 기존 테스트는 root Makefile 자체를 검증하지 않는다.
|
|
- 이 plan은 Makefile target 실행을 최종 검증으로 사용한다.
|
|
|
|
### 심볼 참조
|
|
|
|
- renamed/removed symbols: none.
|
|
- path 문자열 보정 대상: root `README.md`의 `dart compile exe bin/main.dart -o oto`, scripts/tests에 남은 root `bin/main.dart` 참조가 있으면 모두 의도 여부를 확인한다.
|
|
|
|
### 분할 판단
|
|
|
|
- split decision policy를 적용했다.
|
|
- 이 subtask는 `04+01,02,03_root_entrypoints`이므로 predecessor indices `01`, `02`, `03`이 필요하다.
|
|
- 현재 predecessor `complete.log` 상태: active 경로 기준 missing. 구현 시작 전 다음 파일이 있어야 한다.
|
|
- `agent-task/m-control-plane-separation-migration/01_runner_app/complete.log`
|
|
- `agent-task/m-control-plane-separation-migration/02_client_app/complete.log`
|
|
- `agent-task/m-control-plane-separation-migration/03_core_service/complete.log`
|
|
|
|
### 범위 결정 근거
|
|
|
|
- runner/client/core 내부 기능 구현은 제외한다.
|
|
- root helper는 Makefile 중심으로 둔다. 별도 root binary wrapper는 필요한 근거가 생기기 전까지 만들지 않는다.
|
|
- roadmap 상태 체크는 이 plan에서 직접 수정하지 않는다.
|
|
|
|
### 빌드 등급
|
|
|
|
- `cloud-G06`: 세 toolchain을 root에서 orchestration하고 predecessor 상태를 확인해야 하며 CLI/script 경로 회귀 위험이 있다.
|
|
|
|
## 의존 관계 및 구현 순서
|
|
|
|
- `01_runner_app`, `02_client_app`, `03_core_service`의 `complete.log`가 모두 있어야 구현을 시작한다.
|
|
- dependency는 디렉터리명 `04+01,02,03_root_entrypoints`가 source of truth다.
|
|
|
|
## 구현 체크리스트
|
|
|
|
- [ ] predecessor `complete.log` 세 개가 있는지 확인하고 없으면 구현하지 않고 review stub에 차단 근거를 남긴다.
|
|
- [ ] root `Makefile`을 추가해 runner/client/core setup/analyze/test/run helper를 위임한다.
|
|
- [ ] root README의 설치/검증/프로젝트 구조를 monorepo 기준으로 보정한다.
|
|
- [ ] root에서 `make test` 또는 개별 target을 실행해 위임 경로를 검증한다.
|
|
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
|
|
|
### [MONOREPO_ROOT-1] Add Root Makefile Delegation
|
|
|
|
문제: Milestone `agent-roadmap/phase/independent-control-plane/milestones/control-plane-separation-migration.md:43`은 root helper가 runner/client/core 작업을 위임해야 한다고 지정한다. 현재 root에는 Makefile이 없고 README는 `README.md:18-21`, `:51`, `:67-73`, `:299-311`에서 단일 Dart package 구조를 설명한다.
|
|
|
|
해결 방법:
|
|
|
|
Makefile target baseline:
|
|
```make
|
|
runner-get:
|
|
cd apps/runner && dart pub get
|
|
runner-analyze:
|
|
cd apps/runner && dart analyze
|
|
runner-test:
|
|
cd apps/runner && dart test
|
|
client-analyze:
|
|
cd apps/client && flutter analyze
|
|
client-test:
|
|
cd apps/client && flutter test
|
|
core-test:
|
|
cd services/core && go test ./...
|
|
test: runner-test client-test core-test
|
|
```
|
|
|
|
수정 파일 및 체크리스트:
|
|
- [ ] `Makefile`
|
|
- [ ] `README.md`
|
|
|
|
테스트 작성: Makefile target 실행 자체를 검증으로 둔다. 별도 unit test는 만들지 않는다.
|
|
|
|
중간 검증:
|
|
```bash
|
|
make runner-analyze
|
|
```
|
|
예상 결과: runner analyzer 통과.
|
|
|
|
## 수정 파일 요약
|
|
|
|
| 파일 | 항목 |
|
|
|------|------|
|
|
| `Makefile` | MONOREPO_ROOT-1 |
|
|
| `README.md` | MONOREPO_ROOT-1 |
|
|
|
|
## 최종 검증
|
|
|
|
```bash
|
|
make test
|
|
```
|
|
예상 결과: runner/client/core delegated test target이 모두 통과한다.
|
|
|
|
모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
|