Skip to content

ci: start the macOS keychain real-import only when the keychain tool changes - #25997

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
fanout-infra/keychain-mac-paths
Oct 27, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
fanout-infra/keychain-mac-paths

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Why

signing-keychain-macos.yml triggers on every scripts/ci/**/*.sh, scripts/*.sh and scripts/cmux-next/*.sh change, because its Linux bash32-syntax job has to parse them all. The real-import job used the same triggers, so it ran on blacksmith-6vcpu-macos-26 too. That job only exercises the keychain tool, yet every script PR queued it. On 2026-10-27, nine of these sat queued on that label at once, ahead of nightly signing and DEV verify jobs on the same label. Under the routing order (Linux, then owned, then Blacksmith macOS last), they should not have been there.

What

  • A new real-import-plan job runs on Linux (blacksmith-2vcpu-ubuntu-2404). It reads the compare API diff. real-import now needs it and runs only when one of these changed:
    • the tool: scripts/ci/signing-keychain.sh
    • what it sources or calls: the runtime guard, the intermediates importer, the certs, select-ci-xcode.sh
    • its test, plus the Sparkle helper test it runs
    • the workflow itself
  • It fails open. workflow_dispatch, a new branch (zero before), a diff of 300 or more files, or an API error all run the real import, the same as before.
  • tests/test_derive_sparkle_public_key.sh and scripts/derive_sparkle_public_key.swift are added to the triggers. The real import runs both, but neither was listed before.
  • The new tests/test_signing_keychain_real_import_gate.py pins four things:
    • the plan runs on Linux;
    • real-import is gated on it;
    • the input list covers every file the real-import test references, so adding a dependency without listing it fails;
    • unrelated scripts skip the Mac.

bash32-syntax is unchanged and still parses every script on each trigger.

Risk

Low, CI routing only. The worst case is a keychain-tool dependency that isn't on the list: a change to it would skip the macOS import on its PR. The new test catches any new file the test script references. Indirect dependencies are listed by hand.

Checks

  • tests/test_signing_keychain_real_import_gate.py and tests/test_bash32_linux_job.py pass, and actionlint is clean.
  • test_ci_workflow_path_filter_parity.py (cmux-next.yml base_red_checks) and test_runner_routing_table.py (9 unclassified jobs, none of them this one) fail the same way on base.

Agent session: agent session

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

…changes

signing-keychain-macos.yml triggers on every scripts/ci, scripts/*.sh and
scripts/cmux-next shell change, because its Linux bash32-syntax job must parse
them all. The real-import job rode the same triggers onto
blacksmith-6vcpu-macos-26, so every script PR queued a Mac job that exercises
only the keychain tool (nine queued at once on 2026-10-27, ahead of nightly
signing on that label).

A Linux plan job now reads the diff and starts real-import only when the tool,
what it sources or runs, its test or the workflow changed. Dispatch, a new
branch, a diff of 300+ files or an API error runs it as before.
tests/test_signing_keychain_real_import_gate.py pins the plan on Linux, the
gate, and that the input list covers every file the test runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-85ca59f74f02d81734c3
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 8c6f350: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr25997 -f ref=fanout-infra/keychain-mac-paths -f platform=macos -f backend_mode=local

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-446h0k created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra xhigh, independent): SHIP at 8c6f350

No blocking findings: plan shell fails open under bash -e (dispatch, zero before, force-push, new branch, API or jq error); INPUTS covers every file the real import runs; contents: read suffices for compare on fork PRs; no required-check reference to the macOS job.

@teamleaderleo teamleaderleo removed the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 27, 2026
@teamleaderleo
teamleaderleo merged commit 37d5c1e into feat-cmux-next Oct 27, 2026
159 of 163 checks passed
@teamleaderleo
teamleaderleo deleted the fanout-infra/keychain-mac-paths branch October 27, 2026 08:12
@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40472120369 at 5738daf failed: cmux app scheme compile (Debug).
Those jobs last passed at 2c480ab. This pull request is one of 3 merged since: #26019, #26027, #25997.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 8c6f350b Deployed Oct 27, 2026 by teamleaderleo via wait for same-key tree publisher #62875
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant