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
{{ message }}
Repository navigation
Commit ddfb948
Browse filesBrowse the repository at this point in the historyBrowse files
improvement(ci): halve the mobile job, narrow the desktop gate, skip proven checks on main, fix the top flake
- e2e (mobile): Chromium and WebKit run as two processes against one app instead of back to back
(each seeds its own fixtures and writes its own report), and every e2e group restores its own
Turbopack dev cache. The job was the PR critical path at ~19.5 min: Chromium's pass (718 s
median) carried the cold compile and WebKit waited it out (310 s). `suite setup` failures are
now logged instead of only reaching the uploaded report.
- dev-cache action: one mount shared by desktop-live and the e2e groups, keyed by app, event,
fork, Next version and the hash of the file that sets the app's environment, so a cache is never
read under NEXT_PUBLIC_* values it was not compiled with. http-e2e.sh stops apps with SIGINT so
the cache write completes, drops a cache Turbopack reports as corrupt, and retries a startup it
aborted once from an empty cache.
- desktop-live-changes.sh: run the live desktop suite when a pull request touches a path it
exercises instead of skipping only docs-like paths. Every genuine desktop-live failure since the
layout change was on a PR the new rule still runs; pushes always run it.
- ci.yml: a `proof` job lets a main push skip the checks when it is a merge whose tree is
identical to its staging parent and a staging push run of that parent passed `checks / ci`;
migrate gates on that proof instead. Any other shape or any error runs the full checks.
- codeql, helm, desktop-e2e skip the staging -> main release PR (main's push and schedule still
run them); helm never cancels a push mid-publish; trigger-promote on 2 vCPU; attestations via
actions/attest with artifact-metadata: write.
- stripe-sync-convergence: start each contender only after the parked transaction holds its locks,
wait on a deadline rather than 200 polls, and release the transaction before failing, so a lost
race no longer hangs the suite's teardown. It was the most frequent flake (9 red runs).
- Integration shard weights refreshed from a recent run; /ship runs the affected workspaces' suites
instead of the full suite locally.
Copy file name to clipboardExpand all lines: .agents/skills/ship/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ When the user runs `/ship`:
42
42
- If the diff modifies UI code (any non-test `.tsx` file, or anything under `apps/sim/components/`, `apps/sim/hooks/`, or `apps/sim/stores/`), run `/cleanup`. It fans out the React/UI passes (effects, memo, callbacks, state, React Query, emcn, url-state), the comment pass, and the test-audit pass, and applies fixes so they land in this commit.
43
43
- Otherwise, if the diff adds or changes tests (`*.test.ts(x)`, `*.integration.ts`, `**/e2e/**`, `apps/sim/scripts/test-*-e2e.ts`), run `/test-audit audit <changed test files>` on its own. Every new or changed test must pass the authoring gate; delete the ones that don't rather than shipping them.
44
44
- Then run the test files the diff adds or changes, plus the existing tests beside changed source files, with `bun run --cwd <workspace>test<paths>` (`bun run --cwd apps/sim test<paths>`forthe app; `*.integration.ts` needs the setupin`.claude/rules/sim-testing.md`). A failing test aborts ship.
45
-
- Then run root `bun run test` from the repo root. It chains `test:scripts` (the `scripts/*.test.ts` suite CI runs) before every workspace suite; workspace-scoped runs skip it, which is how a `scripts/check-*.test.ts` failure has reached CI. A failing test aborts ship.
45
+
- Then run `bun run test:scripts` (the `scripts/*.test.ts` suite CI runs; workspace-scoped runs skip it, which is how a `scripts/check-*.test.ts` failure has reached CI) and the suites of the workspaces the change reaches: `bunx turbo run test --filter='...[origin/staging]'` (each changed workspace plus every workspace that depends on it). CI runs every suite, sharded, on every push; the full local suite needs more memory than a laptop reliably has and catches nothing CI does not. When the diff touches root test or build config (`vitest.shared.ts`, `turbo.json`, the root `package.json`, `bun.lock`), the filter selects nothing that config reaches, so run the full root `bun run test` instead. A failing test aborts ship.
46
46
5. **Run migration safety** — only if the diff touches `packages/db/migrations/**` or `packages/db/schema.ts`:
47
47
- Run `/db-migrate` to review the migration for zero-downtime safety (expand/contract phasing, backward-compatibility with the deployed app version).
48
48
- `(cd packages/db && bunx drizzle-kit generate && git status --porcelain ./migrations)` must print nothing (CI's schema/migration sync step).
description: Mount Turbopack's dev cache at apps/sim/.next/dev for one `next dev` app, keyed by app, event, fork, installed Next version and the app's environment.
3
+
4
+
inputs:
5
+
provider:
6
+
description: The CI_PROVIDER repo variable, forwarded to the cache action.
7
+
required: false
8
+
default: ''
9
+
name:
10
+
description: The app the cache belongs to. Each app runs `next dev` under its own fixed NEXT_PUBLIC_* values, so each gets its own cache.
11
+
required: true
12
+
env-hash:
13
+
description: Hash of the file that sets the app's environment. Next inlines NEXT_PUBLIC_* values at compile time, so a changed environment must never restore a cache compiled under the old one.
14
+
required: true
15
+
16
+
# The cache turns a route's cold compile into a restore. It is content-addressed, so changed modules
17
+
# still recompile. The Next version in the key starts an upgrade from an empty cache, and the event
18
+
# and fork segments keep untrusted runs off the cache trusted runs read. Needs dependencies installed
19
+
# (it reads node_modules/next), and the app must be stopped with SIGINT so the last write completes.
0 commit comments