# Complete - m-provider-adapter-foundation/01_webhook_adapter_contract

## 완료 일시

2026-06-19

## 요약

Provider webhook adapter contract foundation을 3회 리뷰 루프 끝에 PASS로 완료했다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G05_0.log` | `code_review_local_G05_0.log` | FAIL | fake adapter가 verifier/normalizer request 전달 보존을 검증하지 못해 follow-up 생성 |
| `plan_local_G03_1.log` | `code_review_local_G03_1.log` | FAIL | `ReceivedAt` 보존을 exact timestamp로 검증하지 못해 follow-up 생성 |
| `plan_local_G02_2.log` | `code_review_local_G02_2.log` | PASS | verifier/normalizer 양쪽의 `ReceivedAt` 보존 검증까지 완료 |

## 구현/정리 내용

- `provider.WebhookRequest`, `WebhookCandidate`, `WebhookVerifier`, `WebhookNormalizer`, `WebhookAdapter` 계약을 추가했다.
- generic provider callback path가 `provider.WebhookRequest`를 생성하도록 `runtime`/`router` 타입 사용을 갱신했다.
- fake webhook adapter 기반 테스트로 verifier/normalizer request metadata와 candidate 표현을 검증했다.
- follow-up에서 verifier/normalizer 양쪽 request의 `ReceivedAt`이 원본 timestamp와 동일하게 전달되는지 `Equal(now)` assertion으로 보강했다.

## 최종 검증

- `cd services/core && go test -count=1 ./internal/provider` - PASS; `ok git.toki-labs.com/toki/gito/services/core/internal/provider`
- `cd services/core && go test -count=1 ./...` - PASS; core module 전체 package 통과
- `git diff --check` - PASS; whitespace error 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
