Repository navigation
fix(autofix): route coverage-evidence failures from Required OpenCode Review into bounded RCA #2169
Description
Problem
PR #2079 exact head 9dccfaa0776950498e557390a2fa8d6c34e0baf4 exposes a deadlock in the central repair scheduler.
Required OpenCode Review run 34757059796 reached coverage-evidence job 103723268900 and failed at Measure test and docstring evidence because touched-callable docstring coverage is 76.47% (13/17; required 80%). The model-pool review is intentionally skipped after this pre-review gate fails, so no current-head OpenCode CHANGES_REQUESTED review can exist.
At current protected .github/main 78393ea901efc0d57b35dd1e383e473425b7c1da, scripts/ci/pr_review_fix_scheduler.py has two individually sensible rules that combine into a repair deadlock:
needs_rca_repair()can dispatch from terminal failed checks without a prior OpenCode review.current_head_failed_checks()drops any CheckRun whose workflow name is inRCA_IGNORED_WORKFLOW_NAMES, which includesOpenCode Review,Required OpenCode Review, andOpenCode PR Review.
Therefore a source-backed coverage-evidence failure emitted inside Required OpenCode Review is ignored by the failed-check path, while the alternative review-text path cannot exist because coverage failure prevented the model review from running.
Reproduction / RED
Create a PR-shaped fixture whose latest CheckRun is:
- workflow:
Required OpenCode Review - check/job name:
coverage-evidence - conclusion:
FAILURE - no OpenCode review submission
Current behavior: current_head_failed_checks(pr) == () and needs_rca_repair(pr) == (False, ()).
Required behavior: the scheduler must classify this as bounded RCA evidence and dispatch repair_mode=rca for the exact head.
Also keep the recursive control-plane guard: an opencode-review orchestration/status failure itself must remain ignored, as must metadata-only/queue-controller failures. Do not make all OpenCode workflow failures repairable.
Minimal causal repair
Prefer check-name-aware filtering over globally removing the workflow-name guard. Allow the source-backed pre-review gate(s) such as exact coverage-evidence to survive the workflow-name exclusion while retaining exclusions for orchestration/control-plane checks. Add regression coverage for:
- Required OpenCode Review + failed
coverage-evidence=> RCA dispatch without prior review; - same workflow + failed
opencode-review=> no recursive RCA; - successful/pending newer
coverage-evidenceattempt supersedes stale failure; - exact-head/dedup/live-head protections remain unchanged.
No threshold lowering, synthetic status, manual/no-op rerun, provider fallback, or self-approval is an acceptable fix.
Concrete blocked owner case
#2079 needs only four behavior-neutral fixture-method docstrings (Response.__enter__, Response.__exit__, Response.read, Opener.open) to clear the observed coverage RED, but the central autonomous repair lane currently cannot reach that source repair from the failed pre-review gate. The PR has an exact-head review comment recording that causal repair.
Activity
seonghobae commentedon Sep 13, 2026
Owner repair advanced on #2170. RED was strengthened in
67dfa048446c96d99e3db2ebacdc02d16ed6294eso a newerIN_PROGRESSRequired OpenCodecoverage-evidenceattempt suppresses stale failure for bothcurrent_head_failed_checks()andneeds_rca_repair(). Production repair7cda25c8b903108051e0d1d78e49d2b692a94a4anow admits onlycoverage-evidencethrough the retained OpenCode-workflow exclusion;opencode-reviewremains excluded, so no recursive control-plane repair is enabled. Mechanical source delta from the strengthened RED is +5/-1 inscripts/ci/pr_review_fix_scheduler.py. #2170 is SOURCE_REPAIRED / ACCEPTANCE_PENDING with fresh hosted workflows generated; do not close this issue until exact-head checks/review are terminal GREEN and the repair lands normally.seonghobae commentedon Sep 13, 2026
Current owner repair is now #2170 exact
d3f1d0264912e74b897fdf2a0a6085100de4e40a. Self-review found the first source allowlist too broad because it keyed on check name alone. REDd01316990c9410165736ef09f0ab9979241078e8now provesOpenCode Review / coverage-evidenceremains excluded; production repair admits only the exact tupleRequired OpenCode Review / coverage-evidencewhile retainingopencode-reviewrecursion exclusion. The strengthened RED→fix compare is one commit ahead / zero behind and only +4/-2 inscripts/ci/pr_review_fix_scheduler.py. Fresh exact-head hosted runs are queued, so keep this issue open until terminal acceptance and normal landing.seonghobae commentedon Sep 24, 2026
Fresh owner-path audit from OriginWeave #237 exposes a newer #2170 generation that supersedes this issue's last acceptance-pending notes.
GitHub's live PR metadata now reports #2170 exact
422ba67ce3eba06632266a0f6452754b63c50052on stored base64aa08d7fa487deacd41c761c36277ca68cab6c9, while the PR body still names olderc346b832.../main@91be644.... Treat the body as stale authority until reconciled.On exact
422ba67c..., current hosted evidence is not acceptance-pending GREEN:35272051584: SUCCESS;35272051574/ job105373565699: FAILURE atVerify exact-head path policy and syntaxafter dependency/toolchain setup succeeded;35272051589/ job105373566106: real SARIF generation/upload succeeded, then FAILURE atEnforce Semgrep gate (fail on Medium+ findings);35272051627: detection and pip-audit are SUCCESS, but Bandit job105443123338generated/uploaded SARIF and then FAILED atEnforce bandit gate (fail on MEDIUM+ findings);35272051608: CANCELLED.Separately, unchanged OriginWeave #237 exact
4d175467...is a current consumer canary for the scheduler problem: central Required OpenCode run35714835267hascoverage-evidencejob106752951786failing specifically atMeasure test and docstring evidence; model-pool execution is skipped and the published formal review is fail-closedCHANGES_REQUESTED/COVERAGE_BLOCKED. Native OriginWeave Production coverage is GREEN, so that review must not be dismissed or reinterpreted as product acceptance.Please preserve #2170's valid scheduler repair, but first read/adopt the intervening exact-head deltas and RCA the three current security/path-policy failures on
422ba67c...; do not blind-rerun, revert to the stale body head, weaken coverage/security thresholds, synthesize a verdict, or require a leaf no-op wake. After owner exact-head GREEN + normal landing, #237 should be reevaluated unchanged through the repaired Required OpenCode path.