문서: 작업 트리거 결정을 정리한다

This commit is contained in:
toki 2026-05-23 18:14:01 +09:00
parent 639c64e204
commit 881753bc54
2 changed files with 16 additions and 9 deletions

View file

@ -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
## 선택 규칙

View file

@ -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 중 하나를 선택한다.