Control Plane HTTP API가 fleet polling과 client 상태 확장 전에 더 커지지 않도록 server lifecycle, DTO conversion, Edge/fleet handler 책임을 파일 단위로 나눈다.
11 KiB
Code Review Reference - REFACTOR
[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 writeUSER_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 callrequest_user_inputduring 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-06 task=m-architecture-refactor-foundation/08_client_state_split, plan=0, tag=REFACTOR
Roadmap Targets
- Milestone:
agent-roadmap/phase/automation-runtime-bridge/milestones/architecture-refactor-foundation.md - Task ids:
client-state-split: Flutter client의 bootstrap, status state, DTO, repository, panel widget 경계를 분리하고 Firebase/Mattermost 같은 외부 통합은 선택적으로 초기화되게 한다.
- Completion mode: check-on-pass
이 파일을 읽는 리뷰 에이전트에게
[REVIEW AGENT ONLY] 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.
각 항목의 구현을 실제 소스 파일과 대조하고, 검증 결과 섹션의 출력이 코드와 일치하는지 확인하세요.
리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다.
- 판정을 append한다.
CODE_REVIEW-cloud-G08.md→code_review_cloud_G08_N.log,PLAN-local-G08.md→plan_local_G08_M.log로 아카이브한다.- PASS이면
complete.log작성 후 active task 디렉터리를agent-task/archive/YYYY/MM/m-architecture-refactor-foundation/08_client_state_split/로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는USER_REVIEW.md를 작성한다.USER_REVIEW.md가 사용자 결정으로 완료/PASS 해소되면 code-review가USER_REVIEW.md를 해소 상태로 갱신하고complete.log작성 후 archive 이동한다. - PASS이고 task group이
m-architecture-refactor-foundation이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와update-roadmap호출은 런타임 책임이다. - 적용 가능한
코드리뷰 전용 체크리스트항목을 최종.log위치에서 체크한 뒤 보고한다.
구현 항목별 완료 여부
| 항목 | 완료 여부 |
|---|---|
| [REFACTOR-1] Optional Bootstrap 경계 | [ ] |
| [REFACTOR-2] Status State Controller 분리 | [ ] |
| [REFACTOR-3] DTO와 Repository 파일 분리 | [ ] |
| [REFACTOR-4] Home Shell과 Panel Widget 파일 경계 | [ ] |
구현 체크리스트
- bootstrap을 옵션화해 Firebase/Mattermost 초기화를 기본 on, test/embedded 경로에서는 off로 선택할 수 있게 한다.
- fleet/status/events selected Edge state를 controller/repository state 경계로 분리하고 stale cache cleanup을 unit test로 검증한다.
- DTO와 HTTP repository를 별도 파일로 나누고 기존 public import 호환을 유지한다.
ClientHomePageshell composition과 panel widgets 파일 경계를 나누되 기존 visible behavior를 유지한다.- 변경분을 원격 runner에 동기화한 뒤
cd apps/client && flutter test,cd apps/client && flutter analyze --no-fatal-infos를 실행한다. - CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
코드리뷰 전용 체크리스트
[REVIEW AGENT ONLY] 이 체크리스트는 코드리뷰 에이전트만 사용한다. 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.
코드리뷰 결과에PASS,WARN,FAIL중 하나의 판정을 append한다.- 판정과
차원별 평가, Required/Suggested/Nit 분류가 서로 일치한다. - active
CODE_REVIEW-*-G??.md를code_review_cloud_G08_N.log로 아카이브한다. - active
PLAN-*-G??.md를plan_local_G08_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-architecture-refactor-foundation/08_client_state_split/를agent-task/archive/YYYY/MM/m-architecture-refactor-foundation/08_client_state_split/로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다. - PASS이고 task group이
m-<milestone-slug>이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나update-roadmap직접 호출을 하지 않는다. - PASS split 작업이면 이동 후 빈 active parent
agent-task/m-architecture-refactor-foundation/를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다. - WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active
PLAN-local-G08.md와CODE_REVIEW-cloud-G08.md를 작성하고complete.log를 작성하지 않는다. - USER_REVIEW이면
agent-ops/skills/common/code-review/templates/user-review-template.md기준으로USER_REVIEW.md를 작성하고 activePLAN-*.md,CODE_REVIEW-*.md,complete.log를 남기지 않는다. - USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면
USER_REVIEW.md를 해소 상태로 갱신하고complete.log를 작성한 뒤 task directory를 archive로 이동한다.
계획 대비 변경 사항
구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다.
주요 설계 결정
구현 에이전트가 주요 설계 결정 사항을 기록한다.
사용자 리뷰 요청
기본값은 없음이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 request_user_input을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다.
- 상태: 없음
- 사유 유형: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음
리뷰어를 위한 체크포인트
- production bootstrap 기본값이 Firebase/Mattermost를 계속 초기화하고, test/embedded path에서 외부 init을 끌 수 있는지 확인한다.
- status controller가 selected Edge disappearance와 stale status/events/loading/error cache cleanup을 widget lifecycle 밖에서 검증하는지 확인한다.
control_plane_status_client.dartcompatibility export가 기존 imports를 깨지 않는지 확인한다.- panel 파일 분리 후 UI text, navigation, Runtime command gating, mobile layout tests가 유지되는지 확인한다.
- 원격 runner 검증이 local 변경분 동기화 이후 실행된 증거인지 확인한다.
검증 결과
구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다.
필수 규칙:
- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다.
- 대체가 필요하면
계획 대비 변경 사항에 이유와 대체 명령을 기록한다. 검증 결과에는 실제 stdout/stderr를 붙여 넣는다.- 사용자 리뷰 요청으로 명령을 끝까지 실행하지 못했다면
사용자 리뷰 요청에 실행한 명령, 실제 출력, 미실행 명령의 사유를 기록한다. - mobile/UI hang, timeout, 또는 2분 무진행은 blind retry를 중단하고 focused rerun 명령과 screenshot/window/UI-tree evidence path를 남기며, 불가능하면 정확한 사유를 남긴다.
REFACTOR-1 중간 검증
$ cd apps/client && flutter test
(output)
$ cd apps/client && flutter analyze --no-fatal-infos
(output)
REFACTOR-2 중간 검증
$ cd apps/client && flutter test
(output)
$ cd apps/client && flutter analyze --no-fatal-infos
(output)
REFACTOR-3 중간 검증
$ cd apps/client && flutter test
(output)
$ cd apps/client && flutter analyze --no-fatal-infos
(output)
REFACTOR-4 중간 검증
$ cd apps/client && flutter test
(output)
$ cd apps/client && flutter analyze --no-fatal-infos
(output)
최종 검증
$ cd apps/client && flutter test
(output)
$ cd apps/client && flutter analyze --no-fatal-infos
(output)
Ownership
| Section | Owner | Note |
|---|---|---|
| Header comment, 개요, 리뷰 에이전트 지시 | Fixed at stub creation | Implementing agent must not modify or execute these |
| Roadmap Targets | Fixed at stub creation | Implementing agent must not modify |
| 구현 항목별 완료 여부 | Implementing agent | Check [ ] to [x] only |
| 구현 체크리스트 | Implementing agent | Check [ ] to [x] only |
| 코드리뷰 전용 체크리스트 | Review agent only | Implementing agent must not modify |
| 계획 대비 변경 사항, 주요 설계 결정 | Implementing agent | Replace placeholders |
| 사용자 리뷰 요청 | Implementing agent | Keep 상태: 없음 unless blocked by user-only decision |
| 리뷰어를 위한 체크포인트 | Fixed at stub creation | Review focus |
| 검증 결과 | Implementing agent | Paste actual stdout/stderr |