The measurement
Taken from the actual board on 2026-08-26:
|
|
open PRs reporting mergeStateStatus: CLEAN |
5 |
| of those, carrying an unaddressed REQUEST_CHANGES at their exact head SHA |
3 (#297, #309, #311) |
A 60% false-permission rate. Merging on the aggregate would have landed all three over live objections.
Why CLEAN says so little here
CLEAN reports one thing: no branch-protection rule is currently blocking the merge. croft has no rule requiring a review, so the signal never consults review state at all. It is not weak evidence that a review happened — it is close to zero evidence, because the question it answers does not mention reviews.
The same shape appears one level down. gh pr checks on #297 showed:
CodeRabbit pass Review rate limited
A green row meaning no review ran. And the rate-limit notice on that PR is 10,076 characters — larger than both genuine reviews (3,245 and 4,626) — so "longest bot comment" selects the non-review. Length is not weak evidence here, it is inverted.
The general form
Requiring the positive artifact is necessary but not sufficient — the artifact must also be about the thing you named:
| signal |
real artifact? |
but about… |
| stale review |
yes |
the wrong commit |
test result: ok, 0 tests selected |
yes |
no test at all |
mergeStateStatus: CLEAN |
yes |
branch rules, not review |
rate-limited bot pass |
yes |
the check having run |
The second half is invisible to the first, which is why it keeps being rediscovered.
Proposal
Port the equivalent of the sibling code-graph-rag repo's required Greptile 5/5 Gate job: poll until a scored review names the exact head SHA, and fail on a stale, missing, or lower-scored one. That converts a habit into a mechanism, so the merge is blocked rather than merely discouraged.
CONTRIBUTING.md/CLAUDE.md already describe this discipline in prose and note croft has no such gate today. The measurement above is the argument for closing that: the rules are being followed by attention, and attention is what a hurried session skips.
This is a repo-policy change (branch protection + a required job), so it needs the owner's decision rather than being actioned from a session.
The measurement
Taken from the actual board on 2026-08-26:
mergeStateStatus: CLEANA 60% false-permission rate. Merging on the aggregate would have landed all three over live objections.
Why CLEAN says so little here
CLEANreports one thing: no branch-protection rule is currently blocking the merge. croft has no rule requiring a review, so the signal never consults review state at all. It is not weak evidence that a review happened — it is close to zero evidence, because the question it answers does not mention reviews.The same shape appears one level down.
gh pr checkson #297 showed:A green row meaning no review ran. And the rate-limit notice on that PR is 10,076 characters — larger than both genuine reviews (3,245 and 4,626) — so "longest bot comment" selects the non-review. Length is not weak evidence here, it is inverted.
The general form
Requiring the positive artifact is necessary but not sufficient — the artifact must also be about the thing you named:
test result: ok, 0 tests selectedmergeStateStatus: CLEANpassThe second half is invisible to the first, which is why it keeps being rediscovered.
Proposal
Port the equivalent of the sibling
code-graph-ragrepo's requiredGreptile 5/5 Gatejob: poll until a scored review names the exact head SHA, and fail on a stale, missing, or lower-scored one. That converts a habit into a mechanism, so the merge is blocked rather than merely discouraged.CONTRIBUTING.md/CLAUDE.mdalready describe this discipline in prose and note croft has no such gate today. The measurement above is the argument for closing that: the rules are being followed by attention, and attention is what a hurried session skips.This is a repo-policy change (branch protection + a required job), so it needs the owner's decision rather than being actioned from a session.