# Function aggregatePrDecisions

MCP exports - MCP server implementation Split from index.ts for file size compliance (Issue #285) Updated Issue #538: Added missing tool registration exports

- aggregatePrDecisions(reviews: readonly PrReviewVote[]): PrReviewAggregate

  Aggregates per-voter decisions into a single summary outcome with a verified/unverified tag (#2250 Child 7).

  Tiers, in order:

  1. Verified blocker (`request_changes`, verified=true) — at least one non-error voter declared `request_changes` AND has at least one VERIFIED finding (all 4 gate checks passed with substantive named_assertion). This is the #2225 verification gate.
  2. Soft blocker (`request_changes`, verified=false) — ≥3 of 5 non-error voters voted `request_changes`, but none produced a verified finding. The retest in #2241 showed voters reliably flag diff-readable bugs at this rate even without producing the YAML structure (#2245 covers why). Tagged unverified so reviewers apply the verification gate themselves.
  3. Approve (verified=true) — all non-error voters approve.
  4. Abstain (verified=true) — anything else; conservative default.

  Why no "AND has any finding" guard on the soft path: the empirical data in `pr-review-experiment-results-v2.md` showed voters voting request_changes but emitting 0 findings (verified or otherwise). Adding the finding requirement would zero this path out and reproduce the baseline behavior.

  #### Parameters

  - reviews: readonly PrReviewVote[]

  #### Returns PrReviewAggregate

  - Defined in packages/nexus-agents/src/mcp/tools/pr-review-tool.ts:182