Repository navigation
ci: start the macOS keychain real-import only when the keychain tool changes - #25997
Conversation
…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
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
|
|
Owned by an agent session · session |
|
Found 1 test failure on Blacksmith runners: Failure
|
|
Bead |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-85ca59f74f02d81734c3
|
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. |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40472120369 at 5738daf failed: cmux app scheme compile (Debug). |
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Why
signing-keychain-macos.ymltriggers on everyscripts/ci/**/*.sh,scripts/*.shandscripts/cmux-next/*.shchange, because its Linuxbash32-syntaxjob has to parse them all. Thereal-importjob used the same triggers, so it ran onblacksmith-6vcpu-macos-26too. 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
real-import-planjob runs on Linux (blacksmith-2vcpu-ubuntu-2404). It reads the compare API diff.real-importnowneedsit and runs only when one of these changed:scripts/ci/signing-keychain.shselect-ci-xcode.shworkflow_dispatch, a new branch (zerobefore), 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.shandscripts/derive_sparkle_public_key.swiftare added to the triggers. The real import runs both, but neither was listed before.tests/test_signing_keychain_real_import_gate.pypins four things:real-importis gated on it;bash32-syntaxis 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.pyandtests/test_bash32_linux_job.pypass, and actionlint is clean.test_ci_workflow_path_filter_parity.py(cmux-next.yml base_red_checks) andtest_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
Need help on this PR? Tag
@codesmith-botwith what you need.