Update agent-ops-mcp-control-plane roadmap: PHASE, milestones (branch-event, protosocket, work-item creation)

This commit is contained in:
toki 2026-06-15 18:44:51 +09:00
parent a6625fd0eb
commit c71ae81882
4 changed files with 39 additions and 20 deletions

View file

@ -6,7 +6,7 @@
## 목표
로드맵 기반 agent-ops 운영 루프, Plane/Jira 같은 work item provider와 Milestone item의 양방향 동기화 도메인, 외부 agent 제어 표면을 Core action과 MCP tool 계층으로 분리한다. 현재는 Milestone Work Item Creation Sync를 검토중 완료 후보로 두고, Plane work item webhook intake, Gito branch event bridge, Gito proto-socket consumer wire readiness, 실행 lifecycle은 계획 후보로 둔다.
로드맵 기반 agent-ops 운영 루프, Plane/Jira 같은 work item provider와 Milestone item의 양방향 동기화 도메인, 외부 agent 제어 표면을 Core action과 MCP tool 계층으로 분리한다. 현재는 Milestone Work Item Creation Sync를 live/runtime 보완이 필요한 진행중 대상으로 두고, Gito proto-socket consumer wire readiness, Gito branch event bridge, Plane work item webhook intake, 실행 lifecycle은 계획 후보로 둔다.
## Milestone 흐름
@ -18,22 +18,22 @@
- 경로: `agent-roadmap/archive/phase/agent-ops-mcp-control-plane/milestones/workspace-port-env-standardization.md`
- 요약: NomadCode client/core/compose/test runner 포트와 IOP Edge 연동 endpoint를 workspace 공통 대역과 remote runner 문서 기준으로 정리하고, remote code-server preview 정상 노출 확인 후 archive했다.
- [검토중] Milestone Work Item Creation Sync
- [진행중] Milestone Work Item Creation Sync
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md`
- 요약: Plane-origin 방식으로 Milestone을 생성하고 Plane Todo 티켓까지 동기화한 뒤 멈추는 마일스톤이다. `creation-sync-orchestrator` 완료 로그까지 반영되어 모든 기능 Task가 완료 후보가 되었고, 사용자 최종 확인과 archive 승인 대기 상태다.
- 요약: Plane-origin 방식으로 Milestone을 생성하고 Plane Todo 티켓까지 동기화한 뒤 멈추는 마일스톤이다. `creation-sync-orchestrator` 단위/fake 기반 근거는 있으나 원격 live 흐름은 webhook task 생성까지만 즉시 검증되어, 자동 enqueue, develop push gate, Todo projection, slot terminal state 보완 후 다시 검토한다.
- [계획] Gito Proto-Socket Consumer Wire Readiness
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-protosocket-consumer-wire-readiness.md`
- 요약: NomadCode/Gito 연동 MVP의 다음 구현 slice로, 기존 Gito event semantic bridge를 실제 Gito `/proto-socket` binary protocol과 cross-project smoke 기준으로 닫는다.
- [계획] Gito Branch Event Creation Sync Bridge
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md`
- 요약: Gito가 proto-socket `branch.updated` wakeup을 제공하면 NomadCode core가 이를 구독하고 target branch를 재검증/스캔한 뒤 creation sync job으로 enqueue하는 semantic bridge 범위를 정리한다.
- [계획] Plane Work Item Webhook Intake
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md`
- 요약: Plane work item 생성, 상태 변경, assignee 변경 webhook을 NomadCode Core가 받아 `Backlog + AGENT assignee` 조건을 재검증하고 기존 Milestone creation sync pipeline을 시작하도록 연결한다. 사용자에게 필요한 webhook URL, 인증 방식, AGENT assignee id, live smoke 티켓 선택을 명시한다.
- [계획] Gito Branch Event Creation Sync Bridge
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md`
- 요약: Gito가 proto-socket `branch.updated` wakeup을 제공하면 NomadCode core가 이를 구독하고 target branch를 재검증/스캔한 뒤 creation sync job으로 enqueue하는 bridge를 구현한다.
- [계획] Gito Proto-Socket Consumer Wire Readiness
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-protosocket-consumer-wire-readiness.md`
- 요약: NomadCode Gito consumer가 실제 Gito `/proto-socket` binary protocol로 subscribe/event를 주고받고, 운용 env와 cross-project smoke 기준을 갖추게 한다.
- [계획] Roadmap Driven Agent-Ops Automation
- 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/roadmap-driven-agent-ops-automation.md`
- 요약: roadmap/action core와 Plane/Jira 기반 Milestone item 동기화의 상위 방향과 계약을 정리하는 설계 마일스톤이며, 실제 구현은 slice 마일스톤으로 진행한다.

View file

@ -64,6 +64,7 @@ Gito가 provider webhook과 branch watch를 정규화해 `branch.updated`를 발
- 관련 경로: `services/core/internal/protosocket/`, `services/core/internal/roadmapsync/`, `services/core/internal/roadmapsyncpipeline/`, `services/core/internal/scheduler/`, `services/core/cmd/server/main.go`, `packages/contracts/notes/flutter-core-api-candidates.md`
- 외부 계약: Gito `agent-contract/provided/gito-forgejo-branch-events-v1.md`
- 표준선(선택): Gito는 branch event producer이고, NomadCode core는 이 event를 wakeup signal로 소비한 뒤 target branch를 재검증/스캔해 Plane mutation 여부를 결정한다.
- 우선순위: NomadCode/Gito 연동 MVP의 semantic bridge 범위로, 실제 한 사이클 병목인 `Gito Proto-Socket Consumer Wire Readiness`와 함께 Plane Work Item Webhook Intake보다 먼저 닫는다.
- 선행 작업: `Milestone Work Item Creation Sync``creation-sync-orchestrator`
- 후속 작업: `Milestone Execution Lifecycle Sync`
- 확인 필요: 없음

View file

@ -69,6 +69,7 @@ NomadCode가 Gito branch event를 논리 DTO가 아니라 실제 proto-socket wi
- 외부 계약: Gito `agent-contract/provided/gito-forgejo-branch-events-v1.md`
- 관련 Gito Milestone: `Branch Event Proto-Socket Interop Readiness`
- 표준선(선택): NomadCode는 Gito event payload를 wakeup signal로만 사용하고, 최종 판단은 target branch fetch/scan과 provider identity 재검증으로 수행한다. Gito schema는 여러 consumer를 위한 범용 규약으로 보고, NomadCode 전용 정보는 optional metadata/custom field가 있을 때만 소비한다.
- 선행 작업: Gito Branch Event Creation Sync Bridge의 semantic consumer/scan/enqueue 경계
- 우선순위: NomadCode/Gito 연동 MVP의 다음 구현 slice로, Plane Work Item Webhook Intake보다 먼저 닫는다.
- 선행 작업: Gito `Branch Event Proto-Socket Interop Readiness` producer fixture와 기존 `gitoevents`/`gitosync` semantic consumer/scan/enqueue 경계
- 후속 작업: Milestone Execution Lifecycle Sync
- 확인 필요: 없음

View file

@ -11,7 +11,7 @@ Plane-origin 경로로 Milestone을 생성하고, `develop` branch의 agent-road
## 상태
[검토중]
[진행중]
## 구현 잠금
@ -104,19 +104,35 @@ Plane-origin 생성 경로를 `develop` agent-roadmap 기준의 `Todo` 검토
- [x] [creation-retry] 생성 동기화의 idempotency와 부분 실패 재시도 정책을 정한다. 검증: develop 반영, 댓글 보존, 본문 치환, 제목 변경, Todo 이동 중 일부만 성공해도 재시도 시 중복 생성 없이 남은 단계만 적용된다.
- [x] [creation-sync-orchestrator] develop Milestone match, identity/step ledger, Plane 원문 보존/본문·제목 갱신/`Todo` 이동을 하나의 runtime sync orchestrator로 연결한다. 검증: provider fake와 store fake 기반 테스트에서 not-ready는 provider 호출 없음, ready는 ledger 단계별 재시도와 Plane projection 순서를 보장한다. 계획: `agent-task/m-milestone-work-item-creation-sync/11_creation_sync_orchestrator/`
### Epic: [live-cycle-gate] Live cycle verification gate
검토 결과, 단위 테스트와 fake provider/store 기반 runtime seam 검증만으로는 이 Milestone의 완료 지점인 Plane `Todo` 검토 상태까지 실제 원격 흐름이 수렴한다고 보기 어렵다. Archive 전에는 최소한 live smoke 또는 runtime-equivalent smoke로 webhook, authoring, develop 반영, Plane projection, slot 회수 경계를 확인한다.
- [ ] [live-webhook-task] 원격 dev Plane에서 `Backlog + AGENT assignee` 상위 티켓을 만들거나 갱신하면 webhook만으로 Core task가 생성되고 checkout metadata가 남는다. 검증: Plane webhook log 202, Core task external ref, `checkout.develop_branch_path`/`checkout.slot_path`, workspace slot reservation을 secret redaction 상태로 확인한다.
- [ ] [webhook-auto-enqueue] webhook-dispatched creation task가 별도 수동 API 호출 없이 authoring queue로 이어진다. 검증: 같은 Plane work item event에서 task 생성 이후 `queued`/`running` 또는 authoring run 시작 로그가 확인되고, 중복 webhook은 중복 task나 중복 queue를 만들지 않는다.
- [ ] [authoring-develop-gate] IOP authoring 응답만으로 task 완료를 단정하지 않고, `develop` Milestone push와 provider identity match가 확인될 때 authoring 성공 또는 sync-ready로 판정된다. 검증: model response-only, slot-local dirty, push 실패는 Plane `Todo` projection으로 넘어가지 않고, `develop` match가 있을 때만 다음 단계로 수렴한다.
- [ ] [live-creation-projection] matched develop scan/job 입력이 `roadmapsyncpipeline.Service``RoadmapCreationSyncWorker`를 통해 실제 Plane 원문 댓글 보존, 본문/제목 갱신, `Todo` 이동으로 수렴한다. 검증: `roadmap_sync_steps``develop_matched`, `original_comment_preserved`, `plane_body_updated`, `plane_todo_moved`가 기록되고 Plane UI에서 `Todo` 상태와 `[milestone-id]` 제목을 확인한다.
- [ ] [slot-terminal-state] authoring 또는 projection이 terminal outcome에 도달하면 reserved workspace slot이 정책에 따라 `available`, `dirty`, `error` 중 하나로 전환된다. 검증: 성공 smoke 이후 다음 Plane-origin smoke가 수동 DB reset 없이 slot을 확보할 수 있고, 실패 smoke는 원인에 맞는 slot state를 남긴다.
## 완료 리뷰
- 상태: 요청됨
- 상태: 보완 필
- 요청일: 2026-06-14
- 완료 근거:
- 보완 전 완료 근거:
- `agent-task/archive/2026/06/m-milestone-work-item-creation-sync/11_creation_sync_orchestrator/complete.log``Roadmap Completion` 근거로 `[creation-sync-orchestrator]`를 완료 처리했다.
- 검증 근거는 `roadmapsyncpipeline.Service`의 develop match -> identity/step ledger -> Plane projection 연결, optional `RoadmapCreationSyncWorker`, `EnqueueRoadmapCreationSync` seam, `cd services/core && go test -count=1 ./...`, `cd services/core && go vet ./...`, `git diff --check` PASS다.
- Gito proto-socket `branch.updated` backend bridge는 후속 `Gito Branch Event Creation Sync Bridge` Milestone으로 분리했고, 이 마일스톤의 기능 Task는 모두 완료 후보 상태다.
- Gito proto-socket `branch.updated` backend bridge는 후속 `Gito Branch Event Creation Sync Bridge` Milestone으로 분리했다.
- 보완 필요 근거:
- 2026-06-15 원격 preflight 결과, Core는 `healthz`/`readyz`, Plane webhook secret/API env, project sync 설정, smoke workspace checkout, available slot까지 준비할 수 있으나 현재 live로 확인 가능한 범위는 webhook 수신과 Core task 생성까지다.
- 현재 webhook receiver는 task 생성 후 `202 accepted`로 종료하며, 생성 task를 자동 enqueue해 authoring run으로 넘기는 runtime 연결은 확인되지 않았다.
- authoring worker는 IOP model response를 받으면 task를 complete 처리할 수 있으나, `develop` push/provider identity match를 runtime success gate로 닫는 live 경로와 slot terminal state 회수 정책은 아직 검증되지 않았다.
- `RoadmapCreationSyncWorker`는 존재하지만 public trigger가 없고, Gito/develop event consumer runtime env와 wire smoke는 후속 Milestone에 남아 있어 Plane `Todo` projection까지 실제 원격 한 사이클로 증명되지 않았다.
- 리뷰 필요:
- [x] `creation-sync-orchestrator` 계획이 PASS되고 runtime caller가 검증되었다
- [ ] 이후 사용자가 완료 결과를 확인했다
- [ ] `[live-cycle-gate]` 보완 Task가 live smoke 또는 runtime-equivalent smoke evidence로 완료되었다
- [ ] 사용자가 보완 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 모든 기능 Task가 evidence와 함께 완료 후보가 되었으므로 사용자 최종 확인과 archive 승인 대기 상태로 전환한다.
- 리뷰 코멘트: 기존 unit/fake 기반 완료 근거는 보존하되, 실제 원격 흐름이 Plane `Todo` projection까지 자동 수렴한다는 증거가 부족해 `[진행중]`으로 되돌린다. Archive는 `[live-cycle-gate]` 보완 Task 완료 전까지 승인하지 않는다.
## 범위 제외
@ -162,8 +178,9 @@ Plane-origin 생성 경로를 `develop` agent-roadmap 기준의 `Todo` 검토
- Creation trigger/draft 현황 동기화(2026-06-14): `agent-task/archive/2026/06/m-milestone-work-item-creation-sync/09_creation_trigger_gate/complete.log``Roadmap Completion` 근거로 `[plane-trigger]`를 완료 처리했다. 검증 근거는 ignored trigger를 workspace provision/slot reservation 전에 판정하는 gate, legacy Plane route trigger 전달 테스트, `cd services/core && go test -count=1 ./internal/workitempipeline ./internal/http`, `cd services/core && go test ./...`, `git diff --check` PASS다. `agent-task/archive/2026/06/m-milestone-work-item-creation-sync/10+09_plane_draft_authoring/complete.log``Roadmap Completion` 근거로 `[plane-draft]`를 완료 처리했다. 검증 근거는 full provider identity context 보존, idempotent Milestone draft instructions, scheduler authoring route regression, `cd services/core && go test -count=1 ./internal/authoring ./internal/roadmapsync ./internal/adapters/openai ./internal/scheduler`, `cd services/core && go test -count=1 ./...`, `git diff --check` PASS다.
- 완료 보완 리뷰(2026-06-14): 현재 Core 코드에는 `roadmapsync` helper와 저장소는 있으나 이를 호출해 develop scan 결과를 identity/step ledger와 Plane `Todo` projection에 연결하는 runtime sync orchestrator가 없다. 보완 계획: `agent-task/m-milestone-work-item-creation-sync/11_creation_sync_orchestrator/`.
- Creation sync orchestrator 동기화(2026-06-14): `agent-task/archive/2026/06/m-milestone-work-item-creation-sync/11_creation_sync_orchestrator/complete.log``Roadmap Completion` 근거로 `[creation-sync-orchestrator]`를 완료 처리했다. 검증 근거는 `roadmapsyncpipeline.Service`, optional `RoadmapCreationSyncWorker`, `EnqueueRoadmapCreationSync` seam, `cd services/core && go test -count=1 ./...`, `cd services/core && go vet ./...`, `git diff --check` PASS다.
- 검토 지점: project sync 설정, workspace topology, IOP Edge HTTP authoring run 경계, authoring run 성공/실패 판정, pushed Milestone identity match, Plane 원문 댓글 보존/본문·제목 갱신/`Todo` 이동 projection, identity map 기반 idempotency/retry, runtime orchestrator 연결까지 완료 후보 근거가 있다. 사용자 최종 확인과 archive 승인 전까지 `[검토중]`으로 유지한다.
- 루프 목표: Plane `Backlog + AGENT assignee` -> `slots/<index>` workspace 예약/준비 -> IOP Edge HTTP로 workspace agent authoring run 실행 -> agent가 Milestone 파일 작성/갱신 후 `develop` push -> sync layer가 `branches/develop` 또는 remote `develop`에서 push 완료/roadmap scan을 감지 -> Plane 원문 댓글 보존/본문 치환/제목 변경/`Todo` 이동 -> 사용자가 확인 후 `In Progress`로 이동하는 지점까지다. 최상위 `plane-nomad-iop-cycle` 실행 단위는 완료 후보이며, `In Progress` 이후 실행은 후속 잠금 범위다.
- 보완 리뷰(2026-06-15): 원격 Core dev 환경은 `healthz`/`readyz`, Plane secret/API env, active project sync 설정, `branches/main`, `branches/develop`, `slots/000`, available slot까지 준비 가능함을 확인했다. 그러나 현재 live로 바로 검증 가능한 범위는 Plane webhook 수신, trigger gate, Core task 생성, checkout metadata 기록까지다. Webhook task 자동 enqueue, authoring result와 `develop` push match의 runtime 연결, Plane `Todo` projection live smoke, slot terminal state 회수는 완료 전 보강 Task로 남긴다.
- 검토 지점: project sync 설정, workspace topology, IOP Edge HTTP authoring run 경계, authoring run 성공/실패 판정, pushed Milestone identity match, Plane 원문 댓글 보존/본문·제목 갱신/`Todo` 이동 projection, identity map 기반 idempotency/retry, runtime orchestrator 연결은 unit/fake 기반 근거가 있으나, live/runtime-equivalent smoke evidence가 부족하다. `[live-cycle-gate]` 보완 전까지 `[진행중]`으로 유지한다.
- 루프 목표: Plane `Backlog + AGENT assignee` -> `slots/<index>` workspace 예약/준비 -> IOP Edge HTTP로 workspace agent authoring run 실행 -> agent가 Milestone 파일 작성/갱신 후 `develop` push -> sync layer가 `branches/develop` 또는 remote `develop`에서 push 완료/roadmap scan을 감지 -> Plane 원문 댓글 보존/본문 치환/제목 변경/`Todo` 이동 -> 사용자가 확인 후 `In Progress`로 이동하는 지점까지다. 최상위 `plane-nomad-iop-cycle` 실행 단위는 아직 live completion 후보가 아니며, `In Progress` 이후 실행은 후속 잠금 범위다.
- 후속 잠금: `Todo -> In Progress` 이후 실행 lifecycle은 사용자가 명시적으로 잠금을 해제할 때까지 진행하지 않는다.
- Plane work item 경계: 이 마일스톤에서 말하는 Plane Milestone은 Plane native milestone object가 아니라 1상위 티켓 = 1 agent-roadmap Milestone으로 보는 work item mapping이다.
- 확인 필요: 없음