Reviews that expire unread
Branch feat/coderabbit-harvest-stage, 2026-09-03. On Yonatan-HQ/platform, last 80 PRs measured 2026-09-02: CodeRabbit posted 65 threads on 24 PRs. 3 resolved, 4 outdated, and 23 of the 24 PRs merged with every thread still open. A hand-verified batch on 08-24 was 6 real out of 9, so the reviews were worth reading and nobody read them. The new create-pr phase makes reading them a gate.
1. The measured baseline
| Measure | Value | What it means |
|---|---|---|
| PRs sampled | 80 | Yonatan-HQ/platform, newest first |
| PRs CodeRabbit reviewed | 24 | the rest had no threads |
| threads posted | 65 | one GraphQL read per PR sees them all |
| threads resolved | 3 | 4 more went outdated on later pushes |
| reviewed PRs merged with open threads | 23 of 24 | no SDLC step read the review before merge |
| hand-verified findings that were real | 6 of 9 | 08-24 batch; refuting is cheaper than ignoring |
2. Walk a sample PR through the contract
Five threads as the harvest script prints them. For each, the refuter returns refuted: true or false. Survivors get a fix commit and a reply naming the sha; refuted ones get a one-line dismissal. Every thread is resolved either way. The phase ends only when the unresolved count is zero.
| path:line | severity | title | refuter verdict | reply posted | state |
|---|
3. The severity and title parser
The script reads CodeRabbit's body format: the first line carries _category_ | _emoji Severity_ | _effort_, and the first bold line is the title. Paste any thread body and see what the jq filter extracts. Unknown severities do not fail the read; they print unknown and still count as unresolved.
4. Where the phase sits
Termination. A fix push can trigger new threads. Those get exactly one more pass; anything left is replied Deferred to #<issue> with a filed issue and resolved, so the phase cannot loop. Skipped when the repo has no .coderabbit.yaml or the PR is still a draft. Read mode was exercised against a real PR with four threads; no real thread was replied to or resolved.