Skip to content

perf(source-control): skip ready's local full-suite verify when the CI test lanes cover it #8753

Description

@kyle-sexton

Refs: #3716

Problem

/source-control:pull-request ready runs the verify gate locally on the merged head before flipping the PR. On #8714 that run took about 27 minutes: scripts/check-affected.sh --tests selected about 140 *.test.sh suites, and one of them failed until the run did an npm ci. CI then ran the same suites in about 8 minutes (pr-require-checks, measured on the branch's runs). The local run bought nothing CI did not also check, and it was the largest single delay between PR creation and merge.

Fix

When the CI test lanes are present and healthy for the change (the same venue check review-venue already does for the AI review lanes), ready skips the local full-suite verify. It runs locally only what CI cannot, and says which suites it skipped. ready --verify-local keeps the current behavior on request.

"Healthy for the change" means: a successful test-lane run (pr-require-checks test jobs) exists at the merged head SHA. A draft has none ("A draft skips the test lanes", AGENTS.md), so the local verify runs as today. ci-status still gates the merge either way.

Verification

A ready run on a PR whose CI lanes are healthy reports the verify step as skipped (CI covers it) and flips the PR in minutes.

Split to #8994: that live ready run, observed after this merges.

Done when (lane)

  • plugins/source-control/skills/pull-request/scripts/review-venue.sh reports a test-lane row: ci when a successful test-lane run exists at the given head, otherwise local. Check: the PR's CI runs review-venue.test.sh with a fixture for each state, and it passes.
  • plugins/source-control/skills/pull-request/reference/ready-for-review.md (the verify step at :204) skips check-affected.sh --tests when that row is ci, records --result skipped through verify-gate.sh, reports skipped (CI covers it) and names the skipped suites; it runs the suites when the row is local or with --verify-local. Check: the PR's CI runs verify-gate.test.sh and the markdown lint, and they pass.
  • The --verify-local flag and the skip line exist in the skill text. Check: the PR's CI runs a skill-text test for both strings (new or extended *.test.sh in that skill), and it passes.
  • A .changes/source-control/ fragment exists. Check: the PR's CI runs scripts/check-changelog-fragments.sh --check and it passes.
  • Out of scope: AGENTS.md (its wording still holds).

Related

#8714, #3716, #3932

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 21, 2026
  2. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Thanks for the report. Automated triage handed this issue to a maintainer.

    Proposed work class: work-class: scoped
    Basis: automated intake triage; a maintainer confirms or changes it.

    Automated triage. A maintainer reviews it.

  3. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 21, 2026
  4. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    on Oct 22, 2026
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

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions