From 6ae2cd7bbea6466303ae438b1d580521c2139c13 Mon Sep 17 00:00:00 2001 From: toki Date: Tue, 16 Jun 2026 11:08:27 +0900 Subject: [PATCH] archive: migrate milestone-work-item-creation-sync to archive and update phase docs --- agent-roadmap/ROADMAP.md | 4 +-- .../milestone-work-item-creation-sync.md | 13 +++++---- .../agent-ops-mcp-control-plane/PHASE.md | 24 +++++++-------- .../gito-branch-event-creation-sync-bridge.md | 29 +++++++++++-------- .../plane-work-item-webhook-intake.md | 4 +-- 5 files changed, 40 insertions(+), 34 deletions(-) rename agent-roadmap/{ => archive}/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md (98%) diff --git a/agent-roadmap/ROADMAP.md b/agent-roadmap/ROADMAP.md index 9829a6f..816617b 100644 --- a/agent-roadmap/ROADMAP.md +++ b/agent-roadmap/ROADMAP.md @@ -4,7 +4,7 @@ NomadCode는 Flutter 기반 앱, core 서비스, 공유 계약, agent-operation 규칙을 하나의 원레포로 묶어 AI-assisted development workflow를 조율하는 프로젝트다. -현재 로드맵은 `ROADMAP.md -> phase//PHASE.md -> phase//milestones/.md` scaffold를 기준으로 관리한다. React/Vite 웹 콘솔 제거, 서버/Plane/provider 기반 작업, Flutter-first 클라이언트 정리, Mattermost push plugin extraction, client integration 표준화, workspace 포트/환경 표준화, External Integration은 완료되었다. Milestone Work Item Creation Sync와 실행 lifecycle sync 계열은 후속 후보로 둔다. +현재 로드맵은 `ROADMAP.md -> phase//PHASE.md -> phase//milestones/.md` scaffold를 기준으로 관리한다. React/Vite 웹 콘솔 제거, 서버/Plane/provider 기반 작업, Flutter-first 클라이언트 정리, Mattermost push plugin extraction, client integration 표준화, workspace 포트/환경 표준화, External Integration, Milestone Work Item Creation Sync는 완료되었다. Agent-Ops MCP Control Plane의 Plane/Gito 생성 sync 계열은 남은 완료 검토 후보로 두고, 실행 lifecycle sync 계열은 후속 후보로 둔다. IOP 외부 실행 호출은 OpenAI-compatible Responses API 방식을 기본 계약으로 채택하고, NomadCode/IOP 고유의 task, workspace, session, approval, artifact, notification 문맥은 별도 `iop` wrapper field가 아니라 `metadata` 확장으로 전달한다. A2A는 agent-to-agent delegation이 명확히 필요할 때 재검토하며, IOP native protocol은 NomadCode의 기본 외부 실행 호출 표면으로 쓰지 않는다. @@ -37,7 +37,7 @@ IOP 외부 실행 호출은 OpenAI-compatible Responses API 방식을 기본 계 - 요약: Plane 확장, Jira-compatible provider 추상화, Mattermost, Agent Integrator, IOP OpenAI-compatible Responses 호출 경계를 실제 통합 adapter 흐름으로 확장했고, metadata 실행 문맥 전달, IOP Edge `/v1/responses`, NomadCode Core 원격 create/enqueue/poll smoke를 완료했다. - [진행중] Agent-Ops MCP Control Plane - 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md` - - 요약: 로드맵 기반 agent-ops 운영 자동화, Plane/Jira 같은 work item provider와 Milestone item의 양방향 동기화 도메인, 외부 agent용 MCP 제어 표면을 다루며, Plane-origin Milestone Work Item Creation Sync를 검토 후보로 둔다. + - 요약: 로드맵 기반 agent-ops 운영 자동화, Plane/Jira 같은 work item provider와 Milestone item의 양방향 동기화 도메인, 외부 agent용 MCP 제어 표면을 다루며, Plane Work Item Webhook Intake와 Gito Branch Event Creation Sync Bridge를 검토 후보로 둔다. - [계획] Project Workspace Management UX - 경로: `agent-roadmap/phase/project-workspace-management-ux/PHASE.md` - 요약: client integration 표준화, core workflow, 외부 통합 기준 이후 프로젝트 단위 앱 UX를 다루며, provider slot 기반 외부 console composition은 계획 후보로 둔다. diff --git a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md b/agent-roadmap/archive/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md similarity index 98% rename from agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md rename to agent-roadmap/archive/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md index 8d93d7c..0eadee3 100644 --- a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md +++ b/agent-roadmap/archive/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md @@ -11,7 +11,7 @@ Plane-origin 경로로 Milestone을 생성하고, `develop` branch의 agent-road ## 상태 -[검토중] +[완료] ## 구현 잠금 @@ -116,7 +116,7 @@ Plane-origin 생성 경로를 `develop` agent-roadmap 기준의 `Todo` 검토 ## 완료 리뷰 -- 상태: 요청됨 +- 상태: 승인됨 - 요청일: 2026-06-16 - 보완 전 완료 근거: - `agent-task/archive/2026/06/m-milestone-work-item-creation-sync/11_creation_sync_orchestrator/complete.log`의 `Roadmap Completion` 근거로 `[creation-sync-orchestrator]`를 완료 처리했다. @@ -129,9 +129,9 @@ Plane-origin 생성 경로를 `develop` agent-roadmap 기준의 `Todo` 검토 - 리뷰 필요: - [x] `creation-sync-orchestrator` 계획이 PASS되고 runtime caller가 검증되었다 - [x] `[live-cycle-gate]` 보완 Task가 live smoke 또는 runtime-equivalent smoke evidence로 완료되었다 - - [ ] 사용자가 보완 결과를 확인했다 - - [ ] archive 이동을 승인했다 -- 리뷰 코멘트: 기존 unit/fake 기반 완료 근거에 12/13/14번 task group의 PASS 근거가 더해져 기능 Task와 보완 Task는 모두 완료 후보가 되었다. Milestone은 `[검토중]`으로 두고, 사용자의 보완 결과 확인과 archive 승인을 기다린다. + - [x] 사용자가 보완 결과를 확인했다 + - [x] archive 이동을 승인했다 +- 리뷰 코멘트: 기존 unit/fake 기반 완료 근거에 12/13/14번 task group의 PASS 근거가 더해져 기능 Task와 보완 Task가 모두 완료되었다. 사용자 승인에 따라 Milestone을 `[완료]`로 전환하고 archive했다. ## 범위 제외 @@ -185,4 +185,5 @@ Plane-origin 생성 경로를 `develop` agent-roadmap 기준의 `Todo` 검토 - 루프 목표: Plane `Backlog + AGENT assignee` -> `slots/` 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`로 이동하는 지점까지 완료 후보로 둔다. `In Progress` 이후 실행은 후속 잠금 범위다. - 후속 잠금: `Todo -> In Progress` 이후 실행 lifecycle은 사용자가 명시적으로 잠금을 해제할 때까지 진행하지 않는다. - Plane work item 경계: 이 마일스톤에서 말하는 Plane Milestone은 Plane native milestone object가 아니라 1상위 티켓 = 1 agent-roadmap Milestone으로 보는 work item mapping이다. -- 확인 필요: 사용자의 보완 결과 확인과 archive 이동 승인 +- 종료 처리(2026-06-16): 사용자 요청에 따라 Milestone을 `[완료]`로 전환하고 archive했다. 다음 활성 후보는 `Plane Work Item Webhook Intake`로 둔다. +- 확인 필요: 없음 diff --git a/agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md b/agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md index 7457a5a..81c11ae 100644 --- a/agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md +++ b/agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md @@ -6,7 +6,7 @@ ## 목표 -로드맵 기반 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은 계획 후보로 둔다. +로드맵 기반 agent-ops 운영 루프, Plane/Jira 같은 work item provider와 Milestone item의 양방향 동기화 도메인, 외부 agent 제어 표면을 Core action과 MCP tool 계층으로 분리한다. 현재는 Milestone Work Item Creation Sync를 완료/archive했고, Plane Work Item Webhook Intake와 Gito Branch Event Creation Sync Bridge를 완료 검토 후보로 두며, Gito proto-socket consumer wire readiness와 실행 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 - - 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md` - - 요약: Plane-origin 방식으로 Milestone을 생성하고 Plane Todo 티켓까지 동기화한 뒤 멈추는 마일스톤이다. 12/13/14번 task group의 `Roadmap Completion` 근거로 live-cycle gate 보완 Task까지 완료되어, 사용자 최종 확인과 archive 승인만 남은 검토 후보로 둔다. +- [완료] Milestone Work Item Creation Sync + - 경로: `agent-roadmap/archive/phase/agent-ops-mcp-control-plane/milestones/milestone-work-item-creation-sync.md` + - 요약: Plane-origin 방식으로 Milestone을 생성하고 Plane Todo 티켓까지 동기화한 뒤 멈추는 마일스톤이다. 12/13/14번 task group의 `Roadmap Completion` 근거로 live-cycle gate 보완 Task까지 완료했고, 사용자 승인 후 archive했다. + +- [검토중] 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을 시작하도록 연결했다. 기능 Task는 완료 후보이며 사용자 최종 확인과 archive 승인만 남아 있다. + +- [검토중] Gito Branch Event Creation Sync Bridge + - 경로: `agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md` + - 요약: Gito `branch.updated` wakeup을 NomadCode core가 소비하고 target branch 재검증/스캔 뒤 creation sync job으로 enqueue하는 bridge Task가 01/02번 task group의 `Roadmap Completion` 근거로 완료되어, 사용자 최종 확인과 archive 승인만 남은 검토 후보로 둔다. - [계획] 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 티켓 선택을 명시한다. - - [계획] 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 마일스톤으로 진행한다. diff --git a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md b/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md index d04b59c..c463d37 100644 --- a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md +++ b/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/gito-branch-event-creation-sync-bridge.md @@ -11,7 +11,7 @@ Gito가 제공하는 proto-socket `branch.updated` wakeup을 NomadCode core가 ## 상태 -[계획] +[검토중] ## 구현 잠금 @@ -34,22 +34,25 @@ Gito가 제공하는 proto-socket `branch.updated` wakeup을 NomadCode core가 Gito가 provider webhook과 branch watch를 정규화해 `branch.updated`를 발행하면, NomadCode core가 이를 backend sync wakeup으로 받아 Plane creation sync orchestrator에 전달한다. -- [ ] [contract-consume] Gito 제공 계약 `gito.forgejo-branch-events.v1`을 NomadCode core 소비 계약으로 반영한다. 검증: `event.subscribe` 요청과 `branch.updated` payload 필드가 계약 fixture 또는 테스트에 고정된다. -- [ ] [core-client] NomadCode core에 Gito proto-socket event client/runner를 추가한다. 검증: fake proto-socket server 또는 transport로 `event.subscribe`를 보내고 `branch.updated`를 수신한다. -- [ ] [branch-filter] `repo_id`, `branch`, `changed_files` 기준으로 roadmap Milestone 후보 event만 선별한다. 검증: 다른 repo/branch/path event는 creation sync enqueue를 만들지 않는다. -- [ ] [revision-scan] 이벤트 payload를 최종 증거로 단정하지 않고 target branch revision을 fetch/scan해 `roadmapsync.ScanResult`를 만든다. 검증: scanned Milestone identity가 원래 Plane work item identity와 맞을 때만 ready 후보가 된다. -- [ ] [creation-enqueue] scan 결과와 provider identity를 `RoadmapCreationSyncJobArgs`로 변환해 `scheduler.EnqueueRoadmapCreationSync`를 호출한다. 검증: fake scheduler가 정확한 job args를 받으며 duplicate/retry 입력이 중복 side effect를 만들지 않는다. -- [ ] [runtime-wiring] server/scheduler lifecycle에 Gito event consumer를 선택적으로 wiring한다. 검증: Gito endpoint 미설정 시 기존 core 동작은 유지되고, 설정 시 runner가 시작/종료된다. +- [x] [contract-consume] Gito 제공 계약 `gito.forgejo-branch-events.v1`을 NomadCode core 소비 계약으로 반영한다. 검증: `event.subscribe` 요청과 `branch.updated` payload 필드가 계약 fixture 또는 테스트에 고정된다. +- [x] [core-client] NomadCode core에 Gito proto-socket event client/runner를 추가한다. 검증: fake proto-socket server 또는 transport로 `event.subscribe`를 보내고 `branch.updated`를 수신한다. +- [x] [branch-filter] `repo_id`, `branch`, `changed_files` 기준으로 roadmap Milestone 후보 event만 선별한다. 검증: 다른 repo/branch/path event는 creation sync enqueue를 만들지 않는다. +- [x] [revision-scan] 이벤트 payload를 최종 증거로 단정하지 않고 target branch revision을 fetch/scan해 `roadmapsync.ScanResult`를 만든다. 검증: scanned Milestone identity가 원래 Plane work item identity와 맞을 때만 ready 후보가 된다. +- [x] [creation-enqueue] scan 결과와 provider identity를 `RoadmapCreationSyncJobArgs`로 변환해 `scheduler.EnqueueRoadmapCreationSync`를 호출한다. 검증: fake scheduler가 정확한 job args를 받으며 duplicate/retry 입력이 중복 side effect를 만들지 않는다. +- [x] [runtime-wiring] server/scheduler lifecycle에 Gito event consumer를 선택적으로 wiring한다. 검증: Gito endpoint 미설정 시 기존 core 동작은 유지되고, 설정 시 runner가 시작/종료된다. ## 완료 리뷰 -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: 없음 +- 상태: 요청됨 +- 요청일: 2026-06-16 +- 완료 근거: + - `agent-task/archive/2026/06/m-gito-branch-event-creation-sync-bridge/01_event_client/complete.log`의 `Roadmap Completion` 근거로 `[contract-consume]`, `[core-client]`, `[branch-filter]`를 완료 처리했다. + - `agent-task/archive/2026/06/m-gito-branch-event-creation-sync-bridge/02+01_creation_enqueue_bridge/complete.log`의 `Roadmap Completion` 근거로 `[revision-scan]`, `[creation-enqueue]`, `[runtime-wiring]`을 완료 처리했다. + - 검증 근거는 `go test -count=1 ./internal/gitoevents ./internal/config ./internal/protosocket`, `cd services/core && go test -count=1 ./internal/gitosync ./internal/roadmapsync ./internal/roadmapsyncpipeline ./internal/scheduler`, `cd services/core && go test -count=1 ./...`, `cd services/core && go vet ./...`, `git diff --check` PASS다. - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 -- 리뷰 코멘트: 없음 +- 리뷰 코멘트: Gito branch event wakeup bridge 기능 Task가 모두 완료 후보가 되었다. Milestone은 `[검토중]`으로 두고, 사용자의 완료 결과 확인과 archive 승인을 기다린다. ## 범위 제외 @@ -67,4 +70,6 @@ Gito가 provider webhook과 branch watch를 정규화해 `branch.updated`를 발 - 우선순위: 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` -- 확인 필요: 없음 +- 현황 동기화(2026-06-16): `agent-task/archive/2026/06/m-gito-branch-event-creation-sync-bridge/01_event_client/complete.log`의 `Roadmap Completion` 근거로 `[contract-consume]`, `[core-client]`, `[branch-filter]`를 완료 처리했다. +- 현황 동기화(2026-06-16): `agent-task/archive/2026/06/m-gito-branch-event-creation-sync-bridge/02+01_creation_enqueue_bridge/complete.log`의 `Roadmap Completion` 근거로 `[revision-scan]`, `[creation-enqueue]`, `[runtime-wiring]`을 완료 처리했다. +- 확인 필요: 사용자의 완료 결과 확인과 archive 이동 승인 diff --git a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md b/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md index 4fd2a71..65f3a53 100644 --- a/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md +++ b/agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md @@ -48,7 +48,7 @@ Plane에서 발생한 work item event를 NomadCode creation sync trigger로 안 ## 완료 리뷰 -- 상태: [검토중] +- 상태: 요청됨 - 요청일: 2026-06-15 - 완료 근거: Plane Webhook intake 및 normalized trigger dispatch, idempotency 처리가 구현 및 원격 배포되었으며, 2026-06-15 live smoke 테스트를 통해 Plane UI/API에서 새 Backlog 티켓 생성 및 AGENT assignee 지정 시 webhook 202 Accepted 수신 및 Core Task(e3c92411-4056-4b76-a879-66f7904125d0) 생성 및 실행이 시작되는 것을 검증 완료함. - 리뷰 필요: @@ -77,7 +77,7 @@ Plane에서 발생한 work item event를 NomadCode creation sync trigger로 안 - [x] AGENT assignee로 쓸 Plane 계정/id는 `5d116a77-d3df-4f54-80bf-eca61e0118c4`다. - [x] webhook-only live smoke용 기존 Plane 티켓은 `NOMAD-10`, `NOMAD-11`을 사용했다. - [x] live smoke 후 Plane UI에서 `Todo` projection 또는 authoring 시작 상태를 확인한다. -- 확인 필요: Plane self-hosted webhook payload의 실제 event type, signature header, custom header 지원 여부를 dev Plane에서 확인해야 한다. +- 확인 필요: 사용자의 완료 결과 확인과 archive 이동 승인 - 작은 작업 처리 결과: `webhook-receiver`는 signed fixture/invalid signature/basic-auth bypass 테스트와 dev Core synthetic/live webhook smoke로 확인했다. `plane-registration`은 dev Plane active webhook `e25a2d41-2c9f-4f5f-a0ce-cad6b993853f`, target `http://toki-labs.com:18010/api/integrations/plane/webhook`, `issue=True`, response 202 발송 로그 8건으로 확인했다. 2026-06-15 live smoke에서 Plane issue `93b677f5-7913-4111-ae05-916033ae533b`에 대한 webhook 수신(202 Accepted) 및 Core Task `e3c92411-4056-4b76-a879-66f7904125d0` 기동을 검증함. - payload fixture: assignee update 샘플은 `services/core/internal/http/testdata/plane_webhook_issue_assignees_updated.json`에 PII redaction 상태로 남겼다. create/state-change 후보는 `plane_webhook_issue_created.json`, `plane_webhook_issue_state_updated.json`으로 추가했고 live create/state 로그 미확보로 관찰된 issue envelope 기반 synthetic candidate임을 `agent-test/plane-dev.md`에 명시했다. normalize helper(`normalizePlaneWebhookPayload`)는 payload를 wakeup hint로만 보고 provider-neutral ref/actor/change hint만 추출한다. - plane-webhook 후속 plan: