Skip to content

ci(coil): split the test gate so web tests get their own runner - #167

Merged
radroid merged 2 commits into
mainfrom
coil/ci-split-test-jobs
Oct 8, 2026
Merged

radroid merged 2 commits into
mainfrom
coil/ci-split-test-jobs

Conversation

@radroid

@radroid radroid commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Summary

After the 2026-10-08 sync (#164), main's CI failed 3 of 3 times on MessagesTimeline.test.tsx. Its beforeAll pins 30s in the file, so --hookTimeout can't raise it. With the web suite sharing one runner with mobile and desktop, that import ran past 30s. The release never fired, and the server suite never ran in CI because vp run test stops at the first failing package.

This mirrors upstream's ci.yml job split:

 coil fork CI
-  verify            typecheck, lint, vp run test (everything, one runner)
+  check             typecheck, lint
+  test              everything except server and web
+  test_web          web alone
+  test_server 1..6  server, sharded by recorded duration (upstream's sequencer)

The daily sync and the resolver agent verify on one runner. They now run the tests as two invocations, everything except web and then web alone. Their timeouts go up to cover the server suite, which takes about 25 minutes serially: daily 50→60 minutes, resolver 45→90. The runbook commands match.

Evidence

  • Before: main run 37842269174, Error: Hook timed out in 30000ms in MessagesTimeline.test.tsx, 1 failed / 474 passed. Release run 37843694901 skipped.
    After: branch run 37844381603 is green in about 6 minutes wall clock. Web 475/475 files. Server 524 files across 6 shards, 4–5 minutes each, which matches the local file count. Other packages all passed.
  • scripts/coil/sync-upstream.test.ts passes.
  • The new verify loop's argv splits as intended: --filter !@t3tools/monorepo --filter !@t3tools/web test --testTimeout=120000 --hookTimeout=120000.
  • Not exercised end to end: the daily sync's two-run verify. It runs at the next 08:00 UTC sync.

Merge Danger

Door: two-way

Only fork-owned CI files, the sync script and the runbook change. Revert to restore the single job.

Blast Radius: CI

coil-release.yml keys on the "coil fork CI" workflow conclusion, not on a job name. A green split run still releases.

🤖 Generated with Claude Code

radroid and others added 2 commits October 8, 2026 17:06
…n runner

The single verify job ran the web suite alongside mobile and desktop, and
MessagesTimeline.test.tsx's beforeAll (an in-file 30s literal that
--hookTimeout cannot override) timed out on 3 of 3 runs after the
2026-10-08 sync. Mirror upstream's ci.yml: typecheck+lint, the remaining
packages, web, and six server shards each run on their own runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The daily sync and the resolver agent verify on one runner with a single
`vp run test`, which hits the same MessagesTimeline hook timeout coil-ci
did. Run the suite as two invocations, everything but web and then web
alone, and give both jobs room for the server suite (~25 min serially).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@radroid
radroid merged commit 4088077 into main Oct 8, 2026
8 of 10 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