Per-file review governance for GitHub pull requests
Review the code that matters, as carefully as it deserves.
AI-assisted pull requests are often too large to review line by line, and GitHub's CODEOWNERS can only say who owns a path, not how carefully it must be reviewed. coance lets a repository declare, file by file, which code needs a careful human review, which needs a quick look, and which can merge without one. Then it enforces those rules on every pull request.
How it works
-
Declare review levels
Define your own levels in coance.yml, strictest first: what a reviewer must do, how many approvals a file needs, and whether the author counts. Map paths to levels in coance.yml or with annotations in CODEOWNERS.
-
A thread per file
When a pull request opens or updates, coance matches every changed file to its level and opens a review thread on each file that needs review, tagging the owners who may approve it.
-
Approve file by file
Reviewers approve a file by resolving its thread or replying /approve. A new commit to an approved file clears its approvals, so nothing changes after sign-off unseen.
-
One clear check
A summary comment shows progress, and the coance status check passes only when every file that needs review has enough approvals from eligible people.
Rules in one small file
Files that match no rule need no review, so the config only lists the code that matters.
When several levels match a file, the strictest wins, so moving a rule can never quietly
loosen review. Generated and vendored files marked in .gitattributes are left
out.
# .github/coance.yml
levels:
careful:
description: Read every changed line before approving.
quick:
description: Skim the file and check it makes sense.
rules:
paths:
careful: ["/lib/payments/", "/lib/auth/"]
quick: ["*.dart"]
Know your code's liability
On every run coance measures how much code your repository carries and how much of it is governed: total lines of code, lines under each review level, and the lines each pull request changes, in total and per level. The app charts them over time.