Three flags parsed cleanly, changed nothing, and gave no sign of it.
buddy scan --strategy with --packages / --pattern
buddy scan --strategy patch --packages reactfolded --strategy into the config and listed the major anyway. The full scan filters by strategy; the targeted paths called the registry client directly and returned whatever it found. All three entry points now share filterUpdatesByStrategy.
buddy review <pr> --format and --fail-on
Accepted on the pull request path, applied only on the local one. The PR branch delegated to runReviewForPR, which returns a status string — enough for an @buddy review reply, not enough to render findings or gate an exit code. So the findings never reached the command and both flags fell through silently.
reviewPullRequest now returns { status, result }; runReviewForPR is the string form, so the comment path is untouched. The CLI renders when a format other than pretty is asked for, and exits non-zero when --fail-on matches.
The review is posted regardless — the flags govern what the terminal sees and what the process returns. That's what lets buddy review 123 --fail-on major gate a pipeline on the review it just left, which the docs now say.
A fixture note worth keeping
The engine reads response.json, not response.text. A stub returning only text produces a review with no findings — indistinguishable from "nothing to report." The existing fixture in review-parity.test.ts had been passing for exactly that reason. Same shape as the autoMigrate fixture in #1423: a test that can't tell the feature from its absence.
Tests
2153 → 2160.
Lint ✓ · typecheck ✓ · check:docs ✓ · 0 fail
🤖 Generated with Claude Code