Skip to content

CI paths: Release Precheck — stop running on every PR #851

Closed

Description

@thekevinbot

Part of #834. Phase 3. Blocked on #850 (its anchor must be gated first, or this deadlocks the merge gate).

What

release-precheck.yml triggers on every PR with no paths:. It is the most expensive workflow in the repo (full build matrix, 4 jobs) and the long pole on the merge gate. It should run only for changes that can affect a shipped artifact.

Exact change

.github/workflows/release-precheck.yml — replace the on: block with:

on:
  pull_request:
    branches: [main]
    paths:
      - 'packages/**'
      - '!packages/*/changelog.d/**'
      - '!packages/*/migrations.d/**'
      - '!packages/*/e2e-attestations/**'
      - 'internals/checks/**'
      - 'Cargo.toml'
      - 'Cargo.lock'
      - 'putitoutthere.toml'
      - '.github/workflows/release-precheck.yml'

Keep branches: [main]. Do not touch the jobs.

Ordering matters — GitHub evaluates paths: in order, last match wins, so the three ! exclusions must sit immediately after packages/** and before the unrelated positives.

Why these paths

Entry Spec row Reason
packages/** 3, 4, 5, 6, 7, 17, 18, 19 every shipping subtree, plus the package-root manifests that drive the build
!.../changelog.d/, !.../migrations.d/ 14 fragments ship nothing
!.../e2e-attestations/ 15 attestations ship nothing
internals/checks/** 8 not a mistake. This workflow runs that package: dirsql-checks artifact-completeness (release-precheck.yml:59), wheel-extension-load (:88), npm-binary-extension-load (:119). A change there can break this workflow, so this workflow runs
Cargo.toml, Cargo.lock 11
putitoutthere.toml 12 release config drives the precheck
self 16

Expected checks on this PR

Files touched: .github/workflows/release-precheck.yml only.

MUST run

  • Release Precheck (self-path)
  • Conventions (all 8 lanes) — still unconditional until phase 4

MUST NOT run

  • Python Test, TS Test, Rust Test, Plugins Test, Python Lint, Python Typecheck, TS Lint, TS Typecheck
  • Release Config Check and Changelog Check if their slices already merged; otherwise they still run

Anchor behaviour to verify: the Release Precheck reported protection from #850 does apply here (its if names this workflow file) and is satisfied, because the workflow runs. Confirm in the Merge Protections summary.

Acceptance

Notes

  • The if in .mergify.yml is deliberately narrower than this paths: (it enumerates dirsql|src|napi subtrees positively rather than mirroring the exclusions). That direction is safe by design — see CI paths: Mergify — gate each anchor behind the files it covers #850's safety rule. Do not "tighten" this paths: to match the anchor; the anchor is the one that is allowed to lag.
  • No changelog fragment, no e2e attestation.

Activity

  1. thekevinbot commented on Aug 20, 2026

    @thekevinbot
    CollaboratorAuthor

    Closing in the #934 sweep. Shipped by #895 (part of the #834 epic): the workflow now carries real paths: filters on main and no longer runs on every PR.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions