Skip to content

build(verify): independent steps side by side - #27

Merged
rmotafreitas merged 4 commits into
mainfrom
ci/faster-pipelines
Nov 4, 2026
Merged

rmotafreitas merged 4 commits into
mainfrom
ci/faster-pipelines

Conversation

@rmotafreitas

@rmotafreitas rmotafreitas commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

pnpm verify (and so check:ci on GitHub/Jenkins and check:quality in the app) runs a stage's steps at once, half the cores at a time. Each step's output is printed whole when it ends; --serial runs one at a time with live output. The build is a stage of its own, after the rest. check:ci went from ~19 s to ~8 s locally. Every step still runs after one fails, and the exit code still reflects any failure. Tests cover the stage order and the concurrency.

Council review

Rounds: 3

Delegate Round 1 Round 2 Round 3
Claude Opus 5.5 9/10 9/10 9.4/10
GPT-6.1 Sol 9/10 9.4/10 9.4/10
Gemini 4 Argon no score no score no score

Gemini could not be reached (OpenCode Go subscription required); no other provider stood in. Both reviewers are satisfied for merge (#27 → #109 → #47 → #48).
Taken: the library checks only ask CI instead of rewriting lib/ and dist/ beside their readers; per-run concurrency groups for main; RNAP's ESLint skips docs/api; nested verifies run 2 at a time and the test runners take half the cores beside other steps; a per-test timeout instead of a CI-wide one; ::group:: folding and a CI heartbeat; process-group signal handling (a second signal kills); the web export waits for the bundle only; the janitor's Yarn prune.
Left out on purpose: automated signal tests, nested-group cosmetics, a lockfile-only audit, and a second signal reaching a nested verify's own steps (local only; CI tears the container down).

A stage's steps run at once, half the cores at a time, each one's output
printed whole when it ends; `--serial` runs one at a time with its output
live. The build is a stage of its own, after the rest. check:ci went from
~19 s to ~8 s here; every step still runs after one fails.
- A shared concurrency group keeps one pending run and drops the others,
  so back-to-back main pushes still lost results. A PR's runs share a
  group (a newer push cancels the older); every other run is its own.
- Each verify step is a process group of its own: Ctrl-C or SIGTERM starts
  nothing more, stops every running step's whole tree, and exits 130/143.
…half the cores

Every step sees VERIFY_RUNNING (the test runner then takes half the
cores) and VERIFY_JOBS=2, which a verify honours: the app's checks run
this one inside one of their slots, and six steps with their own worker
pools oversubscribed the host. On GitHub each step's output folds under its
line, and in CI a step that hangs is named every minute.
…ill runs

--serial runs one step at a time, so the test runners keep every core
(VERIFY_RUNNING only beside other steps). A second signal kills the steps
still running, which a step ignoring the first cannot hang.
@rmotafreitas
rmotafreitas merged commit f3d78ac into main Nov 4, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant