Skip to content

PR review feedback silently drops maintainer reviews (OWNER/MEMBER authorAssociation filtered) #1002

Description

@mindfn

Problem

PR review feedback notifications (F140 ReviewFeedbackTaskSpec) silently drop all reviews from users with authorAssociation = OWNER or MEMBER. This means maintainer reviews are never delivered — only bot/external reviews trigger notifications.

Observed behavior

Root cause

ReviewFeedbackTaskSpec.ts:508-534 applies F168 Repo Inbox's decideDelivery() policy to PR review feedback:

// F168 Phase B: apply delivery policy — OWNER/MEMBER activity is silent-log
const decision = decideDelivery({
  state: 'in_progress',
  eventKind: 'pr.review_submitted',
  authorAssociation: c.authorAssociation,
});
if (decision === 'silent-log') return false;  // ← maintainer review silently dropped

community-delivery-policy.ts:25,59:

const MAINTAINER_ASSOCIATIONS = new Set(['OWNER', 'MEMBER']);
// Rule 2: maintainer-authored activity is silent regardless of case state
if (MAINTAINER_ASSOCIATIONS.has(input.authorAssociation)) {
  return 'silent-log';
}

Why this is wrong

Two contexts use decideDelivery() with opposite requirements:

Context Purpose Maintainer activity should?
Repo Inbox (F168) Monitor community contributions; own team's activity = noise silent-log
PR Review Feedback (F140) Cat waiting for PR review; maintainer review = exactly what's awaited wake-owner ❌ wrong

Existing correct filter

ReviewFeedbackTaskSpec already has isEchoComment / isEchoReview — these correctly filter self-authored echoes (the cat's own comments posted via GitHub API). This is the right granularity: only filter yourself.

Proposed fix

Remove the decideDelivery() call from ReviewFeedbackTaskSpec.ts (lines 508-534, both comment and review filtering). PR review tracking is opt-in (cat explicitly registered) — all reviewer feedback should be delivered, regardless of reviewer's repo association. The existing isEchoComment / isEchoReview + isNoiseComment filters are sufficient.

Alternatively, add a context: 'repo-inbox' | 'pr-tracking' parameter to decideDelivery() and only apply OWNER/MEMBER silencing in repo-inbox context.

Files

  • packages/api/src/infrastructure/email/ReviewFeedbackTaskSpec.ts — lines 508-534 (remove decideDelivery calls)
  • packages/api/src/domains/community/community-delivery-policy.ts — reference only (policy itself is correct for Repo Inbox)

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedMaintainer accepted: ready for implementation/mergebugSomething isn't workingtriagedMaintainer reviewed, replied, and made an initial triage decision

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions