Skip to content

Commit 2e7b271

Browse files
dmealingclaude
andcommitted
docs: describe the actual CI gate topology (local-ci on push, hosted on tags)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKaSE8U5cwN4ZGFwhJwxSY
1 parent d073241 commit 2e7b271

4 files changed

Lines changed: 13 additions & 7 deletions

File tree

.github/workflows/conformance.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ name: conformance
77
# scripts/ci-local.sh --quick # everything except the docker integration suite
88
# The .githooks/pre-push hook also runs the TS build+typecheck gate locally, and the
99
# cheap public-repo SECURITY gate (hygiene / leak-scan) still runs on every PR.
10+
# Push-to-main coverage now comes from local-ci.yml on the self-hosted runner.
1011
on:
1112
push:
1213
tags:

.github/workflows/integration-tests.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ name: integration-tests
1313
# scripts/ci-local.sh # full local CI (this suite + conformance + drift)
1414
# scripts/integration-test.sh <port>
1515
# The cheap public-repo SECURITY gate (hygiene / leak-scan) still runs on every PR.
16+
# Push-to-main coverage now comes from local-ci.yml on the self-hosted runner.
1617

1718
on:
1819
push:

CLAUDE.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,13 @@ bypasses branch protection. This hook closes that hole locally: when a push touc
6666
`server/typescript/` or `client/web/`, it runs the same `bun run --filter '*' build &&
6767
… typecheck` gate CI runs and **blocks the push when it is red** (~6s on a clean tree;
6868
skipped entirely for non-TS pushes). Bypass in an emergency with `git push --no-verify`
69-
or `SKIP_TS_TYPECHECK=1 git push`. The Java/C#/Python compile+conformance gates stay
70-
CI-only (still required on PRs via branch protection).
69+
or `SKIP_TS_TYPECHECK=1 git push`. The Java/C#/Python compile+conformance gates do NOT run on PRs (hosted CI runs
70+
them on release tags + manual dispatch only, for cost). Instead, every push to
71+
`main` triggers `local-ci.yml` on the maintainer's self-hosted runner: affected
72+
ports only (via `scripts/ci-affected-ports.sh`), parallel per-port jobs, each
73+
running `scripts/ci-local.sh --only <port> --strict-toolchains`; a nightly
74+
dispatch runs the full matrix. PRs get the leak-scan only — run
75+
`scripts/ci-local.sh --quick` locally before opening one.
7176

7277
## Monorepo layout
7378

scripts/ci-local.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,10 @@ want() { # want <section> — true when the section should run
7777
PASS=(); FAIL=(); SKIP=()
7878
have() { command -v "$1" >/dev/null 2>&1; }
7979

80-
# bun's installer exits 1 when an OPTIONAL native dep fails to build (e.g. the
81-
# ssh2/cpu-features chain) even though the workspace is fully usable — and an
82-
# immediate re-run exits 0. Retry once so fresh checkouts (the self-hosted CI
83-
# runner wipes its workdir every run) don't fail the gate on that flake; a
84-
# genuinely broken install still fails both attempts.
80+
# bun exits 1 when an OPTIONAL native dep fails its install script (the
81+
# ssh2/cpu-features chain needs node-gyp on the machine — `npm i -g node-gyp`
82+
# fixes it for good). Retry once as defense-in-depth for transient installer
83+
# flakes; a genuinely broken install still fails both attempts.
8584
bun_install() { bun install || bun install; }
8685

8786
step() { # step "<name>" <cmd...>

0 commit comments

Comments
 (0)