Skip to content

Review verdict says PASS with diff 10/10 on a sync PR that cannot build — no cross-file reachability check, and the reviewer never learns the run errored #157

Description

@mmcky

On QuantEcon/lecture-python.zh-cn#202 — the first organic production sync on v0.23.0 — the translation review returned PASS with diff quality 10/10, scopeCorrect ✅, structurePreserved ✅ and headingMapCorrect ✅, on a PR whose _toc.yml names a document that is in neither the PR nor the target repo, and whose build fails.

"diffChecks": { "scopeCorrect": true, "positionCorrect": true, "structurePreserved": true, "headingMapCorrect": true },
"diffCheckSources": { "scopeCorrect": "model", "positionCorrect": "model", "structurePreserved": "deterministic", "headingMapCorrect": "deterministic" },
"engineVersion": "0.23.0"

The underlying defect is #156 (a partial run committed a TOC entry for a file it refused to write). This issue is about the second-order failure: nothing downstream noticed.

Two distinct gaps

1. No deterministic reachability check. structurePreserved and headingMapCorrect are deterministic as of #148, but both are within-file invariants. Nothing checks the cheapest cross-file invariant there is: every _toc.yml entry, and every {doc}/{numref}/{cite} reference introduced by the diff, should resolve against the union of (target repo ∪ this PR). That is a pure filesystem-and-regex check with no model call, and it would have caught six dangling references here.

2. The reviewer never learns the sync run errored. Review runs against the committed diff with no channel carrying "this PR is the output of a run that failed on one of ten files". Even a perfect reviewer of the diff-as-committed cannot see that, because the evidence lives in the source repo's run log and its auto-filed issue, not in the diff.

Why this matters beyond one PR

This is the first organic production data point for #147, and it is a PASS on a PR that cannot build. The gating floors in verdict v2 exist to stop exactly this from reaching auto-merge. Had the routing been auto-merge rather than editor, this would have landed a broken build on main — it routed to editor only because of unrelated terminology findings, which is to say the thing that saved it was a coincidence.

For Stage 4 calibration the consequence is sharper than a single miss: any base rate fitted on diff-check scores currently treats "PR builds" as out of scope, so the floors will be fitted against a quality signal that is uncorrelated with the most consequential failure mode we have actually observed in production.

Suggested fix

Add the reachability check as a deterministic diff-check (a fifth entry alongside structurePreserved, sourced deterministic), and thread the run's error set into the review input so a partial sync cannot be scored as if it were complete. The first is worth doing regardless of the second — it is cheap, it has no model dependency, and it generalises past this incident to any PR that introduces a reference faster than the asset it points at (see #117).

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

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions