gitea-saas-core#42: review-gate calibration — measure the false-approve rate before selling auto-merge #47
No reviewers
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: pbwraith/gitea-saas-core#47
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "issue-42"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #42
What
A calibration harness that measures the existing review gate's false-approve rate on real farm history — before gold-tier auto-merge is sold. Measure first; reviewer.py / review_policy.py are NOT touched (read-only).
Deliverables
tests/calibration/corpus/: 25 real farm PRs with KNOWN correct outcomes, drawn from 11 pbwraith repos' merged and bounced history. Each entry records the inputs the gate saw (linked issue body, changed files, diff, observed test/hygiene exit). The two botmanager cases from the issue are in the corpus with their outcomes recorded:botmanager-220(!220, the undefined-component crash shipper, botmanager#223): known outcome should_bounce, recorded green gate inputs.botmanager-bang22(!22, sibling-merge regression): known outcome should_bounce, recorded as owner-documented (original head predates the repo's renumbering; closest surviving record botmanager#201).tests/calibration/run_calibration.py: one-line command (python tests/calibration/run_calibration.py) re-runs the existing deterministic reviewer against the corpus and regenerates the report. No network, deterministic.tests/calibration/calibration_report.md.CALIBRATION.md.Measured numbers
Recommendation
NO — gold-tier auto-merge is not safe to sell yet. 0% is an artifact of refusal, not quality: the approve path has no check that would have stopped either documented regression (wrong test target; no sibling-merge verification), and the gate cannot evaluate 44% of real farm issues (acceptance-format blindness). Close coverage + test-target selection + sibling-merge verification first, then re-run this calibration.
Gate
python -m pytest -q: 239 passed, 1 skipped (pre-existing skip)git diff --check: cleantests/calibration/+CALIBRATION.mdHeld —
mainis red, and it is not this PR's faultGated against the real merge result. The comparison that matters:
origin/main@71cc263(no PR)main+ this PRThe same 10 failures, and this PR adds 4 passing tests and zero new
failures. Every failure is in
tests/test_review_workspace.py/tests/test_reviewer.py— files this PR does not touch.So this is not a bounce and nothing is being asked of you. The work is good; it
is queued behind a pre-existing defect filed as #48: on Windows the shell
eats the
^ingit rev-parse --verify <sha>^{commit}, soReviewWorkspacecannot build a synthetic merge on the review box at all.
I will not merge onto a red
main— with the baseline broken there is no way totell a genuine regression from the existing noise, which is exactly how
botmanager shipped a broken
masterlast week. Once #48 is green I willre-gate and merge.
Merged — verified against green
main240 passed, 1 skipped, 0 failed;
mainafter !49 is 236 passed. 0 conflicts, confirmed with a realgit mergeafter Gitea briefly reported this unmergeable — that was stale metadata frommainmoving, not a genuine conflict.This PR was held, never bounced: it was queued behind the Windows caret defect (#48). A 24-PR corpus from this farm's real history, including botmanager-220 and botmanager-231 — the two cases that would have auto-merged under gold tier. The number is the deliverable, not a passing test.