- Add Plane webhook handler for issue events (created, state, assignees) - Add Plane webhook integration tests with testdata fixtures - Add Gito Protosocket consumer wire readiness milestone - Add Plane work item webhook intake milestone - Add agent-task for plane-work-item-webhook-intake (trigger dispatch, idempotency, live smoke) - Update service config, router, handlers for Plane webhook endpoints - Add SOPS env setup script and secrets configuration - Update agent-ops domain rules and phase roadmap
6.5 KiB
Code Review Reference - WEBHOOK_SMOKE
[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. Do not ask the user directly, present choices in chat, or callrequest_user_inputduring implementation. Finalization is review-agent-only.
개요
date=2026-06-14 task=m-plane-work-item-webhook-intake/04+01,02,03_live_smoke, plan=0, tag=WEBHOOK_SMOKE
Roadmap Targets
- Milestone:
agent-roadmap/phase/agent-ops-mcp-control-plane/milestones/plane-work-item-webhook-intake.md - Task ids:
live-smoke: Plane UI에서 상위 티켓을 만들고 Backlog 상태에서 AGENT에 assign하면 NomadCode task가 생성되고 Milestone authoring flow가 시작된다.
- Completion mode: check-on-pass
이 파일을 읽는 리뷰 에이전트에게
[REVIEW AGENT ONLY] 구현 결과를 실제 소스와 대조하고, PASS이면 code-review 절차에 따라 log/complete/archive를 처리한다. 구현 에이전트는 이 섹션을 실행하지 않는다.
구현 항목별 완료 여부
| 항목 | 완료 여부 |
|---|---|
| [WEBHOOK_SMOKE-1] Remote Deploy | [ ] |
| [WEBHOOK_SMOKE-2] Plane Event Delivery | [ ] |
| [WEBHOOK_SMOKE-3] Core Task And Authoring Evidence | [ ] |
구현 체크리스트
- 원격 Core checkout에 services/core, root
bin/nomadcode-sops-env,secrets/nomadcode.dev.sops.yaml을 동기화하고 SOPS env로 compose를 재기동한다. - Plane UI 또는 API로 새 top-level work item을 Backlog 상태에서 만들고 AGENT assignee를 설정해 webhook delivery를 발생시킨다. 검증: 테스트 Plane 티켓 id, Core task id, authoring run 시작 또는 ignored 사유를 secret redaction 상태로 기록한다.
- Plane webhook log와 Core log/API evidence를 수집해
agent-test/plane-dev.md와 milestone 작업 컨텍스트에 non-secret 결과만 남긴다. - CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
코드리뷰 전용 체크리스트
[REVIEW AGENT ONLY] 이 체크리스트는 코드리뷰 에이전트만 사용한다.
코드리뷰 결과에PASS,WARN,FAIL중 하나의 판정을 append한다.- active
CODE_REVIEW-*-G??.md와PLAN-*-G??.md를.log로 아카이브한다. - PASS이면
complete.log를 작성하고 active task 디렉터리를agent-task/archive/YYYY/MM/m-plane-work-item-webhook-intake/04+01,02,03_live_smoke/로 이동한다. - PASS이고 task group이
m-plane-work-item-webhook-intake이므로 완료 이벤트 메타데이터를 보고한다. roadmap 수정은 런타임 책임이다.
계획 대비 변경 사항
구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다.
주요 설계 결정
구현 에이전트가 주요 설계 결정 사항을 기록한다.
사용자 리뷰 요청
기본값은 없음이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 request_user_input을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다.
- 상태: 없음
- 사유 유형: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음
리뷰어를 위한 체크포인트
- Evidence includes Plane ticket id, Core task id, and authoring start or explicit ignored reason.
- No raw secret/token/auth password appears in tracked docs or pasted output.
- Remote health, Plane webhook log, and Core log evidence refer to the same smoke work item.
검증 결과
구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다.
WEBHOOK_SMOKE-1 중간 검증
$ curl -fsS http://toki-labs.com:18010/healthz
(output)
$ ssh toki@toki-labs.com 'cd ~/agent-work/nomadcode/services/core && /usr/local/bin/docker compose logs --tail=80 nomadcode-core'
(output)
WEBHOOK_SMOKE-2 중간 검증
$ ssh toki@toki-labs.com "cd ~/docker/agent-service/plane/compose && /usr/local/bin/docker compose exec -T postgres sh -lc 'psql -U plane -d plane -Atc \"select created_at, event_type, response_status, request_body::jsonb->>''action'', request_body::jsonb#>>''{data,id}'', request_body::jsonb#>>''{activity,field}'' from webhook_logs order by created_at desc limit 10;\"'"
(output)
WEBHOOK_SMOKE-3 중간 검증
$ ssh toki@toki-labs.com 'cd ~/agent-work/nomadcode/services/core && /usr/local/bin/docker compose logs --tail=300 nomadcode-core | grep -E "plane webhook|work item|task|authoring|ignored"'
(output)
최종 검증
$ ssh toki@toki-labs.com 'zsh -lc "cd ~/agent-work/nomadcode/services/core && go test -count=1 ./..."'
(output)
$ curl -fsS http://toki-labs.com:18010/healthz
(output)
$ ssh toki@toki-labs.com "cd ~/docker/agent-service/plane/compose && /usr/local/bin/docker compose exec -T postgres sh -lc 'psql -U plane -d plane -Atc \"select created_at, event_type, response_status, request_body::jsonb->>''action'', request_body::jsonb#>>''{data,id}'', request_body::jsonb#>>''{activity,field}'' from webhook_logs order by created_at desc limit 10;\"'"
(output)
$ ssh toki@toki-labs.com 'cd ~/agent-work/nomadcode/services/core && /usr/local/bin/docker compose logs --tail=300 nomadcode-core | grep -E "plane webhook|work item|task|authoring|ignored"'
(output)
$ git diff --check
(output)