# Phase: Provider Change Request Integration

## 상태

[진행중]

## 목표

GitHub PR, GitLab MR, Gitea PR 같은 provider 기능을 provider-neutral ChangeRequest 인터페이스로 묶는다. 외부 연동은 GitHub webhook과 유사한 HTTP webhook/callback 모델로 맞추고, Webhook은 빠른 wakeup signal로 사용하되 최종 상태 판정은 Git revision/diff와 provider read API로 재검증한다. 현재 최우선 slice는 NomadCode가 generic `branch.updated` HTTP webhook delivery를 wakeup으로 받을 수 있게 하는 것이다.

## Milestone 흐름

완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획, 스케치 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다.
완료, 검토중, 진행중, 계획, 스케치 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다.
스케치 Milestone은 아직 구현 가능한 계획이 아니므로 계획 Milestone보다 아래에 둔다.

- [완료] Webhook Revision Reconcile
  - 경로: `agent-roadmap/archive/phase/provider-change-request-integration/milestones/webhook-revision-reconcile.md`
  - 요약: NomadCode branch event wakeup 대응을 최우선으로 두고 provider webhook, outbound consumer webhook, polling, Git revision scan을 같은 변경 event로 정규화하고 재검증한다.

- [완료] Provider Adapter Foundation
  - 경로: `agent-roadmap/archive/phase/provider-change-request-integration/milestones/provider-adapter-foundation.md`
  - 요약: provider registry, credential ref, webhook intake, provider capability boundary를 만든다.

- [완료] Change Request Abstraction
  - 경로: `agent-roadmap/archive/phase/provider-change-request-integration/milestones/change-request-abstraction.md`
  - 요약: GitHub PR, GitLab MR, Gitea PR을 공통 ChangeRequest action과 event로 표현한다.

## Phase 경계

- Git 자체 조작은 provider adapter가 아니라 platformless Git engine이 맡는다.
- provider adapter는 PR/MR/review/checks/comment/webhook 같은 플랫폼 API만 맡는다.
- provider별 credential 원문은 tracked 파일에 저장하지 않고 credential ref로만 연결한다.
- provider webhook만으로 상태를 확정하지 않고 Git revision 또는 provider read API로 확인한다.
- 외부 consumer event delivery는 HTTP webhook/callback으로 제공하며 proto-socket을 외부 연결 규약이나 보조 transport로 제공하지 않는다.
- NomadCode branch event webhook delivery는 ChangeRequest/PR/MR abstraction을 기다리지 않는 우선 slice로 처리한다.
