Skip to content

ci: adopt platform tiers — fast merge-blocking set decides main's color; slow/port lanes post-merge; contributor precheck; unenrolled-test gate #1264

Description

@InauguralPhysicist

Decision (Jon, 2026-09-22): follow what mature languages already do (Rust tiers + bors, CPython make patchcheck + unstable buildbots, Go TryBots + post-submit builders) rather than invent our own.

Why now. Main CI has not finished green since 2026-09-16 (f532c8d). The last 14 main runs are failure/cancelled; the dominant cause is one lane — macos / macos-15-intel runs on main pushes only and hits its 45-minute timeout, which GitHub reports as cancelled. 01e2b4a passed 6126/6126 and still did not go green. When red is normal on main, a real regression is invisible.

Scope.

  1. Tiers. Tier 1 (blocks merge, decides main's color): Linux gcc/clang, ASan+UBSan core, the core suite. Tier 2 (post-merge / nightly; failures open an issue, never color main): macos-15-intel and other slow or port lanes — measure which. The nightly workflow already exists.
  2. Contributor precheck (our make patchcheck): one command, under ~30 s, running the static gates — pipefail verdicts, suite labels, child-exit accounting, section plan — documented in CONTRIBUTING.md. PR stdlib: keep args.parse_args working under import args #1260 met these only after a 45-minute CI run.
  3. Unenrolled-test gate. A tests/*.sh that no suite section invokes must fail. Three exist today (test_amalgamation.sh, test_args_import.sh — being enrolled in stdlib: keep args.parse_args working under import args #1260 — and test_ci_portability.sh); nothing flags them, while a style rule in the same file fails loudly.

Merge queue (Rust's green-by-construction main) deferred until PR concurrency warrants it.

Activity

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

    area:ciSubsystem: cikind:decisionNeeds a decision recorded, not (only) code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions