11---
22name : openclaw-ci-limits
3- description : Manage OpenClaw GitHub Actions and Blacksmith CI capacity, runner-registration budgets, fanout caps, main-push debounce , shard sizing, hosted-runner offload, queue health, and safe ramp-down/ramp-up changes. Use when tuning `.github/workflows/*`, `docs/ci.md`, CI runner labels, matrix `max-parallel`, ClawSweeper/Blacksmith burst protection, CodeQL runner placement, or investigating slow/queued OpenClaw CI.
3+ description : Manage OpenClaw GitHub Actions and Blacksmith CI capacity, runner-registration budgets, fanout caps, main-push single-flight , shard sizing, hosted-runner offload, queue health, and safe ramp-down/ramp-up changes. Use when tuning `.github/workflows/*`, `docs/ci.md`, CI runner labels, matrix `max-parallel`, ClawSweeper/Blacksmith burst protection, CodeQL runner placement, or investigating slow/queued OpenClaw CI.
44---
55
66# OpenClaw CI Limits
@@ -84,12 +84,11 @@ and register more runners before the window resets. Use job duration, retries,
8484and queue turnover to justify any lower estimate. Add non-matrix Blacksmith jobs
8585such as ` preflight ` , ` security-fast ` , ` build-artifacts ` , and platform lanes.
8686
87- For repeated pushes, multiply by the number of runs expected to reach
88- Blacksmith admission in the same 5-minute window, including runs canceled after
89- admission. The debounce only suppresses pushes that arrive while
90- ` runner-admission ` is still sleeping; once Blacksmith jobs register, those
91- registrations are spent even if a later push cancels the run. If timing is
92- uncertain, count every sequential push in the window.
87+ For repeated pull-request pushes, multiply by the number of runs expected to
88+ reach Blacksmith admission in the same 5-minute window, including runs canceled
89+ after admission. Canonical ` main ` is single-flight: one run completes while
90+ GitHub's default single pending slot is replaced by the newest push. Count one
91+ active main matrix plus its next pending matrix, not every intermediate merge.
9392
9493Reject a change unless the org-level worst case stays below about 60% of the
9594live bucket. With the current 10,000-registration bucket, keep planned
@@ -100,10 +99,9 @@ ClawSweeper, ClawHub, Clownfish, OpenClaw RTT, and Clawbench.
10099
101100Prefer these in order:
102101
103- 1 . Add or preserve concurrency groups that cancel superseded PR and canonical
104- ` main ` runs before Blacksmith work starts.
105- 2 . Keep the ` runner-admission ` hosted debounce for canonical ` main ` pushes.
106- Change ` OPENCLAW_MAIN_CI_DEBOUNCE_SECONDS ` only with evidence.
102+ 1 . Preserve cancel-in-progress for superseded pull-request heads.
103+ 2 . Preserve canonical ` main ` single-flight without canceling its running
104+ integration cycle; GitHub's default pending slot coalesces to the newest tip.
1071053 . Move high-frequency, short, non-build jobs to ` ubuntu-24.04 ` .
1081064 . Reduce matrix rows by bundling related tests inside one runner job when the
109107 combined job stays under timeout and keeps useful failure names.
@@ -120,18 +118,20 @@ Do not:
120118- raise all ` max-parallel ` values at once;
121119- make manual ` workflow_dispatch ` runs cancel normal push/PR validation;
122120- delete coverage just to reduce runner count;
123- - treat cancelled superseded runs as failures without checking the newest run
124- for the same ref.
121+ - treat cancelled superseded pull-request runs as failures without checking the
122+ newest run for the same ref.
125123
126124## Current OpenClaw Knobs
127125
128126These are intentionally guarded by ` test/scripts/ci-workflow-guards.test.ts ` :
129127
130- - ` CI ` concurrency key version and ` cancel-in-progress ` for PRs and canonical
131- ` main ` pushes.
132- - ` runner-admission ` on ` ubuntu-24.04 ` with
133- ` OPENCLAW_MAIN_CI_DEBOUNCE_SECONDS=90 ` .
134- - ` preflight ` and ` security-fast ` needing ` runner-admission ` .
128+ - ` CI ` concurrency key version, PR cancellation, and non-canceling canonical
129+ ` main ` single-flight with one coalesced pending tip.
130+ - ` preflight ` and hosted ` security-fast ` start immediately without a debounce
131+ or standalone admission job. On Node-relevant canonical main pushes,
132+ preflight also owns the sole dependency sticky-disk write and 8 GiB prune
133+ before fanout; replacement visibility is proved only by a later exact-marker
134+ restore because Blacksmith snapshot promotion can lag job completion.
135135- CI matrix caps: fast/check lanes at 12, Node test shards at 28, Windows and
136136 Android at 2.
137137- Canonical PR Node tests use one precise changed-target job when possible;
@@ -142,6 +142,9 @@ These are intentionally guarded by `test/scripts/ci-workflow-guards.test.ts`:
142142- lower-weight Node/check shards on ` blacksmith-4vcpu-ubuntu-2404 ` .
143143- heavy retained Linux/Android shards on ` blacksmith-8vcpu-ubuntu-2404 ` .
144144- CodeQL Critical Quality on ` ubuntu-24.04 ` with no ` blacksmith- ` labels.
145+ - Vitest/test compile caches are restore-only in CI and use immutable Actions
146+ caches; the daily/dispatch warmer is their sole writer. Build compile cache
147+ writes rotate at most once per UTC day. PRs create no runtime-cache archives.
145148
146149When changing one knob, update ` docs/ci.md ` and the guard test in the same PR.
147150
0 commit comments