Repository navigation
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Problem
pr-verify ran 902 times between 2026-10-19 17:30Z and 2026-10-20 ~17:30Z, all on workflow_run. 470 succeeded, 426 skipped, 4 failed and 2 were cancelled (count from the GitHub Support hub's run listing). Almost half the runs start only to skip. They use runner minutes and API budget, and they push pr-verify's daily run listing past 500 entries, which broke the lost-run reconciler's listing (#8685 and its follow-up).
Options
- Narrow
on.workflow_run.workflowsortypesin.github/workflows/pr-verify.ymlso only the upstream completions that can lead to a judgment trigger a run. - Or move the job-level skip condition into the trigger where the event allows it.
Constraints
- This is a trigger change to a lane workflow, so it needs Security & Cost's pass and the owner's merge.
- Bundle it with the pending pr-require-checks label/edit trigger trim, per the GitHub Support hub.
- Keep test(pr-pipeline): add the planted-defect replay harness for pr-verify #8681's parity test in step with any change to pr-verify.yml.
Acceptance
- Skipped pr-verify runs drop to near zero per day.
- Every PR head that pr-verify judges today still gets judged.
Metadata
Metadata
Assignees
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
No fields configured for Task.
Activity
github-actions commentedon Oct 20, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Knowable
Flags: none
Blocked by: none
#8695 (comment)
This decision settles the open questions. The work is to add a
branches-ignorefilter (main,gh-readonly-queue/**) to pr-verify's workflow_run trigger. The job-levelifand pr-require-checks' pull_request types stay as they are. A test should confirm feature-branch PR runs are still judged, and #8681's parity test must still pass. One point to check during the work: whether workflow_run honorsbranches-ignoreagainst the triggering run's head branch, which the decision marks as unverified.Automated triage, applied by the lanes App.
kyle-sexton commentedon Oct 25, 2026
Released for re-triage under the owner's 2026-10-24 rule: an issue stops for a person only for an intent or vision question, a security call, a host or attended run, or spend outside prepaid credit. The hold label came off and intake triage runs again now; it re-applies a hold, with a numbered question, when one of those applies.
To hold this issue again, add
needs-human(orstatus: needs-decision) and say why in a comment.melodic-automation-lanes commentedon Oct 25, 2026
Not admitted to the issue lane: no trusted-human acceptance criteria: a listed human must put the confirmed
- [ ]criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).melodic-automation-lanes commentedon Oct 25, 2026
The latest triage verdict holds nothing: the issue is at
status: ready.melodic-automation-lanes commentedon Oct 25, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: Cut pr-verify's skip-only workflow_run runs by trimming the upstream pr-require-checks runs that cannot lead to a judgment, keeping the job-level filter and updating the parity test.
Dependencies
Related work
Open questions
RECOMMENDED: Yes. Keep the job-level if as the safety net, trim upstream runs that cannot lead to a judgment, and restate the acceptance as a measured drop, for example under 50 skipped runs a day. Basis: .github/workflows/pr-verify.yml:39-43,64-68
RECOMMENDED: Trim the edited, labeled and unlabeled pull_request types as the pending trim intends, if the contract-only answers can be obtained another way; leave schedule, dispatch and merge_group alone because the merge queue needs them. Basis: .github/workflows/pr-require-checks.yml:3-68
RECOMMENDED: Yes, as a test: replay a set of recorded upstream runs through the old and new triggers and assert the same heads are judged, via the parity test. Basis: .github/scripts/pr-verify/probe/parity.test.mjs
Sources read
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Oct 26, 2026
Decision recorded. The owner answered in the Issue Triage session (2026-10-25), accepting the recommended answers below:
Question asked: Cut the skip-only runs with a
branches-ignorefilter on pr-verify's workflow_run trigger (main andgh-readonly-queue/**), keeping pr-require-checks' edited/labeled/unlabeled types and the job-levelif?ifstays. Is a measured drop, not zero, acceptable?Accepted: Yes. Keep the job-level
ifas the safety net. Skips from failed or cancelled upstream PR runs remain and are few (4 failed, 2 cancelled in the body's day). Basis: kept; .github/workflows/pr-verify.yml:41-43,64-68 on origin/main. This is a lane trigger change, so the body's Security & Cost pass and owner merge apply.Accepted: The dispatch, schedule and merge_group runs, filtered at pr-verify's trigger with
branches-ignore: their head branch ismainorgh-readonly-queue/main/..., never a PR branch. Do not trim edited/labeled/unlabeled: those runs are pull_request successes that reach check-intent rather than skip, and they carry the required check's pr-title, do-not-merge and linkage answers. Basis: corrected. .github/workflows/pr-require-checks.yml:34-50 (edited/labeled/unlabeled are load-bearing); .github/scripts/maintenance-monitor-signals/collect.test.mjs:99 (merge-group runs of pr-require-checks carry head_branchgh-readonly-queue/main/...); that workflow_run honorsbranches/branches-ignoreon the triggering run's head branch isjudgment, UNVERIFIED against GitHub's events docs this session.Accepted: Yes, as a workflow test that asserts the trigger and the check-intent
ifstill admit pull_request runs from any non-main, non-queue branch. test(pr-pipeline): add the planted-defect replay harness for pr-verify #8681's parity test does not cover this: it checks the judge step and model route against replay.mjs, not which heads are judged. Basis: corrected; .github/scripts/pr-verify/probe/parity.test.mjs:1-6.Acceptance criteria:
mainandgh-readonly-queue/**; the check-intent job-levelifis unchanged.if.Checks a person runs: