From 881753bc54df4a0a83afd5c87b596ff448781b9c Mon Sep 17 00:00:00 2001 From: toki Date: Sat, 23 May 2026 18:14:01 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=84=9C:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=ED=8A=B8=EB=A6=AC=EA=B1=B0=20=EA=B2=B0=EC=A0=95=EC=9D=84=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent-ops/roadmap/current.md | 2 +- .../milestones/plane-task-pipeline-design.md | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/agent-ops/roadmap/current.md b/agent-ops/roadmap/current.md index 728e060..117f2ea 100644 --- a/agent-ops/roadmap/current.md +++ b/agent-ops/roadmap/current.md @@ -2,7 +2,7 @@ ## 활성 Milestone -- Work Item Provider Pipeline Design (상태: 진행 중, 현재 항목: 자동 enqueue/trigger 경계 결정): agent-ops/roadmap/milestones/plane-task-pipeline-design.md +- Work Item Provider Pipeline Design (상태: 진행 중, 현재 항목: work item provider adapter interface 설계): agent-ops/roadmap/milestones/plane-task-pipeline-design.md ## 선택 규칙 diff --git a/agent-ops/roadmap/milestones/plane-task-pipeline-design.md b/agent-ops/roadmap/milestones/plane-task-pipeline-design.md index 021da01..0f7246d 100644 --- a/agent-ops/roadmap/milestones/plane-task-pipeline-design.md +++ b/agent-ops/roadmap/milestones/plane-task-pipeline-design.md @@ -31,14 +31,15 @@ Work Item Provider Pipeline Design - [x] 생성 단계는 Plane work item 조회와 core task 저장까지만 담당한다. - [x] 생성된 task는 `pending` 상태로 남기고 enqueue는 별도 단계에서 처리한다. - [x] Plane 연결 정보는 provider-neutral external ref와 Plane metadata에 함께 저장한다. -- [ ] 자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다. +- [x] 자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다. - [x] `backlog`에서 `todo`로 옮기는 주체는 사용자로 둔다. - [x] `todo` 상태여도 agent 작업자가 지정된 work item만 자동 실행 후보로 본다. - [x] provider API 인증은 일반 사용자형 service account token을 기본으로 둔다. - [x] Plane dev service account token은 ignored local file `.env.plane.local`에 저장하고, NomadCode project Admin 권한으로 검증한다. - - [x] worker identity는 provider assignee만으로 고정하지 않고 core metadata와 label/comment prefix로 표현한다. - - [ ] webhook-first trigger와 polling fallback의 세부 조건을 확정한다. - - [ ] agent 작업자 지정 신호를 assignee, label, 또는 둘의 조합 중 무엇으로 볼지 확정한다. + - [x] agent 작업자 지정 신호는 provider assignee가 `AGENT` 일반 사용자형 service account인 경우로 확정한다. + - [x] worker profile과 실행 단계는 core metadata와 label/comment prefix로 표현한다. + - [x] webhook-first trigger와 polling fallback의 세부 조건을 확정한다. + - [x] `worker:*`, `agent:*`, `phase:*` label은 실행 조건이 아니라 worker profile/실행 상태 표시용으로 둔다. - [ ] work item provider adapter interface를 설계한다. - [ ] core pipeline이 사용할 provider-neutral DTO를 정의한다. - [ ] work item 조회, comment 작성, status/state 변경, label projection 경계를 interface로 분리한다. @@ -117,10 +118,16 @@ Work Item Provider Pipeline Design - trigger/auth 결정: - 사용자가 `backlog`에서 `todo`로 이동시키는 행위가 AI 작업 위임 의사로 간주될 수 있는 첫 관문이다. - core는 `todo` 상태와 agent 작업자 지정 신호가 함께 있을 때만 자동 실행 후보로 본다. - - provider webhook을 우선 trigger로 사용하고, polling은 webhook 누락 또는 장애 복구용 fallback으로 둔다. + - agent 작업자 지정 신호는 provider assignee가 `AGENT` display name을 가진 일반 사용자형 service account인 경우다. + - 사용자가 `todo`로 작업을 옮기거나 `todo` 상태로 바로 생성하고, assignee를 `AGENT`로 지정하면 자동 실행 후보가 된다. + - provider webhook을 우선 trigger로 사용한다. + - polling은 webhook 누락, delivery 장애, core downtime 복구를 위한 fallback/reconciliation 경로로만 둔다. + - webhook 수신 시 payload만 신뢰하지 않고 provider API로 work item을 다시 조회한 뒤 실행 조건을 재검증한다. + - webhook과 polling 모두 동일한 idempotency 검사와 active task 중복 방지 로직을 통과해야 한다. + - fallback polling 대상은 전체 provider item이 아니라 `todo` 상태와 agent 작업자 지정 신호가 있는 후보로 좁힌다. - provider API 호출과 댓글 작성은 일반 사용자형 service account token으로 수행한다. - Plane dev token은 repo root의 ignored `.env.plane.local`에서 로드하며, 해당 token 계정은 NomadCode project Admin 권한으로 API 조회/댓글 작성 smoke가 성공했다. - - worker identity는 service account 인증 주체와 분리한다. 실제 agent 종류는 core metadata, provider label, comment prefix에 남긴다. + - worker assignment identity는 `AGENT` assignee로 판단한다. 실제 worker profile과 agent 실행 단계는 core metadata, provider label, comment prefix에 남긴다. - Plane bot user는 UI 필터와 내장 agent trigger 경로가 있어 1차 작업자 모델로 전제하지 않는다. - provider abstraction 결정: - Plane은 첫 구현 provider일 뿐이며 core pipeline의 도메인 모델이 되어서는 안 된다. @@ -135,9 +142,9 @@ Work Item Provider Pipeline Design - 각 comment 본문은 1~2줄 요약을 기본으로 하며, 자세한 실행 로그나 상태 metadata는 core에 남긴다. - 현재 지점 / 착수 상태: - 현재 상태는 `진행 중`이며, 구현 착수 전 설계 정리 지점이다. - - 현재 진행작업은 `자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다` 항목이다. + - 현재 진행작업은 `work item provider adapter interface를 설계한다` 항목이다. - 정리된 내용은 provider-neutral 방향성, Plane/Jira adapter 추상화 필요성, label/comment 기반 상태 투영 샘플이다. - - 현재 항목에서 아직 확정되지 않은 결정은 webhook-first trigger와 polling fallback의 세부 조건, agent 작업자 지정 신호를 assignee/label/조합 중 무엇으로 볼지다. + - 직전 항목인 `자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다`는 완료됐다. - 이후 남은 큰 결정은 provider adapter interface, core metadata schema, provider label mapping이다. - 다음에 이 마일스톤을 착수하면 Plane 고정 진입부 리팩토링 전에 위 결정 항목을 먼저 닫는다. - 확인 필요: trigger 방식은 현재 구현 상태와 운영 기대치를 보고 수동 endpoint 유지, webhook, polling 중 하나를 선택한다.