Skip to content

chore(review-loop): send fewer PRs to a human - #1734

Merged
jhgaylor merged 1 commit into
mainfrom
chore/review-loop-human-gate
Sep 7, 2026
Merged

chore(review-loop): send fewer PRs to a human#1734
jhgaylor merged 1 commit into
mainfrom
chore/review-loop-human-gate

Conversation

@jhgaylor

@jhgaylor jhgaylor commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Why

Every one of the first eleven Review Loop runs against this repository ended with needs-human-review (#1661, #1666, #1675, #1681, #1682, #1683, #1718, #1719, #1720, #1722, #1724, #1725, #1730). Reading the summaries, two things produced that:

What changes

.github/review-loop.yml: human_review_paths is now the places where a wrong automatic approval is hard to undo or would weaken a gate: this policy and .github/review/**, the workflows, migrations, LICENSE*/NOTICE, Dockerfile/rel/**/deploy/**, the three SDK version files whose merge publishes a package, the gate thresholds (coverage.exs, .credo.exs, .sobelow-conf) and gate scripts, and decisions/**. Dropped: scripts/** (other than the gate scripts), config/**, deployed/**, images/**, the dependency manifests, the contract manifests and omissions, CLAUDE.md, CONTRIBUTING.md, AGENTS.md, and the compose/fly/render files (several of which do not exist in the tree).

The four reviewer files: the needsHuman guidance is rewritten with one rule in common. The one case that always warrants it is a change that contradicts a decision an Accepted ADR records, cited by ADR and sentence, and a PR that amends the ADR to fit counts the same. Beyond that it is reserved for a medium-or-higher finding whose remedy a maintainer must choose and cannot easily reverse (public contract, migration or retention, licensing, authorization model, a repair outside the fix policy). A low or info finding is never needsHuman and never a product_decision. Intent the approved base already records (an ADR, CONTRIBUTING.md, the CHANGELOG, the linked issue) is settled when the PR follows it.

.github/review/README.md: describes the two producers of a human decision and the narrowed rule.

Notes

  • This PR touches .github/**, so it goes to a human by its own policy; the base policy governs its run, as designed.
  • No Elixir, so mix precommit does not apply. The YAML parses and fits the service's policy schema (server/policy.ts: human_review_paths is a plain string array).

🤖 Generated with Claude Code

https://claude.ai/code/session_015YbHtxQBZQ6pDHFsqumcuR

Every one of the first eleven Review Loop runs against this repository
ended with needs-human-review. Two things produced that. The path list
sent a dependency bump, a doc edit, an ADR and anything under scripts/,
config/ or deployed/ to a maintainer regardless of what the reviewers
found. And the reviewers set needsHuman on low and info findings (line
wrapping, a condition written out four times, a missing cross-reference),
which the host honours at any severity: it downgrades a low or info
*defect* to nonblocking, but a low or info finding marked needsHuman or
filed as a product_decision still ends the run.

The path list is now the places where a wrong automatic approval is hard
to undo or would weaken a gate: the policy and its instructions, the
workflows, migrations, licensing, the release and deployment definitions,
the SDK version files whose merge publishes, the gate thresholds and
scripts, and the ADRs. The four reviewer files name the one case that
always warrants needsHuman, a change that contradicts a decision an
Accepted ADR records, reserve the rest for medium-or-higher findings a
maintainer must choose and cannot easily reverse, and say a low or info
finding is never needsHuman. Intent the approved base already records is
settled when the PR follows it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015YbHtxQBZQ6pDHFsqumcuR
@jhgaylor
jhgaylor merged commit 7aecf6e into main Sep 7, 2026
22 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant