Skip to content

ci: add matrix skeleton to headless-smoke jobs (#540)#579

Merged
shaun0927 merged 1 commit intodevelopfrom
ci/540-matrix-skeleton
Apr 16, 2026
Merged

ci: add matrix skeleton to headless-smoke jobs (#540)#579
shaun0927 merged 1 commit intodevelopfrom
ci/540-matrix-skeleton

Conversation

@shaun0927
Copy link
Copy Markdown
Owner

Summary

Adds a single-cell `strategy.matrix` stanza to all four smoke jobs (safari / flutter / native / webview) in `.github/workflows/headless-smoke.yml`.

  • `matrix.os: [macos-latest]` — baseline cell, behaviour unchanged.
  • `fail-fast: false` — future sibling cells won't kill each other once the matrix grows.
  • `runs-on: ${{ matrix.os }}` on all four jobs.

Refs: #540 (acceptance-criteria Matrix section) + #574 (cross-Xcode matrix child issue).

Why

Epic #540's Matrix section requires green runs across macOS 14/15/16, Xcode 15/16/17/26, iPhone 15/16/17/Pro/iPad, and Flutter 3.x/4.x. Each dimension will be rolled out as runner images become available. Landing the skeleton now means the rollout is a one-line append to `matrix.os` (or a new matrix dimension) rather than a full job duplication.

Why one cell now, more later

Adding additional cells (macos-14, macos-15, macos-16) before the runner images are proven stable would keep the cron red and reset the 30-day green countdown in the epic's closing rule. Child issue #574 tracks the staged rollout.

Test plan

  • `python3 -c "import yaml; yaml.safe_load(open('.github/workflows/headless-smoke.yml'))"` — YAML valid.
  • `git diff` touches only the four job headers; no step logic moved.
  • Job `name:` fields kept unchanged so any existing branch-protection status-check names still match once the single-cell matrix kicks in (GitHub auto-appends `(macos-latest)` only when multiple cells exist).
  • Cron run on `develop` after merge — same green signal as today's single-runner job.

🤖 Generated with Claude Code

Introduces a single-cell `strategy.matrix` stanza on all four smoke jobs
(safari / flutter / native / webview). The baseline cell is still
`macos-latest`, so behaviour is unchanged today — but future expansion
(macos-14, macos-15, macos-16; later Xcode / device / Flutter-version
dimensions) becomes a one-line append to `matrix.os` rather than a
full job duplication.

`fail-fast: false` ensures one flaky cell cannot kill sibling cells
once the matrix grows.

Leaves the name: field unchanged — GitHub auto-appends the matrix value
so the effective check name remains the same until a second cell lands.

Refs: #540 (acceptance-criteria Matrix section) + #574

Verified:
- `python3 -c "import yaml; yaml.safe_load(open('.github/workflows/headless-smoke.yml'))"`.
- Diff only touches the four job headers; no step logic moved.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@shaun0927 shaun0927 force-pushed the ci/540-matrix-skeleton branch from 0dbd0a6 to d3e9731 Compare April 16, 2026 13:51
Copy link
Copy Markdown
Owner Author

@shaun0927 shaun0927 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review: P0=0, P1=0, P2=0. Trivial matrix scaffolding. Functionally identical to prior runs-on. LGTM.

@shaun0927 shaun0927 merged commit f4dbb59 into develop Apr 16, 2026
7 checks passed
@shaun0927 shaun0927 deleted the ci/540-matrix-skeleton branch April 16, 2026 14:05
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