Skip to content

[infra][L] Local-reviewer reliability is critical-path and unowned #124

Description

@twistedmelonman

Why this exists

The 2026-09-08 decision removed the judgment reviewer from CI, on the
reasoning that local hooks are the judgment pass. That decision stands — the
2026-09-10 backlog evaluation re-examined it and found it still correct.

But the consequence is unowned. Local-reviewer reliability is now
critical-path for the entire fleet, and nothing in L2–L5 targets it. This is
the largest gap that evaluation found
(docs/superpowers/plans/2026-09-10-backlog-evaluation.md, section 3).

dev-env#116 independently reinforces it: claude-code-action structurally
refuses to review any PR touching .github/workflows/, so the class of change
most worth reviewing is precisely the class CI cannot review at all. There is
no second opinion behind the local reviewer.

The evidence, all filed after that decision

All five verified OPEN on 2026-09-11:

Issue Defect
claude-config#488 Fabricated a blocking security finding against a file that does not exist
claude-config#455 Blocks a documented Netlify token as "undefined"; non-deterministic across repos, rejects direct documentation evidence
claude-config#489 Full-diff pre-push review has no access to the commit message or PR intent
claude-config#481 Runs AI review on artifact-only commits (logs, tsv, scratch)
claude-config#496 Advertises Chesterton's Fence in output instead of applying it

Two distinct failure classes, and they pull in opposite directions:

  • False positives that block (#488, #455) — the reviewer invents or
    misreads, and a correct change cannot land. Cost is paid immediately and
    loudly.
  • Missing context that lets things through (#489, #481) — the reviewer
    judges a diff it cannot interpret. Cost is paid silently, later.

A fix that only suppresses noise makes the second class worse. That tension is
the substance of this item, not an implementation detail.

What this item is

A reliability pass on the local reviewer as a system, not five separate bug
fixes. Minimum it should establish:

  1. A known-bad corpus. Cases the reviewer must block and cases it must
    pass, run as a suite. Today there is no way to tell whether a prompt change
    improved or regressed anything — every fix is evaluated by eyeballing one
    diff. Note the prior art:
    reference_mock_fidelity_blind_spot records green suites over broken code
    three times because the mocks encoded assumptions rather than measurements.
    The corpus has to come from real observed findings, #488 and #455 included.
  2. A determinism measure. #455 reports the same input judged differently
    across repos. Quantify it before changing anything.
  3. A decision on context. #489 is not a bug so much as a design gap: the
    pre-push reviewer sees a diff with no commit message and no PR intent.
    Either it gets that context or its mandate should shrink to what a diff
    alone can support.
  4. A scoping rule. #481 — artifact-only commits should not reach the AI
    reviewer at all.

Explicitly not in scope

Reversing the 2026-09-08 decision. Putting judgment back in CI is a different
argument, and dev-env#116 is evidence against it. This item makes the chosen
design work rather than relitigating it.

Acceptance

Not "the five issues are closed" — that would be satisfied by suppressing
output. Rather: a corpus exists, it fails against today's reviewer on the
known-bad cases, and it passes after the work. Validate the check against a
known-bad case first; a clean result from an unfalsified check proves nothing.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions