# 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`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.