You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/ci.md
+39-26Lines changed: 39 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,38 +8,51 @@ read_when:
8
8
- You are changing ClawSweeper dispatch or GitHub activity forwarding
9
9
---
10
10
11
-
OpenClaw CI runs on every push to `main` and every pull request. The `preflight` job classifies the diff and turns expensive lanes off when only unrelated areas changed. Manual `workflow_dispatch` runs intentionally bypass smart scoping and fan out the full graph for release candidates and broad validation. Android lanes stay opt-in through `include_android`. Release-only plugin coverage lives in the separate [`Plugin Prerelease`](#plugin-prerelease) workflow and only runs from [`Full Release Validation`](#full-release-validation) or an explicit manual dispatch.
11
+
OpenClaw CI runs on every push to `main` and every pull request. Canonical
12
+
`main` pushes first pass through a 90-second hosted-runner admission window.
13
+
The existing `CI` concurrency group cancels that waiting run when a newer
14
+
commit lands, so sequential merges do not each register a full Blacksmith
15
+
matrix. Pull requests and manual dispatches skip the wait. The `preflight` job
16
+
then classifies the diff and turns expensive lanes off when only unrelated
17
+
areas changed. Manual `workflow_dispatch` runs intentionally bypass smart
18
+
scoping and fan out the full graph for release candidates and broad
19
+
validation. Android lanes stay opt-in through `include_android`. Release-only
20
+
plugin coverage lives in the separate [`Plugin Prerelease`](#plugin-prerelease)
21
+
workflow and only runs from [`Full Release Validation`](#full-release-validation)
|`macos-node`| macOS TypeScript test lane using the shared built artifacts | macOS-relevant changes |
32
-
|`macos-swift`| Swift lint, build, and tests for the macOS app | macOS-relevant changes |
33
-
|`android`| Android unit tests for both flavors plus one debug APK build | Android-relevant changes |
34
-
|`test-performance-agent`| Daily Codex slow-test optimization after trusted activity | Main CI success or manual dispatch |
35
-
|`openclaw-performance`| Daily/on-demand Kova runtime performance reports with mock-provider, deep-profile, and GPT 5.5 live lanes | Scheduled and manual dispatch |
|`preflight`| Detect docs-only changes, changed scopes, changed extensions, and build the CI manifest | Always on non-draft pushes and PRs |
29
+
|`runner-admission`| Hosted 90-second debounce for canonical `main` pushes before Blacksmith work is registered | Every CI run; sleep only on canonical `main` pushes |
30
+
|`security-fast`| Private key detection, changed-workflow audit via `zizmor`, and production lockfile audit | Always on non-draft pushes and PRs |
31
+
|`check-dependencies`| Production Knip dependency-only pass plus the unused-file allowlist guard | Node-relevant changes |
32
+
|`build-artifacts`| Build `dist/`, Control UI, built-CLI smoke checks, embedded built-artifact checks, and reusable artifacts | Node-relevant changes |
33
+
|`checks-fast-core`| Fast Linux correctness lanes such as bundled, protocol, and CI-routing checks | Node-relevant changes |
34
+
|`checks-fast-contracts-plugins-*`| Two sharded plugin contract checks | Node-relevant changes |
35
+
|`checks-fast-contracts-channels-*`| Two sharded channel contract checks | Node-relevant changes |
36
+
|`checks-node-core-*`| Core Node test shards, excluding channel, bundled, contract, and extension lanes | Node-relevant changes |
37
+
|`check-*`| Sharded main local gate equivalent: prod types, lint, guards, test types, and strict smoke | Node-relevant changes |
|`macos-node`| macOS TypeScript test lane using the shared built artifacts | macOS-relevant changes |
44
+
|`macos-swift`| Swift lint, build, and tests for the macOS app | macOS-relevant changes |
45
+
|`android`| Android unit tests for both flavors plus one debug APK build | Android-relevant changes |
46
+
|`test-performance-agent`| Daily Codex slow-test optimization after trusted activity | Main CI success or manual dispatch |
47
+
|`openclaw-performance`| Daily/on-demand Kova runtime performance reports with mock-provider, deep-profile, and GPT 5.5 live lanes | Scheduled and manual dispatch |
36
48
37
49
## Fail-fast order
38
50
39
-
1.`preflight` decides which lanes exist at all. The `docs-scope` and `changed-scope` logic are steps inside this job, not standalone jobs.
40
-
2.`security-fast`, `check-*`, `check-additional-*`, `check-docs`, and `skills-python` fail quickly without waiting on the heavier artifact and platform matrix jobs.
41
-
3.`build-artifacts` overlaps with the fast Linux lanes so downstream consumers can start as soon as the shared build is ready.
42
-
4. Heavier platform and runtime lanes fan out after that: `checks-fast-core`, `checks-fast-contracts-plugins-*`, `checks-fast-contracts-channels-*`, `checks-node-core-*`, `checks-windows`, `macos-node`, `macos-swift`, and `android`.
51
+
1.`runner-admission` waits only for canonical `main` pushes; a newer push cancels the run before Blacksmith registration.
52
+
2.`preflight` decides which lanes exist at all. The `docs-scope` and `changed-scope` logic are steps inside this job, not standalone jobs.
53
+
3.`security-fast`, `check-*`, `check-additional-*`, `check-docs`, and `skills-python` fail quickly without waiting on the heavier artifact and platform matrix jobs.
54
+
4.`build-artifacts` overlaps with the fast Linux lanes so downstream consumers can start as soon as the shared build is ready.
55
+
5. Heavier platform and runtime lanes fan out after that: `checks-fast-core`, `checks-fast-contracts-plugins-*`, `checks-fast-contracts-channels-*`, `checks-node-core-*`, `checks-windows`, `macos-node`, `macos-swift`, and `android`.
43
56
44
57
GitHub may mark superseded jobs as `cancelled` when a newer push lands on the same PR or `main` ref. Treat that as CI noise unless the newest run for the same ref is also failing. Matrix jobs use `fail-fast: false`, and `build-artifacts` reports embedded channel, core-support-boundary, and gateway-watch failures directly instead of queuing tiny verifier jobs. The automatic CI concurrency key is versioned (`CI-v7-*`) so a GitHub-side zombie in an old queue group cannot indefinitely block newer main runs. Manual full-suite runs use `CI-manual-v1-*` and do not cancel in-progress runs.
0 commit comments