Parent roadmap: #525
Parent phase: #527
Background
pull_request_review events are received but GitHubWebhookPayload has no review field, so the notifications service cannot detect a changes-requested review. This is a tiny prerequisite for the killer use case.
Goal
Add review?: { state, user, submitted_at, html_url } to GitHubWebhookPayload (src/types.ts ~line 114).
Current Behavior
grep review src/types.ts shows reviewDecision/reviewerLogin on unrelated types; the webhook payload type has no review.
Desired Behavior
The review payload is typed so detectNotificationEvents can read review.state and review.user.
Implementation Requirements
- Add a
GitHubReviewPayload type and the optional field; reuse GitHubWebhookUserPayload for the user.
Public/Private Output Boundaries
- Type-only change; no output. Downstream consumers must still redact before surfacing.
Acceptance Criteria
- The field is present and typed; existing webhook handling compiles and tests pass.
Testing Requirements
npm run test:ci, 97%+ coverage. A fixture exercising a pull_request_review payload through the parser.
Parent roadmap: #525
Parent phase: #527
Background
pull_request_reviewevents are received butGitHubWebhookPayloadhas noreviewfield, so the notifications service cannot detect a changes-requested review. This is a tiny prerequisite for the killer use case.Goal
Add
review?: { state, user, submitted_at, html_url }toGitHubWebhookPayload(src/types.ts~line 114).Current Behavior
grep review src/types.tsshowsreviewDecision/reviewerLoginon unrelated types; the webhook payload type has noreview.Desired Behavior
The review payload is typed so
detectNotificationEventscan readreview.stateandreview.user.Implementation Requirements
GitHubReviewPayloadtype and the optional field; reuseGitHubWebhookUserPayloadfor the user.Public/Private Output Boundaries
Acceptance Criteria
Testing Requirements
npm run test:ci, 97%+ coverage. A fixture exercising apull_request_reviewpayload through the parser.