Skip to content

Port the sibling repo's required scored-review gate: CLEAN is near-zero evidence a review happened #316

Description

@vitali87

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions