Skip to content

ci: run the macOS integration tests in three shards - #309

Merged
ThomasK33 merged 1 commit into
mainfrom
ci/macos-integration-shards
Nov 3, 2026
Merged

ThomasK33 merged 1 commit into
mainfrom
ci/macos-integration-shards

Conversation

@ThomasK33

@ThomasK33 ThomasK33 commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Why

The operator's goal for this run is to land every follow-up fix. #306 gave quality-gates-macos 45 minutes instead of 30, because the job ran close to its limit and the merge queue dropped PRs when it timed out. The advisor on #306 found that the job grows by about 3 minutes a day as the suite grows, so 45 minutes lasts about a week. Most of the job is the integration tests, which run one file at a time.

What changed

.github/workflows/ci.yml, macOS part only:

Job Runs on Does Limit
checks-macos macOS format, lint, typecheck, build, unit tests, e2e tests 30 min
test-integration-macos (1/3), (2/3), (3/3) macOS npm run test:integration -- --shard=<n>/3, the same command as the Linux shards 30 min each
quality-gates-macos Ubuntu needs the four jobs above. Fails if any of them failed, was cancelled or was skipped 5 min
  • The main ruleset (14113158) requires quality-gates, quality-gates-macos and pr-title. I did not rename quality-gates-macos. It still gates every macOS job, the same way quality-gates gates the Linux jobs.
  • The integration shards do not run build, like the Linux shards. checks-macos keeps build before the e2e tests.
  • The job comment now says that the serial job took 18 to 30 minutes.

Evidence

  • In the ci: give the macOS quality gates 45 minutes instead of 30 #306 PR run, the serial macOS job took 27 minutes. Test integration took 1251 s of it, Test e2e 272 s, Test unit 28 s, and setup with the static checks about 75 s.
  • In the last 25 CI runs, the serial job passed in 18 to 28 minutes. Five runs timed out at the old 30-minute limit (listed in ci: give the macOS quality gates 45 minutes instead of 30 #306).
  • Vitest assigns files to shards by the SHA-1 of their path, not by duration. With the per-file durations from the ci: give the macOS quality gates 45 minutes instead of 30 #306 run, the three shards hold 246 s, 287 s and 709 s of tests (lifecycle.test.ts alone is 239 s). With setup, the slowest shard is about 13 minutes. The expected total is about 13 minutes instead of 27.
  • Runner capacity: over 54 recent macOS jobs, up to 6 ran at the same time, and no job waited more than 6 s for a runner. Four macOS jobs per run therefore do not queue behind each other.

Validation

  • actionlint: pass.
  • zizmor --offline .: no findings. With --persona=auditor, the only new entries are the same two kinds that the Linux jobs already have: template-injection (help level, for ${{ matrix.shard }} and ${{ needs.*.result }}) and anonymous-definition (info level).
  • npx oxfmt .github/workflows/ci.yml --check: pass.
  • CI on this PR ran the new jobs (run 41733601948). All four macOS jobs started at the same time. checks-macos took 6.4 min. The integration shards took 6.3, 7.1 and 12.6 min, with 315 s, 370 s and 705 s of tests. quality-gates-macos passed 12.7 min after the start. The serial job took 27 min in the ci: give the macOS quality gates 45 minutes instead of 30 #306 run.

Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: xhigh

As one serial job, quality-gates-macos took 18 to 30 minutes, and the
integration tests were 75 to 80 percent of it (1251 s of 27 min in the
#306 run). The suite grows by about 3 minutes a day, so the 45-minute
limit would last about a week.

The macOS tests now run in four jobs at once: checks-macos (format,
lint, typecheck, build, unit and e2e tests) and test-integration-macos
(1/3, 2/3, 3/3), each with a 30-minute limit. quality-gates-macos stays
as the check that the main ruleset requires. It now runs on Ubuntu,
needs those jobs, and fails when any of them failed, was cancelled or
was skipped, the same way quality-gates gates the Linux jobs.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh`_
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-03T22:48:17.381131Z b38df3d Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: b38df3d494

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33
ThomasK33 added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 8f9c502 Nov 3, 2026
18 checks passed
@ThomasK33
ThomasK33 deleted the ci/macos-integration-shards branch November 3, 2026 23:34
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