diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G04_0.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G04_0.log new file mode 100644 index 0000000..5a4f540 --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G04_0.log @@ -0,0 +1,290 @@ + + +# Code Review Reference - RULES + +> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.** +> The task is NOT complete until every implementation-owned section below is filled in. +> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving. +> Fill implementation-owned sections, then stop with active files in place and report ready for review. +> If implementation is blocked by a user-only decision, user-owned external environment prerequisite, or scope conflict, fill `사용자 리뷰 요청` with evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Evidence gaps that a follow-up agent can close by rerunning commands or collecting artifacts are normal follow-up issues, not user-review blockers by themselves. +> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record the needed decision in `사용자 리뷰 요청` and stop for code-review. +> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume. +> Follow the ownership table at the bottom of this file for which sections you own. + +## 개요 + +date=2026-06-07 +task=m-ops-rule-monorepo-alignment/02+01_test_rules, plan=0, tag=RULES + +## Roadmap Targets + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Task ids: + - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. +- Completion mode: check-on-pass + +## 이 파일을 읽는 리뷰 에이전트에게 + +> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다. + +각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요. +리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다. + +1. 판정을 append한다. +2. `CODE_REVIEW-local-G04.md` -> `code_review_local_G04_N.log`, `PLAN-local-G04.md` -> `plan_local_G04_M.log`로 아카이브한다. +3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다. +4. PASS이고 task group이 `m-`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다. +5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다. + +--- + +## 구현 항목별 완료 여부 + +| 항목 | 완료 여부 | +|------|---------| +| [RULES-1] Local smoke read conditions and commands | [x] | +| [RULES-2] Local routing and monorepo target consistency | [x] | + +## 구현 체크리스트 + +- [x] predecessor `01_domain_rules`의 `complete.log`가 active 또는 archive 경로에 있는지 확인하고 없으면 구현을 시작하지 않고 review stub의 사용자 리뷰 요청이 아니라 dependency 미충족으로 기록한다. +- [x] `agent-test/local/*-smoke.md`의 읽기 조건을 `apps/runner/...` 경로로 갱신하고, package-local 명령은 working directory 또는 `make` target 의미가 분명하게 보이도록 정리한다. +- [x] `agent-test/local/rules.md`의 라우팅 설명이 runner/client/core package target과 충돌하지 않는지 확인한다. +- [x] `rg --sort path -n 'lib/|bin/main|assets/' agent-test/local` 결과의 남은 항목이 모두 의도된 예외인지 확인한다. +- [x] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. +- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. + +## 코드리뷰 전용 체크리스트 + +> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다. +> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다. + +- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다. +- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다. +- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_local_G04_N.log`로 아카이브한다. +- [x] active `PLAN-*-G??.md`를 `plan_local_G04_M.log`로 아카이브한다. +- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다. +- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다. +- [ ] PASS이면 active task 디렉터리 `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/`를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다. +- [ ] PASS이고 task group이 `m-`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다. +- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-ops-rule-monorepo-alignment/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다. +- [x] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-local-G05.md`와 `CODE_REVIEW-local-G05.md`를 작성하고 `complete.log`를 작성하지 않는다. +- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다. +- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다. + +## 계획 대비 변경 사항 + +- 없음. 계획된 사항대로 모두 정상적으로 수행됨. + +## 주요 설계 결정 + +- **Monorepo Target과의 일치**: 로컬 smoke 테스트 profile들에서 각 파일의 읽기 조건을 monorepo structure인 `apps/runner/` prefix를 사용하도록 일치시켰음. +- **명령 구체화**: Dart runner 관련 setup, lint, unit test, smoke test 명령어들을 `apps/runner/` 경로 또는 `make` target을 이용하여 명시하도록 개선했음. + +## 사용자 리뷰 요청 + +_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다._ + +- 상태: 없음 +- 사유 유형: 없음 +- 결정 필요: 없음 +- 차단 근거: 없음 +- 실행한 검증/명령: 없음 +- 자동 후속 불가 이유: 없음 +- 재개 조건: 없음 + +## 리뷰어를 위한 체크포인트 + +- predecessor `01_domain_rules` 완료 근거 없이 구현이 시작되지 않았는지 확인한다. +- local smoke read condition이 domain rule 경로와 같은 모노레포 prefix를 쓰는지 확인한다. +- `Makefile` target과 smoke 문서의 명령 의미가 충돌하지 않는지 확인한다. + +## 검증 결과 + +### RULES-1 중간 검증 +```bash +$ rg --sort path -n 'lib/|bin/main|assets/' agent-test/local +agent-test/local/agent-smoke.md +13:- `apps/runner/lib/oto/agent/**`, `apps/runner/lib/cli/commands/command_agent.dart`, 또는 `apps/runner/assets/script/shell/oto_agent_bootstrap.sh` 변경 검증이 필요한 경우 +agent-test/local/cli-smoke.md +13:- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 resource importer 변경 검증이 필요한 경우 +41:- smoke: `cd apps/runner && dart run bin/main.dart --help` +53:- CLI entrypoint 변경 시 `cd apps/runner && dart run bin/main.dart --help`를 실행한다. +agent-test/local/command-smoke.md +13:- `apps/runner/lib/oto/commands/**`, `apps/runner/lib/oto/data/**`, 또는 command template 변경 검증이 필요한 경우 +agent-test/local/core-smoke.md +13:- `apps/runner/lib/oto/application.dart`, `apps/runner/lib/oto/core/**`, `apps/runner/lib/oto/utils/**`, 또는 core script helper 변경 검증이 필요한 경우 +agent-test/local/pipeline-smoke.md +13:- `apps/runner/lib/oto/pipeline/**` 또는 `apps/runner/lib/oto/data/pipeline_data.dart` 변경 검증이 필요한 경우 +agent-test/local/sample-smoke.md +13:- `apps/runner/assets/yaml/sample/**` 변경 또는 YAML sample 검증이 필요한 경우 +agent-test/local/scheduler-smoke.md +13:- `apps/runner/lib/cli/commands/scheduler/**` 또는 `apps/runner/lib/cli/commands/command_scheduler.dart` 변경 검증이 필요한 경우 +``` + +### RULES-2 중간 검증 +```bash +$ rg --sort path -n 'runner-analyze|runner-test|client-analyze|client-test|core-test|apps/runner|apps/client|services/core|packages/flutter/oto_console' agent-test/local Makefile +agent-test/local/agent-smoke.md +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_agent_migration_plan_test.dart test/oto_agent_bootstrap_script_test.dart test/oto_agent_cli_test.dart test/oto_agent_config_test.dart test/oto_agent_registration_test.dart test/oto_server_connection_smoke_test.dart` (또는 `make runner-test`) +54:- 전체 회귀가 필요한 경우 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. +58:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +59:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/cli-smoke.md +13:- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 resource importer 변경 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_cli_runtime_test.dart test/oto_catalog_cli_test.dart test/oto_validate_cli_test.dart` (또는 `make runner-test`) +41:- smoke: `cd apps/runner && dart run bin/main.dart --help` +48:- CLI 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- CLI 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. +53:- CLI entrypoint 변경 시 `cd apps/runner && dart run bin/main.dart --help`를 실행한다. +57:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +58:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/command-smoke.md +13:- `apps/runner/lib/oto/commands/**`, `apps/runner/lib/oto/data/**`, 또는 command template 변경 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_command_catalog_test.dart test/oto_command_runtime_test.dart` (또는 `make runner-test`) +48:- command 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- command 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. +50:- `@JsonSerializable` 모델을 추가/변경한 경우 `cd apps/runner && dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. +54:- 전체 command 회귀가 필요하면 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. +58:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +59:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/core-smoke.md +13:- `apps/runner/lib/oto/application.dart`, `apps/runner/lib/oto/core/**`, `apps/runner/lib/oto/utils/**`, 또는 core script helper 변경 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_application_test.dart test/oto_context_test.dart test/oto_core_test.dart test/oto_system_runtime_test.dart` (또는 `make runner-test`) +48:- core 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- core 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. +53:- runtime 전체 영향이 있으면 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. +57:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +58:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/framework-smoke.md +13:- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, 또는 `proto/**` 변경 검증이 필요한 경우 +39: - runner: `cd apps/runner && dart pub get` (또는 `make runner-get`) +40: - client: `cd apps/client && flutter pub get` (또는 `make client-get`) +41: - core: `cd services/core && go mod download` +43: - runner: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +44: - client: `cd apps/client && flutter analyze` (또는 `make client-analyze`) +46: - runner: `cd apps/runner && dart test` (또는 `make runner-test`) +47: - client: `cd apps/client && flutter test` (또는 `make client-test`) +48: - core: `cd services/core && go test ./...` (또는 `make core-test`) +57:- 각 패키지 도메인 변경 후 관련 `make runner-test`, `make client-test` 또는 `make core-test` 명령을 실행한다. +61:- JSON 생성 경계 변경 시 `cd apps/runner && dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. +agent-test/local/pipeline-smoke.md +13:- `apps/runner/lib/oto/pipeline/**` 또는 `apps/runner/lib/oto/data/pipeline_data.dart` 변경 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test` (또는 `make runner-test`) +48:- pipeline 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- pipeline 전용 테스트가 확인되지 않았으므로 변경 영향이 있는 경우 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. +57:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +58:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/rules.md +42:- **apps/runner** (Dart CLI runner): +43: - Setup: `make runner-get` 또는 `cd apps/runner && dart pub get` +44: - Lint: `make runner-analyze` 또는 `cd apps/runner && dart analyze` +45: - Test: `make runner-test` 또는 `cd apps/runner && dart test` +46:- **apps/client** (Flutter OTO client app): +47: - Setup: `make client-get` 또는 `cd apps/client && flutter pub get` +48: - Lint: `make client-analyze` 또는 `cd apps/client && flutter analyze` +49: - Test: `make client-test` 또는 `cd apps/client && flutter test` +50:- **services/core** (Go OTO Server): +51: - Test: `make core-test` 또는 `cd services/core && go test ./...` +agent-test/local/sample-smoke.md +13:- `apps/runner/assets/yaml/sample/**` 변경 또는 YAML sample 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_validate_cli_test.dart` (또는 `make runner-test`) +48:- sample 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- sample 검증 경로 변경 후 `cd apps/runner && dart test test/oto_validate_cli_test.dart`를 실행한다. +57:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +58:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +agent-test/local/scheduler-smoke.md +13:- `apps/runner/lib/cli/commands/scheduler/**` 또는 `apps/runner/lib/cli/commands/command_scheduler.dart` 변경 검증이 필요한 경우 +38:- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +39:- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +40:- unit: `cd apps/runner && dart test test/oto_scheduler_runtime_test.dart` (또는 `make runner-test`) +48:- scheduler 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +49:- scheduler 도메인 변경 후 `cd apps/runner && dart test test/oto_scheduler_runtime_test.dart`를 실행한다. +57:- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +58:- 지정한 `cd apps/runner && dart test`가 모두 통과한다. +Makefile +1:.PHONY: all setup test runner-get runner-analyze runner-test client-get client-analyze client-test core-test proto proto-go proto-dart +10: cd apps/runner && dart pub get +12:runner-analyze: +13: cd apps/runner && dart analyze +15:runner-test: +16: cd apps/runner && dart test +19: cd apps/client && flutter pub get +21:client-analyze: +22: cd apps/client && flutter analyze +24:client-test: +25: cd apps/client && flutter test +27:core-test: +28: cd services/core && go test ./... +33: mkdir -p services/core/oto +34: protoc -I proto --go_out=services/core --go_opt=paths=source_relative proto/oto/runner.proto +40: mkdir -p apps/runner/lib/oto/agent +41: protoc -I proto --dart_out=apps/runner/lib/oto/agent proto/oto/runner.proto +43:test: runner-test client-test core-test +``` + +### 최종 검증 +```bash +$ test -f agent-task/m-ops-rule-monorepo-alignment/01_domain_rules/complete.log || find agent-task/archive -path '*/m-ops-rule-monorepo-alignment/01_domain_rules/complete.log' -print -quit | grep -q . +# Exited with 0 (success). Found predecessor complete.log at: +# agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/01_domain_rules/complete.log + +$ rg --sort path -n 'lib/|bin/main|assets/' agent-test/local +agent-test/local/agent-smoke.md +13:- `apps/runner/lib/oto/agent/**`, `apps/runner/lib/cli/commands/command_agent.dart`, 또는 `apps/runner/assets/script/shell/oto_agent_bootstrap.sh` 변경 검증이 필요한 경우 +agent-test/local/cli-smoke.md +13:- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 resource importer 변경 검증이 필요한 경우 +41:- smoke: `cd apps/runner && dart run bin/main.dart --help` +53:- CLI entrypoint 변경 시 `cd apps/runner && dart run bin/main.dart --help`를 실행한다. +agent-test/local/command-smoke.md +13:- `apps/runner/lib/oto/commands/**`, `apps/runner/lib/oto/data/**`, 또는 command template 변경 검증이 필요한 경우 +agent-test/local/core-smoke.md +13:- `apps/runner/lib/oto/application.dart`, `apps/runner/lib/oto/core/**`, `apps/runner/lib/oto/utils/**`, 또는 core script helper 변경 검증이 필요한 경우 +agent-test/local/pipeline-smoke.md +13:- `apps/runner/lib/oto/pipeline/**` 또는 `apps/runner/lib/oto/data/pipeline_data.dart` 변경 검증이 필요한 경우 +agent-test/local/sample-smoke.md +13:- `apps/runner/assets/yaml/sample/**` 변경 또는 YAML sample 검증이 필요한 경우 +agent-test/local/scheduler-smoke.md +13:- `apps/runner/lib/cli/commands/scheduler/**` 또는 `apps/runner/lib/cli/commands/command_scheduler.dart` 변경 검증이 필요한 경우 + +$ rg --sort path -n 'runner-analyze|runner-test|client-analyze|client-test|core-test|apps/runner|apps/client|services/core|packages/flutter/oto_console' agent-test/local Makefile +[Output matches the RULES-2 intermediate verification output above] + +$ git diff --check +# Exited with 0 (no issues found). +``` + +--- + +> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?** +> If anything is blank, go back and fill it in before saving this file. +> Leave review-agent-only sections unchanged. + +## 코드리뷰 결과 + +- 종합 판정: FAIL +- 차원별 평가: + - correctness: Fail + - completeness: Fail + - test coverage: Pass + - API contract: Fail + - code quality: Pass + - plan deviation: Fail + - verification trust: Pass +- 발견된 문제: + - Required: `agent-test/local/framework-smoke.md:13`의 읽기 조건이 `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`을 빠뜨린다. `agent-test/local/rules.md:35`는 framework smoke가 analyzer options를 다룬다고 라우팅하고, `agent-ops/rules/project/rules.md:156` 및 `agent-ops/rules/project/rules.md:158`도 두 파일을 framework domain으로 매핑한다. 후속에서 framework smoke 읽기 조건에 두 analyzer option 경로를 추가한다. + - Required: `agent-test/local/framework-smoke.md:36` 이후 명령/필수 검증이 `proto/**` 변경을 읽기 조건에 넣어 두고도 `make proto`, `make proto-go`, `make proto-dart` 생성 검증 계약을 제공하지 않는다. `agent-test/local/rules.md:52`는 protobuf generate target을 local monorepo target으로 추가했고 `Makefile`에도 해당 target이 있으므로, 후속에서 framework smoke 명령/검증/판정 기준에 proto generation 경계를 명시한다. + - Suggested: `agent-test/local/cli-smoke.md:13`의 `resource importer` 표현은 정확한 모노레포 경로가 아니다. 후속에서 `apps/runner/lib/resources.resource_importer.dart`로 좁히면 project domain mapping과 더 잘 맞는다. +- 다음 단계: FAIL 후속 `PLAN-local-G05.md`와 `CODE_REVIEW-local-G05.md`를 작성한다. diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G05_1.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G05_1.log new file mode 100644 index 0000000..b4a64ce --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G05_1.log @@ -0,0 +1,196 @@ + + +# Code Review Reference - REVIEW_RULES + +> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.** +> The task is NOT complete until every implementation-owned section below is filled in. +> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving. +> Fill implementation-owned sections, then stop with active files in place and report ready for review. +> If implementation is blocked by a user-only decision, user-owned external environment prerequisite, or scope conflict, fill `사용자 리뷰 요청` with evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Evidence gaps that a follow-up agent can close by rerunning commands or collecting artifacts are normal follow-up issues, not user-review blockers by themselves. +> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record the needed decision in `사용자 리뷰 요청` and stop for code-review. +> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume. +> Follow the ownership table at the bottom of this file for which sections you own. + +## 개요 + +date=2026-06-07 +task=m-ops-rule-monorepo-alignment/02+01_test_rules, plan=1, tag=REVIEW_RULES + +## Roadmap Targets + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Task ids: + - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. +- Completion mode: check-on-pass + +## 이 파일을 읽는 리뷰 에이전트에게 + +> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다. + +각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요. +리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다. + +1. 판정을 append한다. +2. `CODE_REVIEW-local-G05.md` -> `code_review_local_G05_N.log`, `PLAN-local-G05.md` -> `plan_local_G05_M.log`로 아카이브한다. +3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다. +4. PASS이고 task group이 `m-`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다. +5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다. + +--- + +## 구현 항목별 완료 여부 + +| 항목 | 완료 여부 | +|------|---------| +| [REVIEW_RULES-1] Framework smoke routing and generation contract | [x] | + +## 구현 체크리스트 + +- [x] `agent-test/local/framework-smoke.md` 읽기 조건에 `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`을 추가하고, 적용 범위가 analyzer options와 protobuf contract를 함께 설명하도록 정리한다. +- [x] `agent-test/local/framework-smoke.md` 명령/검증/판정 기준에 `make proto`, `make proto-go`, `make proto-dart` 생성 검증 경계를 명시한다. +- [x] `agent-test/local/cli-smoke.md`의 `resource importer` 표현을 `apps/runner/lib/resources.resource_importer.dart`로 구체화한다. +- [x] `rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md` 결과로 라우팅/target 경계를 확인한다. +- [x] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. +- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. + +## 코드리뷰 전용 체크리스트 + +> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다. +> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다. + +- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다. +- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다. +- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_local_G05_N.log`로 아카이브한다. +- [x] active `PLAN-*-G??.md`를 `plan_local_G05_M.log`로 아카이브한다. +- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다. +- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다. +- [ ] PASS이면 active task 디렉터리 `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/`를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다. +- [ ] PASS이고 task group이 `m-`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다. +- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-ops-rule-monorepo-alignment/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다. +- [x] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-local-G06.md`와 `CODE_REVIEW-local-G06.md`를 작성하고 `complete.log`를 작성하지 않는다. +- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다. +- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다. + +## 계획 대비 변경 사항 + +- 없음. 계획된 사항대로 모두 정상적으로 수행됨. + +## 주요 설계 결정 + +- **analyzer_options.yaml 읽기 조건 반영**: 프레임워크 도메인 정의(analysis_options.yaml)와 정합하도록 `framework-smoke.md` 읽기 조건에 `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`을 추가하고, 적용 범위에도 `analyzer configuration (analyzer options)`를 명기함. +- **Protobuf 생성 타겟 계약 추가**: `proto/**` 읽기 조건에 대응하여 `Makefile` 내의 protobuf generation 타겟(`make proto`, `make proto-go`, `make proto-dart`)을 명령, 필수 검증, 판정 기준에 추가함. +- **Resource Importer 경로 절대화**: `cli-smoke.md` 파일의 resource importer 일반 명칭을 project domain mapping과 일치하는 `apps/runner/lib/resources.resource_importer.dart`로 세밀화함. + +## 사용자 리뷰 요청 + +_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다._ + +- 상태: 없음 +- 사유 유형: 없음 +- 결정 필요: 없음 +- 차단 근거: 없음 +- 실행한 검증/명령: 없음 +- 자동 후속 불가 이유: 없음 +- 재개 조건: 없음 + +## 리뷰어를 위한 체크포인트 + +- `framework-smoke.md` 읽기 조건이 local routing과 framework domain rule의 analyzer option 경로를 포함하는지 확인한다. +- `framework-smoke.md`가 `proto/**` 변경을 읽는 만큼 `make proto` 계열 생성 검증을 명령/검증/판정 기준 중 적절한 위치에 명시하는지 확인한다. +- `cli-smoke.md`의 resource importer 경로가 project domain mapping의 `apps/runner/lib/resources.resource_importer.dart`와 일치하는지 확인한다. + +## 검증 결과 + +### REVIEW_RULES-1 중간 검증 +```bash +$ rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md +agent-test/local/cli-smoke.md +13:- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 `apps/runner/lib/resources.resource_importer.dart` 변경 검증이 필요한 경우 +agent-test/local/framework-smoke.md +13:- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`, 또는 `proto/**` 변경 검증이 필요한 경우 +50: - all: `make proto` +51: - go: `make proto-go` +52: - dart: `make proto-dart` +62:- `proto/**` 변경 시 `make proto` (또는 `make proto-go`, `make proto-dart`)를 실행하고 생성된 파일(Go/Dart protobuf)이 올바르게 갱신되는지 확인한다. +72:- protobuf generation을 수행한 경우 생성 타겟(`make proto`, `make proto-go`, `make proto-dart`)이 오류 없이 정상 종료하며 파일 생성이 완료된다. + +agent-test/local/rules.md +53: - Generate: `make proto` (또는 `make proto-go`, `make proto-dart`) +Makefile +1:.PHONY: all setup test runner-get runner-analyze runner-test client-get client-analyze client-test core-test proto proto-go proto-dart +30:proto: proto-go proto-dart +32:proto-go: +36:proto-dart: +agent-ops/rules/project/rules.md +74:- protobuf 생성: `make proto-go`, `make proto-dart` +135:| `apps/runner/lib/resources.resource_importer.dart` | cli | `agent-ops/rules/project/domain/cli/rules.md` | +156:| `apps/runner/analysis_options.yaml` | framework | `agent-ops/rules/project/domain/framework/rules.md` | +158:| `apps/client/analysis_options.yaml` | framework | `agent-ops/rules/project/domain/framework/rules.md` | +agent-ops/rules/project/domain/framework/rules.md +18:- `apps/runner/analysis_options.yaml` — runner Dart analyzer/lint 기준 +20:- `apps/client/analysis_options.yaml` — Flutter client analyzer/lint 기준 +40:- `resource_importer` — `apps/runner/lib/resources.resource_importer.dart` 생성 파일과 asset 임베딩 설정 +48:- generated protobuf lint 예외는 `analysis_options.yaml`의 analyzer exclude 또는 파일 생성 주석으로 관리한다 + +agent-ops/rules/project/domain/cli/rules.md +30:- `apps/runner/lib/resources.resource_importer.dart` — 설치/패키징 asset용 `resource_importer` 생성 파일 +``` + +### 최종 검증 +```bash +$ rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md +agent-test/local/cli-smoke.md +13:- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 `apps/runner/lib/resources.resource_importer.dart` 변경 검증이 필요한 경우 +agent-test/local/framework-smoke.md +13:- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`, 또는 `proto/**` 변경 검증이 필요한 경우 +50: - all: `make proto` +51: - go: `make proto-go` +52: - dart: `make proto-dart` +62:- `proto/**` 변경 시 `make proto` (또는 `make proto-go`, `make proto-dart`)를 실행하고 생성된 파일(Go/Dart protobuf)이 올바르게 갱신되는지 확인한다. +72:- protobuf generation을 수행한 경우 생성 타겟(`make proto`, `make proto-go`, `make proto-dart`)이 오류 없이 정상 종료하며 파일 생성이 완료된다. + +agent-test/local/rules.md +53: - Generate: `make proto` (또는 `make proto-go`, `make proto-dart`) +Makefile +1:.PHONY: all setup test runner-get runner-analyze runner-test client-get client-analyze client-test core-test proto proto-go proto-dart +30:proto: proto-go proto-dart +32:proto-go: +36:proto-dart: +agent-ops/rules/project/rules.md +74:- protobuf 생성: `make proto-go`, `make proto-dart` +135:| `apps/runner/lib/resources.resource_importer.dart` | cli | `agent-ops/rules/project/domain/cli/rules.md` | +156:| `apps/runner/analysis_options.yaml` | framework | `agent-ops/rules/project/domain/framework/rules.md` | +158:| `apps/client/analysis_options.yaml` | framework | `agent-ops/rules/project/domain/framework/rules.md` | +agent-ops/rules/project/domain/framework/rules.md +18:- `apps/runner/analysis_options.yaml` — runner Dart analyzer/lint 기준 +20:- `apps/client/analysis_options.yaml` — Flutter client analyzer/lint 기준 +40:- `resource_importer` — `apps/runner/lib/resources.resource_importer.dart` 생성 파일과 asset 임베딩 설정 +48:- generated protobuf lint 예외는 `analysis_options.yaml`의 analyzer exclude 또는 파일 생성 주석으로 관리한다 + +agent-ops/rules/project/domain/cli/rules.md +30:- `apps/runner/lib/resources.resource_importer.dart` — 설치/패키징 asset용 `resource_importer` 생성 파일 + +$ git diff --check +# Exited with 0 (no issues found). +``` + +--- + +> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?** +> If anything is blank, go back and fill it in before saving this file. +> Leave review-agent-only sections unchanged. + +## 코드리뷰 결과 + +- 종합 판정: FAIL +- 차원별 평가: + - correctness: Fail + - completeness: Fail + - test coverage: Pass + - API contract: Fail + - code quality: Pass + - plan deviation: Pass + - verification trust: Pass +- 발견된 문제: + - Required: `agent-test/local/framework-smoke.md:13`은 `packages/flutter/oto_console/pubspec.yaml` 변경을 framework smoke 대상으로 라우팅하지만, `agent-test/local/framework-smoke.md:38`부터의 setup/lint/unit 명령과 `agent-test/local/framework-smoke.md:60`의 필수 검증에는 `packages/flutter/oto_console` package-local `flutter pub get`, `flutter analyze`, `flutter test`가 없다. 실제 workspace에는 `packages/flutter/oto_console/pubspec.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, `packages/flutter/oto_console/test/oto_console_test.dart`가 있으므로 console package manifest 변경을 읽어도 검증할 명령 계약이 비어 있다. 후속에서 `framework-smoke.md`와 `agent-test/local/rules.md`의 monorepo target 설명에 console package-local 검증 경계를 추가한다. +- 다음 단계: FAIL 후속 `PLAN-local-G06.md`와 `CODE_REVIEW-local-G06.md`를 작성한다. diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G06_2.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G06_2.log new file mode 100644 index 0000000..2b92bd9 --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G06_2.log @@ -0,0 +1,161 @@ + + +# Code Review Reference - REVIEW_REVIEW_RULES + +> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.** +> The task is NOT complete until every implementation-owned section below is filled in. +> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving. +> Fill implementation-owned sections, then stop with active files in place and report ready for review. +> If implementation is blocked by a user-only decision, user-owned external environment prerequisite, or scope conflict, fill `사용자 리뷰 요청` with evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Evidence gaps that a follow-up agent can close by rerunning commands or collecting artifacts are normal follow-up issues, not user-review blockers by themselves. +> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record the needed decision in `사용자 리뷰 요청` and stop for code-review. +> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume. +> Follow the ownership table at the bottom of this file for which sections you own. + +## 개요 + +date=2026-06-07 +task=m-ops-rule-monorepo-alignment/02+01_test_rules, plan=2, tag=REVIEW_REVIEW_RULES + +## Roadmap Targets + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Task ids: + - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. +- Completion mode: check-on-pass + +## 이 파일을 읽는 리뷰 에이전트에게 + +> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다. + +각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요. +리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다. + +1. 판정을 append한다. +2. `CODE_REVIEW-local-G06.md` -> `code_review_local_G06_N.log`, `PLAN-local-G06.md` -> `plan_local_G06_M.log`로 아카이브한다. +3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다. +4. PASS이고 task group이 `m-`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다. +5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다. + +--- + +## 구현 항목별 완료 여부 + +| 항목 | 완료 여부 | +|------|---------| +| [REVIEW_REVIEW_RULES-1] Console package local verification contract | [x] | + +## 구현 체크리스트 + +- [x] `agent-test/local/rules.md`의 Monorepo Targets에 `packages/flutter/oto_console` package-local setup/lint/test 명령을 추가한다. +- [x] `agent-test/local/framework-smoke.md` 읽기 조건과 명령/필수 검증/판정 기준에 `packages/flutter/oto_console` package-local setup/lint/test 경계를 추가한다. +- [x] `rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console` 결과로 console package 경계와 테스트 파일을 확인한다. +- [x] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. +- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. + +## 코드리뷰 전용 체크리스트 + +> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다. +> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다. + +- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다. +- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다. +- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_local_G06_N.log`로 아카이브한다. +- [x] active `PLAN-*-G??.md`를 `plan_local_G06_M.log`로 아카이브한다. +- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다. +- [x] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다. +- [x] PASS이면 active task 디렉터리 `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/`를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다. +- [x] PASS이고 task group이 `m-`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다. +- [x] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-ops-rule-monorepo-alignment/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다. +- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-local-G06.md`와 `CODE_REVIEW-local-G06.md`를 작성하고 `complete.log`를 작성하지 않는다. +- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다. +- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다. + +## 계획 대비 변경 사항 + +- 없음. 계획된 사항대로 모두 정상적으로 수행됨. + +## 주요 설계 결정 + +- **Console 패키지 타겟 추가**: `packages/flutter/oto_console` 변경 시 setup/lint/test가 가능하도록 `rules.md` 및 `framework-smoke.md`에 `flutter pub get`, `flutter analyze`, `flutter test` 명령 계약을 명문화하였습니다. +- **읽기 조건 추가**: framework domain rules에 매핑되는 `packages/flutter/oto_console/analysis_options.yaml` 또한 `framework-smoke.md` 읽기 조건에 포함시켰습니다. + +## 사용자 리뷰 요청 + +_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다._ + +- 상태: 없음 +- 사유 유형: 없음 +- 결정 필요: 없음 +- 차단 근거: 없음 +- 실행한 검증/명령: 없음 +- 자동 후속 불가 이유: 없음 +- 재개 조건: 없음 + +## 리뷰어를 위한 체크포인트 + +- `agent-test/local/rules.md`가 `packages/flutter/oto_console` package-local setup/lint/test 경계를 설명하는지 확인한다. +- `framework-smoke.md`가 console package manifest/analyzer option 변경을 읽고 `flutter pub get`, `flutter analyze`, `flutter test` package-local 명령을 제공하는지 확인한다. +- 새 Makefile target을 만들지 않고 기존 Makefile과 package-local 명령 관계가 명확한지 확인한다. + +## 검증 결과 + +### REVIEW_REVIEW_RULES-1 중간 검증 +```bash +$ rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console +agent-test/local/framework-smoke.md +13:- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, 또는 `proto/**` 변경 검증이 필요한 경우 +41: - console: `cd packages/flutter/oto_console && flutter pub get` +46: - console: `cd packages/flutter/oto_console && flutter analyze` +50: - console: `cd packages/flutter/oto_console && flutter test` +64:- 각 패키지 도메인 변경 후 관련 `make runner-test`, `make client-test`, `cd packages/flutter/oto_console && flutter test` 또는 `make core-test` 명령을 실행한다. +agent-test/local/rules.md +47: - Setup: `make client-get` 또는 `cd apps/client && flutter pub get` +48: - Lint: `make client-analyze` 또는 `cd apps/client && flutter analyze` +49: - Test: `make client-test` 또는 `cd apps/client && flutter test` +52:- **packages/flutter/oto_console** (Flutter OTO console package): +53: - Setup: `cd packages/flutter/oto_console && flutter pub get` +54: - Lint: `cd packages/flutter/oto_console && flutter analyze` +55: - Test: `cd packages/flutter/oto_console && flutter test` +``` + +### 최종 검증 +```bash +$ rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console +agent-test/local/framework-smoke.md +13:- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, 또는 `proto/**` 변경 검증이 필요한 경우 +41: - console: `cd packages/flutter/oto_console && flutter pub get` +46: - console: `cd packages/flutter/oto_console && flutter analyze` +50: - console: `cd packages/flutter/oto_console && flutter test` +64:- 각 패키지 도메인 변경 후 관련 `make runner-test`, `make client-test`, `cd packages/flutter/oto_console && flutter test` 또는 `make core-test` 명령을 실행한다. +agent-test/local/rules.md +47: - Setup: `make client-get` 또는 `cd apps/client && flutter pub get` +48: - Lint: `make client-analyze` 또는 `cd apps/client && flutter analyze` +49: - Test: `make client-test` 또는 `cd apps/client && flutter test` +52:- **packages/flutter/oto_console** (Flutter OTO console package): +53: - Setup: `cd packages/flutter/oto_console && flutter pub get` +54: - Lint: `cd packages/flutter/oto_console && flutter analyze` +55: - Test: `cd packages/flutter/oto_console && flutter test` + +$ git diff --check +# Exited with 0 (no issues found). +``` + +--- + +> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?** +> If anything is blank, go back and fill it in before saving this file. +> Leave review-agent-only sections unchanged. + +## 코드리뷰 결과 + +- 종합 판정: PASS +- 차원별 평가: + - correctness: Pass + - completeness: Pass + - test coverage: Pass + - API contract: Pass + - code quality: Pass + - plan deviation: Pass + - verification trust: Pass +- 발견된 문제: 없음 +- 다음 단계: PASS 종결. `complete.log`를 작성하고 task directory를 archive로 이동한다. diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/complete.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/complete.log new file mode 100644 index 0000000..fe62beb --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/complete.log @@ -0,0 +1,45 @@ +# Complete - m-ops-rule-monorepo-alignment/02+01_test_rules + +## 완료 일시 + +2026-06-07T08:54:12+09:00 + +## 요약 + +local test rule과 smoke 문서의 모노레포 target 정합화를 3회차 리뷰에서 PASS로 종결했다. + +## 루프 이력 + +| Plan | Review | Verdict | 메모 | +|------|--------|---------|------| +| `plan_local_G04_0.log` | `code_review_local_G04_0.log` | FAIL | framework smoke의 analyzer option/protobuf generation 계약 누락과 cli resource importer 경로 구체화 필요를 발견했다. | +| `plan_local_G05_1.log` | `code_review_local_G05_1.log` | FAIL | G04 Required/Suggested는 해소됐으나 console package-local 검증 계약 누락을 발견했다. | +| `plan_local_G06_2.log` | `code_review_local_G06_2.log` | PASS | console package-local setup/lint/test 검증 계약까지 반영되어 test rule 정합화가 완료됐다. | + +## 구현/정리 내용 + +- `agent-test/local/*-smoke.md`의 runner 관련 root 경로와 package-local 명령을 `apps/runner` 및 Makefile target 기준으로 정리했다. +- `agent-test/local/rules.md`에 runner, client, core, console package, protobuf의 local 검증 target 기준을 추가했다. +- `agent-test/local/framework-smoke.md`에 analyzer option, protobuf generation, `packages/flutter/oto_console` package-local setup/lint/test 검증 계약을 반영했다. +- `agent-test/local/cli-smoke.md`의 resource importer 읽기 조건을 `apps/runner/lib/resources.resource_importer.dart`로 구체화했다. + +## 최종 검증 + +- `rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console` - PASS; local rules와 framework smoke가 console package-local setup/lint/test 경계를 드러냈고, 보조 확인으로 `packages/flutter/oto_console/test/oto_console_test.dart` 존재를 확인했다. +- `test -f packages/flutter/oto_console/test/oto_console_test.dart && test -f packages/flutter/oto_console/pubspec.yaml && test -f packages/flutter/oto_console/analysis_options.yaml` - PASS; 출력 없음. +- `git diff --check` - PASS; 출력 없음. + +## Roadmap Completion + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Completed task ids: + - `test-rules`: PASS; evidence=`agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G06_2.log`, `agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G06_2.log`; verification=`rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console`, `git diff --check` +- Not completed task ids: 없음 + +## 잔여 Nit + +- 없음 + +## 후속 작업 + +- 없음 diff --git a/agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/PLAN-local-G04.md b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G04_0.log similarity index 100% rename from agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/PLAN-local-G04.md rename to agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G04_0.log diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G05_1.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G05_1.log new file mode 100644 index 0000000..bccfcfe --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G05_1.log @@ -0,0 +1,105 @@ + + +# Plan - REVIEW_RULES Local Test Rule Follow-up + +## 이 파일을 읽는 구현 에이전트에게 + +`CODE_REVIEW-local-G05.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채우는 것이 필수다. 구현 후 검증을 실행하고 active 파일을 그대로 둔 채 리뷰 준비를 보고한다. 최종 판정, log rename, `complete.log`, archive 이동은 code-review skill 책임이다. 사용자만 결정할 수 있는 차단, 사용자 소유 외부 환경, 범위 충돌이 생기면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 근거를 채우고 멈춘다. 구현 중 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해결할 수 있는 증거 공백은 사용자 리뷰 요청이 아니다. + +## 배경 + +1회차 리뷰는 local smoke 문서의 대부분이 모노레포 경로와 Makefile target으로 갱신되었음을 확인했지만, framework smoke의 라우팅/검증 계약에 두 가지 누락을 발견했다. `framework-smoke.md`는 `proto/**`를 읽기 조건에 포함하면서도 `make proto` 계열 생성 검증을 명령/검증 기준에 싣지 않았고, local routing과 domain rule이 framework로 매핑하는 analyzer option 파일을 읽기 조건에서 빠뜨렸다. 또한 `cli-smoke.md`의 resource importer 표현은 모노레포 절대 경로로 좁히면 project domain mapping과 더 일치한다. + +## 사용자 리뷰 요청 흐름 + +구현 중 차단은 active `CODE_REVIEW-local-G05.md`의 `사용자 리뷰 요청` 섹션에 기록한다. 직접 사용자 프롬프트는 금지하며, code-review가 요청 타당성을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 결정한다. + +## Roadmap Targets + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Task ids: + - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. +- Completion mode: check-on-pass + +## 리뷰 근거 + +- Archived plan: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G04_0.log` +- Archived review: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G04_0.log` +- Verdict: FAIL +- Required: + - `agent-test/local/framework-smoke.md:13` 읽기 조건에 analyzer option 경로가 없다. + - `agent-test/local/framework-smoke.md:36` 이후 명령/필수 검증에 `proto/**` 변경용 protobuf generation target이 없다. +- Suggested: + - `agent-test/local/cli-smoke.md:13`의 `resource importer` 표현을 정확한 경로로 좁힌다. + +## 범위 결정 근거 + +- production code, unit test, `docs/`, archive 문서는 수정하지 않는다. +- `framework-smoke.md`, `cli-smoke.md`의 local 테스트 규칙 문서만 보정한다. +- 현재 결함은 user-owned 결정이나 환경 문제가 아니며, 후속 에이전트가 repo 문서와 Makefile을 근거로 결정적으로 수정할 수 있다. + +## 빌드 등급 + +- `local-G05`: 1회차 리뷰 FAIL 후속이지만 결함은 좁고 deterministic한 문서 계약 누락이다. local에서 충분히 검토 가능하되, 누락된 routing/verification 계약을 더 엄밀히 확인한다. + +## 구현 체크리스트 + +- [ ] `agent-test/local/framework-smoke.md` 읽기 조건에 `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`을 추가하고, 적용 범위가 analyzer options와 protobuf contract를 함께 설명하도록 정리한다. +- [ ] `agent-test/local/framework-smoke.md` 명령/검증/판정 기준에 `make proto`, `make proto-go`, `make proto-dart` 생성 검증 경계를 명시한다. +- [ ] `agent-test/local/cli-smoke.md`의 `resource importer` 표현을 `apps/runner/lib/resources.resource_importer.dart`로 구체화한다. +- [ ] `rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md` 결과로 라우팅/target 경계를 확인한다. +- [ ] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. +- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. + +### [REVIEW_RULES-1] Framework smoke routing and generation contract + +#### 문제 + +`agent-test/local/framework-smoke.md:13`은 framework smoke 읽기 조건에 `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `proto/**`만 포함한다. 하지만 `agent-test/local/rules.md`는 framework smoke가 analyzer options를 다룬다고 말하고, project/domain rule은 `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`도 framework domain에 포함한다. + +같은 파일은 `proto/**`를 읽기 조건에 포함하지만 `Makefile`의 `proto`, `proto-go`, `proto-dart` target을 검증 명령이나 판정 기준에 연결하지 않는다. + +#### 해결 방법 + +`framework-smoke.md`를 다음 의미로 보정한다. + +- 읽기 조건: runner/client manifest, runner/client analyzer options, console manifest, core `go.mod`, `proto/**` +- 명령/검증: package setup/analyze/test와 함께 protobuf generation target을 명시 +- 판정 기준: proto 변경 검증을 수행한 경우 생성 target이 성공해야 함을 명시 + +`cli-smoke.md`의 resource importer는 project domain mapping과 같은 `apps/runner/lib/resources.resource_importer.dart`로 표기한다. + +#### 수정 파일 + +| 파일 | 처리 | +|------|------| +| `agent-test/local/framework-smoke.md` | analyzer option 읽기 조건과 protobuf generation 검증 계약 보정 | +| `agent-test/local/cli-smoke.md` | resource importer 경로 구체화 | + +#### 테스트 작성 + +문서 라우팅 정리이므로 unit test는 작성하지 않는다. + +#### 중간 검증 + +```bash +rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md +``` + +예상: framework smoke가 analyzer option 경로와 protobuf generation target을 모두 드러내고, cli smoke가 resource importer의 실제 경로를 드러낸다. + +## 수정 파일 요약 + +| 파일 | 항목 | +|------|------| +| `agent-test/local/framework-smoke.md` | REVIEW_RULES-1 | +| `agent-test/local/cli-smoke.md` | REVIEW_RULES-1 | + +## 최종 검증 + +```bash +rg --sort path -n 'analysis_options|make proto|proto-go|proto-dart|apps/runner/lib/resources.resource_importer.dart' agent-test/local Makefile agent-ops/rules/project/rules.md agent-ops/rules/project/domain/framework/rules.md agent-ops/rules/project/domain/cli/rules.md +git diff --check +``` + +모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다. diff --git a/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G06_2.log b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G06_2.log new file mode 100644 index 0000000..2edfbca --- /dev/null +++ b/agent-task/archive/2026/06/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G06_2.log @@ -0,0 +1,101 @@ + + +# Plan - REVIEW_REVIEW_RULES Console Package Test Rule Follow-up + +## 이 파일을 읽는 구현 에이전트에게 + +`CODE_REVIEW-local-G06.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채우는 것이 필수다. 구현 후 검증을 실행하고 active 파일을 그대로 둔 채 리뷰 준비를 보고한다. 최종 판정, log rename, `complete.log`, archive 이동은 code-review skill 책임이다. 사용자만 결정할 수 있는 차단, 사용자 소유 외부 환경, 범위 충돌이 생기면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 근거를 채우고 멈춘다. 구현 중 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해결할 수 있는 증거 공백은 사용자 리뷰 요청이 아니다. + +## 배경 + +2회차 리뷰는 G04에서 발견된 analyzer option/protobuf/resource importer 계약 누락이 해소되었음을 확인했다. 다만 `framework-smoke.md`는 `packages/flutter/oto_console/pubspec.yaml` 변경을 framework smoke 대상으로 라우팅하면서도 console package-local setup/lint/test 명령을 제공하지 않는다. 실제 workspace에는 `packages/flutter/oto_console/pubspec.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, `packages/flutter/oto_console/test/oto_console_test.dart`가 있으므로 console package manifest 또는 analyzer option 변경 시 실행할 local 검증 계약이 필요하다. + +## 사용자 리뷰 요청 흐름 + +구현 중 차단은 active `CODE_REVIEW-local-G06.md`의 `사용자 리뷰 요청` 섹션에 기록한다. 직접 사용자 프롬프트는 금지하며, code-review가 요청 타당성을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 결정한다. + +## Roadmap Targets + +- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` +- Task ids: + - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. +- Completion mode: check-on-pass + +## 리뷰 근거 + +- Archived plan: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G05_1.log` +- Archived review: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G05_1.log` +- Verdict: FAIL +- Required: + - `framework-smoke.md`와 local monorepo target 설명이 `packages/flutter/oto_console` package-local setup/lint/test 검증 계약을 제공하지 않는다. + +## 범위 결정 근거 + +- production code, unit test, `docs/`, archive 문서는 수정하지 않는다. +- `agent-test/local/rules.md`와 `agent-test/local/framework-smoke.md`의 local 테스트 규칙만 보정한다. +- Makefile에 console target이 없는 상태이므로 새 Makefile target을 만들지 않고 package-local 명령을 명시한다. +- project/domain rule 갱신은 이 task의 범위를 넘기므로 수행하지 않는다. 다만 local smoke 읽기 조건은 실제 console package 검증을 위해 `packages/flutter/oto_console/analysis_options.yaml`도 함께 드러낼 수 있다. + +## 빌드 등급 + +- `local-G06`: 반복 후속이지만 변경 범위는 local test rule 문서 두 파일이고, 검증은 deterministic한 검색과 whitespace 검사로 충분하다. + +## 구현 체크리스트 + +- [ ] `agent-test/local/rules.md`의 Monorepo Targets에 `packages/flutter/oto_console` package-local setup/lint/test 명령을 추가한다. +- [ ] `agent-test/local/framework-smoke.md` 읽기 조건과 명령/필수 검증/판정 기준에 `packages/flutter/oto_console` package-local setup/lint/test 경계를 추가한다. +- [ ] `rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console` 결과로 console package 경계와 테스트 파일을 확인한다. +- [ ] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. +- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. + +### [REVIEW_REVIEW_RULES-1] Console package local verification contract + +#### 문제 + +`agent-test/local/framework-smoke.md`는 `packages/flutter/oto_console/pubspec.yaml` 변경을 읽기 조건으로 라우팅하지만, `packages/flutter/oto_console` package-local `flutter pub get`, `flutter analyze`, `flutter test` 명령을 제공하지 않는다. `agent-test/local/rules.md`의 Monorepo Targets에도 runner/client/core/protobuf만 있고 console package가 없다. + +#### 해결 방법 + +`agent-test/local/rules.md`에 console package-local target 설명을 추가한다. + +`agent-test/local/framework-smoke.md`는 console package manifest/analyzer option 변경을 읽고 다음 의미를 드러내도록 보정한다. + +- setup: `cd packages/flutter/oto_console && flutter pub get` +- lint: `cd packages/flutter/oto_console && flutter analyze` +- unit: `cd packages/flutter/oto_console && flutter test` +- 필수 검증과 판정 기준이 console package-local 명령에도 적용됨을 명시 + +#### 수정 파일 + +| 파일 | 처리 | +|------|------| +| `agent-test/local/rules.md` | console package-local target 설명 추가 | +| `agent-test/local/framework-smoke.md` | console package read condition 및 검증 명령 추가 | + +#### 테스트 작성 + +문서 라우팅 정리이므로 unit test는 작성하지 않는다. + +#### 중간 검증 + +```bash +rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console +``` + +예상: local rules와 framework smoke가 console package-local setup/lint/test 경계를 드러내고, `packages/flutter/oto_console/test/oto_console_test.dart`가 실제 테스트 파일로 확인된다. + +## 수정 파일 요약 + +| 파일 | 항목 | +|------|------| +| `agent-test/local/rules.md` | REVIEW_REVIEW_RULES-1 | +| `agent-test/local/framework-smoke.md` | REVIEW_REVIEW_RULES-1 | + +## 최종 검증 + +```bash +rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console +git diff --check +``` + +모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다. diff --git a/agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/CODE_REVIEW-local-G04.md b/agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/CODE_REVIEW-local-G04.md deleted file mode 100644 index 1be2053..0000000 --- a/agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/CODE_REVIEW-local-G04.md +++ /dev/null @@ -1,140 +0,0 @@ - - -# Code Review Reference - RULES - -> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.** -> The task is NOT complete until every implementation-owned section below is filled in. -> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving. -> Fill implementation-owned sections, then stop with active files in place and report ready for review. -> If implementation is blocked by a user-only decision, user-owned external environment prerequisite, or scope conflict, fill `사용자 리뷰 요청` with evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Evidence gaps that a follow-up agent can close by rerunning commands or collecting artifacts are normal follow-up issues, not user-review blockers by themselves. -> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record the needed decision in `사용자 리뷰 요청` and stop for code-review. -> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume. -> Follow the ownership table at the bottom of this file for which sections you own. - -## 개요 - -date=2026-06-07 -task=m-ops-rule-monorepo-alignment/02+01_test_rules, plan=0, tag=RULES - -## Roadmap Targets - -- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md` -- Task ids: - - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다. -- Completion mode: check-on-pass - -## 이 파일을 읽는 리뷰 에이전트에게 - -> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다. - -각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요. -리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다. - -1. 판정을 append한다. -2. `CODE_REVIEW-local-G04.md` -> `code_review_local_G04_N.log`, `PLAN-local-G04.md` -> `plan_local_G04_M.log`로 아카이브한다. -3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다. -4. PASS이고 task group이 `m-`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다. -5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다. - ---- - -## 구현 항목별 완료 여부 - -| 항목 | 완료 여부 | -|------|---------| -| [RULES-1] Local smoke read conditions and commands | [ ] | -| [RULES-2] Local routing and monorepo target consistency | [ ] | - -## 구현 체크리스트 - -- [ ] predecessor `01_domain_rules`의 `complete.log`가 active 또는 archive 경로에 있는지 확인하고 없으면 구현을 시작하지 않고 review stub의 사용자 리뷰 요청이 아니라 dependency 미충족으로 기록한다. -- [ ] `agent-test/local/*-smoke.md`의 읽기 조건을 `apps/runner/...` 경로로 갱신하고, package-local 명령은 working directory 또는 `make` target 의미가 분명하게 보이도록 정리한다. -- [ ] `agent-test/local/rules.md`의 라우팅 설명이 runner/client/core package target과 충돌하지 않는지 확인한다. -- [ ] `rg --sort path -n 'lib/|bin/main|assets/' agent-test/local` 결과의 남은 항목이 모두 의도된 예외인지 확인한다. -- [ ] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다. -- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다. - -## 코드리뷰 전용 체크리스트 - -> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다. -> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다. - -- [ ] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다. -- [ ] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다. -- [ ] active `CODE_REVIEW-*-G??.md`를 `code_review_local_G04_N.log`로 아카이브한다. -- [ ] active `PLAN-*-G??.md`를 `plan_local_G04_M.log`로 아카이브한다. -- [ ] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다. -- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다. -- [ ] PASS이면 active task 디렉터리 `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/`를 `agent-task/archive/YYYY/MM/m-ops-rule-monorepo-alignment/02+01_test_rules/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다. -- [ ] PASS이고 task group이 `m-`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다. -- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-ops-rule-monorepo-alignment/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다. -- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-local-G04.md`와 `CODE_REVIEW-local-G04.md`를 작성하고 `complete.log`를 작성하지 않는다. -- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다. -- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다. - -## 계획 대비 변경 사항 - -_구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._ - -## 주요 설계 결정 - -_구현 에이전트가 주요 설계 결정 사항을 기록한다._ - -## 사용자 리뷰 요청 - -_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다._ - -- 상태: 없음 -- 사유 유형: 없음 -- 결정 필요: 없음 -- 차단 근거: 없음 -- 실행한 검증/명령: 없음 -- 자동 후속 불가 이유: 없음 -- 재개 조건: 없음 - -## 리뷰어를 위한 체크포인트 - -- predecessor `01_domain_rules` 완료 근거 없이 구현이 시작되지 않았는지 확인한다. -- local smoke read condition이 domain rule 경로와 같은 모노레포 prefix를 쓰는지 확인한다. -- `Makefile` target과 smoke 문서의 명령 의미가 충돌하지 않는지 확인한다. - -## 검증 결과 - -_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._ - -필수 규칙: -- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다. -- 대체가 필요하면 `계획 대비 변경 사항`에 이유와 대체 명령을 기록한다. -- `검증 결과`에는 실제 stdout/stderr를 붙여 넣는다. -- 사용자 리뷰 요청으로 명령을 끝까지 실행하지 못했다면 `사용자 리뷰 요청`에 실행한 명령, 실제 출력, 미실행 명령의 사유를 기록한다. -- mobile/UI hang, timeout, 또는 2분 무진행은 blind retry를 중단하고 focused rerun 명령과 screenshot/window/UI-tree evidence path를 남기며, 불가능하면 정확한 사유를 남긴다. - -### RULES-1 중간 검증 -```bash -$ rg --sort path -n 'lib/|bin/main|assets/' agent-test/local -(output) -``` - -### RULES-2 중간 검증 -```bash -$ rg --sort path -n 'runner-analyze|runner-test|client-analyze|client-test|core-test|apps/runner|apps/client|services/core|packages/flutter/oto_console' agent-test/local Makefile -(output) -``` - -### 최종 검증 -```bash -$ test -f agent-task/m-ops-rule-monorepo-alignment/01_domain_rules/complete.log || find agent-task/archive -path '*/m-ops-rule-monorepo-alignment/01_domain_rules/complete.log' -print -quit | grep -q . -(output) -$ rg --sort path -n 'lib/|bin/main|assets/' agent-test/local -(output) -$ rg --sort path -n 'runner-analyze|runner-test|client-analyze|client-test|core-test|apps/runner|apps/client|services/core|packages/flutter/oto_console' agent-test/local Makefile -(output) -$ git diff --check -(output) -``` - ---- - -> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?** -> If anything is blank, go back and fill it in before saving this file. -> Leave review-agent-only sections unchanged. diff --git a/agent-test/local/agent-smoke.md b/agent-test/local/agent-smoke.md index d920d92..6974c91 100644 --- a/agent-test/local/agent-smoke.md +++ b/agent-test/local/agent-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `lib/oto/agent/**`, `lib/cli/commands/command_agent.dart`, 또는 `assets/script/shell/oto_agent_bootstrap.sh` 변경 검증이 필요한 경우 +- `apps/runner/lib/oto/agent/**`, `apps/runner/lib/cli/commands/command_agent.dart`, 또는 `apps/runner/assets/script/shell/oto_agent_bootstrap.sh` 변경 검증이 필요한 경우 ## 적용 범위 @@ -36,9 +36,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_agent_migration_plan_test.dart test/oto_agent_bootstrap_script_test.dart test/oto_agent_cli_test.dart test/oto_agent_config_test.dart test/oto_agent_registration_test.dart test/oto_server_connection_smoke_test.dart` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_agent_migration_plan_test.dart test/oto_agent_bootstrap_script_test.dart test/oto_agent_cli_test.dart test/oto_agent_config_test.dart test/oto_agent_registration_test.dart test/oto_server_connection_smoke_test.dart` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -46,17 +46,17 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- agent 도메인 변경 후 `dart analyze`를 실행한다. -- agent 도메인 변경 후 agent 관련 `dart test` 명령을 실행한다. +- agent 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- agent 도메인 변경 후 agent 관련 `cd apps/runner && dart test ...` 명령을 실행한다. ## 보조 검증 -- 전체 회귀가 필요한 경우 `dart test`를 실행한다. +- 전체 회귀가 필요한 경우 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. ## 판정 기준 -- `dart analyze`가 issue 없이 종료한다. -- 지정한 `dart test`가 모두 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. ## 기준 출력 예시 diff --git a/agent-test/local/cli-smoke.md b/agent-test/local/cli-smoke.md index 6e405a5..e9a4c2b 100644 --- a/agent-test/local/cli-smoke.md +++ b/agent-test/local/cli-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `bin/main.dart`, `lib/cli/**`, `assets/script/**`, `assets/bin/**`, `assets/package/**`, 또는 resource importer 변경 검증이 필요한 경우 +- `apps/runner/bin/main.dart`, `apps/runner/lib/cli/**`, `apps/runner/assets/script/**`, `apps/runner/assets/bin/**`, `apps/runner/assets/package/**`, 또는 `apps/runner/lib/resources.resource_importer.dart` 변경 검증이 필요한 경우 ## 적용 범위 @@ -35,26 +35,27 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_cli_runtime_test.dart test/oto_catalog_cli_test.dart test/oto_validate_cli_test.dart` -- smoke: `dart run bin/main.dart --help` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_cli_runtime_test.dart test/oto_catalog_cli_test.dart test/oto_validate_cli_test.dart` (또는 `make runner-test`) +- smoke: `cd apps/runner && dart run bin/main.dart --help` - e2e: - model: - full-cycle: ## 필수 검증 -- CLI 도메인 변경 후 `dart analyze`를 실행한다. -- CLI 도메인 변경 후 관련 `dart test` 명령을 실행한다. +- CLI 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- CLI 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. ## 보조 검증 -- CLI entrypoint 변경 시 `dart run bin/main.dart --help`를 실행한다. +- CLI entrypoint 변경 시 `cd apps/runner && dart run bin/main.dart --help`를 실행한다. ## 판정 기준 -- analyzer issue가 없고 지정 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. - help smoke는 정상 종료하거나 현재 CLI가 정의한 도움말/사용법 출력을 낸다. ## 기준 출력 예시 diff --git a/agent-test/local/command-smoke.md b/agent-test/local/command-smoke.md index a1e55b3..1b174ab 100644 --- a/agent-test/local/command-smoke.md +++ b/agent-test/local/command-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `lib/oto/commands/**`, `lib/oto/data/**`, 또는 command template 변경 검증이 필요한 경우 +- `apps/runner/lib/oto/commands/**`, `apps/runner/lib/oto/data/**`, 또는 command template 변경 검증이 필요한 경우 ## 적용 범위 @@ -35,9 +35,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_command_catalog_test.dart test/oto_command_runtime_test.dart` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_command_catalog_test.dart test/oto_command_runtime_test.dart` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -45,17 +45,18 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- command 도메인 변경 후 `dart analyze`를 실행한다. -- command 도메인 변경 후 관련 `dart test` 명령을 실행한다. -- `@JsonSerializable` 모델을 추가/변경한 경우 `dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. +- command 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- command 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. +- `@JsonSerializable` 모델을 추가/변경한 경우 `cd apps/runner && dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. ## 보조 검증 -- 전체 command 회귀가 필요하면 `dart test`를 실행한다. +- 전체 command 회귀가 필요하면 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. ## 판정 기준 -- analyzer issue가 없고 지정 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. - 생성 코드가 필요한 변경은 generated file과 source가 일치한다. ## 기준 출력 예시 diff --git a/agent-test/local/core-smoke.md b/agent-test/local/core-smoke.md index ba271ad..28aa09e 100644 --- a/agent-test/local/core-smoke.md +++ b/agent-test/local/core-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `lib/oto/application.dart`, `lib/oto/core/**`, `lib/oto/utils/**`, 또는 core script helper 변경 검증이 필요한 경우 +- `apps/runner/lib/oto/application.dart`, `apps/runner/lib/oto/core/**`, `apps/runner/lib/oto/utils/**`, 또는 core script helper 변경 검증이 필요한 경우 ## 적용 범위 @@ -35,9 +35,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_application_test.dart test/oto_context_test.dart test/oto_core_test.dart test/oto_system_runtime_test.dart` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_application_test.dart test/oto_context_test.dart test/oto_core_test.dart test/oto_system_runtime_test.dart` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -45,16 +45,17 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- core 도메인 변경 후 `dart analyze`를 실행한다. -- core 도메인 변경 후 관련 `dart test` 명령을 실행한다. +- core 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- core 도메인 변경 후 관련 `cd apps/runner && dart test ...` 명령을 실행한다. ## 보조 검증 -- runtime 전체 영향이 있으면 `dart test`를 실행한다. +- runtime 전체 영향이 있으면 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. ## 판정 기준 -- analyzer issue가 없고 지정 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. ## 기준 출력 예시 diff --git a/agent-test/local/framework-smoke.md b/agent-test/local/framework-smoke.md index a1ecb75..7a1d3fc 100644 --- a/agent-test/local/framework-smoke.md +++ b/agent-test/local/framework-smoke.md @@ -10,11 +10,11 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `pubspec.yaml`, `analysis_options.yaml`, dependency, analyzer, build_runner 경계 변경 검증이 필요한 경우 +- `apps/runner/pubspec.yaml`, `apps/client/pubspec.yaml`, `packages/flutter/oto_console/pubspec.yaml`, `services/core/go.mod`, `apps/runner/analysis_options.yaml`, `apps/client/analysis_options.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, 또는 `proto/**` 변경 검증이 필요한 경우 ## 적용 범위 -- Dart package manifest, analyzer configuration, dependency resolution +- Dart package manifest, analyzer configuration (analyzer options), dependency resolution, and protobuf contract generation ## 분류 @@ -35,9 +35,24 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test` +- setup: + - runner: `cd apps/runner && dart pub get` (또는 `make runner-get`) + - client: `cd apps/client && flutter pub get` (또는 `make client-get`) + - console: `cd packages/flutter/oto_console && flutter pub get` + - core: `cd services/core && go mod download` +- lint: + - runner: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) + - client: `cd apps/client && flutter analyze` (또는 `make client-analyze`) + - console: `cd packages/flutter/oto_console && flutter analyze` +- unit: + - runner: `cd apps/runner && dart test` (또는 `make runner-test`) + - client: `cd apps/client && flutter test` (또는 `make client-test`) + - console: `cd packages/flutter/oto_console && flutter test` + - core: `cd services/core && go test ./...` (또는 `make core-test`) +- proto-gen: + - all: `make proto` + - go: `make proto-go` + - dart: `make proto-dart` - smoke: - e2e: - model: @@ -45,18 +60,19 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- framework 도메인 변경 후 `dart pub get`가 필요한지 판단하고 실행 또는 생략 사유를 보고한다. -- framework 도메인 변경 후 `dart analyze`를 실행한다. -- test/runtime 영향이 있으면 `dart test`를 실행한다. +- framework 도메인 변경 후 패키지별 setup/analyze를 실행하고 결과를 확인한다. +- 각 패키지 도메인 변경 후 관련 `make runner-test`, `make client-test`, `cd packages/flutter/oto_console && flutter test` 또는 `make core-test` 명령을 실행한다. +- `proto/**` 변경 시 `make proto` (또는 `make proto-go`, `make proto-dart`)를 실행하고 생성된 파일(Go/Dart protobuf)이 올바르게 갱신되는지 확인한다. ## 보조 검증 -- JSON 생성 경계 변경 시 `dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. +- JSON 생성 경계 변경 시 `cd apps/runner && dart run build_runner build`를 실행하거나 생성물 갱신 필요를 보고한다. ## 판정 기준 -- dependency resolution이 성공하고 analyzer issue가 없다. +- 각 패키지의 dependency resolution이 성공하고 analyzer issue가 없다. - 실행한 테스트가 모두 통과한다. +- protobuf generation을 수행한 경우 생성 타겟(`make proto`, `make proto-go`, `make proto-dart`)이 오류 없이 정상 종료하며 파일 생성이 완료된다. ## 기준 출력 예시 diff --git a/agent-test/local/pipeline-smoke.md b/agent-test/local/pipeline-smoke.md index 596faad..5c9e4f4 100644 --- a/agent-test/local/pipeline-smoke.md +++ b/agent-test/local/pipeline-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `lib/oto/pipeline/**` 또는 `lib/oto/data/pipeline_data.dart` 변경 검증이 필요한 경우 +- `apps/runner/lib/oto/pipeline/**` 또는 `apps/runner/lib/oto/data/pipeline_data.dart` 변경 검증이 필요한 경우 ## 적용 범위 @@ -35,9 +35,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -45,8 +45,8 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- pipeline 도메인 변경 후 `dart analyze`를 실행한다. -- pipeline 전용 테스트가 확인되지 않았으므로 변경 영향이 있는 경우 `dart test` 전체 회귀를 실행한다. +- pipeline 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- pipeline 전용 테스트가 확인되지 않았으므로 변경 영향이 있는 경우 `cd apps/runner && dart test` 또는 `make runner-test`를 실행한다. ## 보조 검증 @@ -54,7 +54,8 @@ last_rule_updated_at: 2026-06-05 ## 판정 기준 -- analyzer issue가 없고 전체 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. ## 기준 출력 예시 diff --git a/agent-test/local/rules.md b/agent-test/local/rules.md index b72167b..18a5c76 100644 --- a/agent-test/local/rules.md +++ b/agent-test/local/rules.md @@ -37,6 +37,25 @@ last_rule_updated_at: 2026-06-05 - sample / smoke / sample YAML and template-facing examples: `agent-test/local/sample-smoke.md` - scheduler / smoke / scheduler CLI and runtime: `agent-test/local/scheduler-smoke.md` +## 패키지 및 Makefile 대상 (Monorepo Targets) + +- **apps/runner** (Dart CLI runner): + - Setup: `make runner-get` 또는 `cd apps/runner && dart pub get` + - Lint: `make runner-analyze` 또는 `cd apps/runner && dart analyze` + - Test: `make runner-test` 또는 `cd apps/runner && dart test` +- **apps/client** (Flutter OTO client app): + - Setup: `make client-get` 또는 `cd apps/client && flutter pub get` + - Lint: `make client-analyze` 또는 `cd apps/client && flutter analyze` + - Test: `make client-test` 또는 `cd apps/client && flutter test` +- **services/core** (Go OTO Server): + - Test: `make core-test` 또는 `cd services/core && go test ./...` +- **packages/flutter/oto_console** (Flutter OTO console package): + - Setup: `cd packages/flutter/oto_console && flutter pub get` + - Lint: `cd packages/flutter/oto_console && flutter analyze` + - Test: `cd packages/flutter/oto_console && flutter test` +- **protobuf** (proto contract): + - Generate: `make proto` (또는 `make proto-go`, `make proto-dart`) + ## 라우팅 규칙 - 여러 항목이 맞으면 모두 읽는다. diff --git a/agent-test/local/sample-smoke.md b/agent-test/local/sample-smoke.md index 75ae1c2..b4ba5f9 100644 --- a/agent-test/local/sample-smoke.md +++ b/agent-test/local/sample-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `assets/yaml/sample/**` 변경 또는 YAML sample 검증이 필요한 경우 +- `apps/runner/assets/yaml/sample/**` 변경 또는 YAML sample 검증이 필요한 경우 ## 적용 범위 @@ -35,9 +35,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_validate_cli_test.dart` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_validate_cli_test.dart` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -45,8 +45,8 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- sample 도메인 변경 후 `dart analyze`를 실행한다. -- sample 검증 경로 변경 후 `dart test test/oto_validate_cli_test.dart`를 실행한다. +- sample 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- sample 검증 경로 변경 후 `cd apps/runner && dart test test/oto_validate_cli_test.dart`를 실행한다. ## 보조 검증 @@ -54,7 +54,8 @@ last_rule_updated_at: 2026-06-05 ## 판정 기준 -- analyzer issue가 없고 validate CLI 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. ## 기준 출력 예시 diff --git a/agent-test/local/scheduler-smoke.md b/agent-test/local/scheduler-smoke.md index 82f98a0..43af9bf 100644 --- a/agent-test/local/scheduler-smoke.md +++ b/agent-test/local/scheduler-smoke.md @@ -10,7 +10,7 @@ last_rule_updated_at: 2026-06-05 ## 읽기 조건 -- `lib/cli/commands/scheduler/**` 또는 `lib/cli/commands/command_scheduler.dart` 변경 검증이 필요한 경우 +- `apps/runner/lib/cli/commands/scheduler/**` 또는 `apps/runner/lib/cli/commands/command_scheduler.dart` 변경 검증이 필요한 경우 ## 적용 범위 @@ -35,9 +35,9 @@ last_rule_updated_at: 2026-06-05 ## 명령 -- setup: `dart pub get` -- lint: `dart analyze` -- unit: `dart test test/oto_scheduler_runtime_test.dart` +- setup: `cd apps/runner && dart pub get` (또는 `make runner-get`) +- lint: `cd apps/runner && dart analyze` (또는 `make runner-analyze`) +- unit: `cd apps/runner && dart test test/oto_scheduler_runtime_test.dart` (또는 `make runner-test`) - smoke: - e2e: - model: @@ -45,8 +45,8 @@ last_rule_updated_at: 2026-06-05 ## 필수 검증 -- scheduler 도메인 변경 후 `dart analyze`를 실행한다. -- scheduler 도메인 변경 후 `dart test test/oto_scheduler_runtime_test.dart`를 실행한다. +- scheduler 도메인 변경 후 `cd apps/runner && dart analyze`를 실행한다. +- scheduler 도메인 변경 후 `cd apps/runner && dart test test/oto_scheduler_runtime_test.dart`를 실행한다. ## 보조 검증 @@ -54,7 +54,8 @@ last_rule_updated_at: 2026-06-05 ## 판정 기준 -- analyzer issue가 없고 scheduler 테스트가 통과한다. +- `cd apps/runner && dart analyze`가 issue 없이 종료한다. +- 지정한 `cd apps/runner && dart test`가 모두 통과한다. ## 기준 출력 예시