Skip to content

Route nightly DMG signing through fleet Macs - #29801

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/lane--nightly-signer-fleet
Nov 1, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/lane--nightly-signer-fleet

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

signer-dmg was pinned to Blacksmith Linux even though it receives release signing credentials, and the nightly Blacksmith-only debt test exempted it. That left a secret-bearing job outside the nightly fleet-first routing rule.

This routes the DMG signer through the existing drained owned-Mac signing picker, with the moving Blacksmith macOS label as overflow. The release environment is not widened to fleet Linux: this job keeps certificate and notarization credentials on the trusted signing Macs, in line with the rulebook's Linux, owned Macs, Blacksmith order and temporary credential handling. The checksum and base64 steps now work on both GNU/Linux and macOS. The routing and signing guards cover the regression and the Blacksmith debt exemption is removed.

Leo said: "why are changes to these not in my current nightly" and the freshness rule requires each feed's newest published build to stay within 30 minutes of the newest landing on its branch.

Validation: python3 -m unittest tests/test_nightly_signer_jobs.py tests/test_nightly_sign_runner.py tests/test_ci_nightly_off_blacksmith.py tests/test_ci_signing_owned_mac.py tests/test_ci_signing_keychain_is_deleted_before_bundle_code.py tests/test_release_signer_scripts.py (113 passed); workflow YAML parse and shell syntax checks pass.

Agent footer: 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.


Summary by cubic

Routes the nightly DMG signer through the fleet's owned Mac signing pool instead of pinned Blacksmith Linux, since the job holds release signing credentials and previously sat outside the nightly fleet-first routing rule. The Blacksmith macOS picker is now its overflow runner; fleet Linux is not added to the release environment.

Details

  • New signer-build-macos job builds the macOS-native rcodesign artifact, since the Linux ELF cannot run on the Mac signing path; signer-dmg installs from that artifact.
  • A claim-gate step holds the whole owned Mac before any credential and verifies the exclusive signing claim and the glaeda hook.
  • The checksum, base64, and certificate-comparison steps are now portable across GNU/Linux and macOS, and the appcast generator skips its redundant OpenSSL Ed25519 check on macOS because the pure Python verifier runs right after.
  • Tests updated to cover the new routing, the macOS build job, and the removal of the Blacksmith-only debt exemption for signer-dmg.

Written for commit cf67e8e. Summary will update on new commits.

View guided diff Turn on auto-fix

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

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

Review cf67e8e: 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=pr29801 -f ref=lane/lane--nightly-signer-fleet -f platform=macos -f backend_mode=local

Shipped in:

@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@teamleaderleo
teamleaderleo force-pushed the lane/lane--nightly-signer-fleet branch from 7ff0db3 to 535c601 Compare October 31, 2026 23:58
@teamleaderleo
teamleaderleo force-pushed the lane/lane--nightly-signer-fleet branch from 535c601 to 1688f2a Compare November 1, 2026 00:01
@teamleaderleo
teamleaderleo force-pushed the lane/lane--nightly-signer-fleet branch from 1688f2a to cf67e8e Compare November 1, 2026 00:03
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent): SHIP at cf67e8e

The native signer gate, macOS checksum/base64/Bash portability, mandatory pinned-key appcast verification, and warm-source declarations address the review findings. The owned-Mac claim gate fails closed before credentials. Fleet deployment must recognize signer-dmg in the glaeda signing hook before validating the owned signing route.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent): SHIP at cf67e8e

@teamleaderleo
teamleaderleo merged commit b52afce into feat-cmux-next Nov 1, 2026
161 of 168 checks passed
@teamleaderleo
teamleaderleo deleted the lane/lane--nightly-signer-fleet branch November 1, 2026 00:09
@blacksmith-sh

blacksmith-sh Bot commented Nov 1, 2026

Copy link
Copy Markdown

Found 20 test failures on Blacksmith runners:

Failures

Test View Logs
1 runner guard check(s) failed:/1 runner guard check(s) failed: View Logs
1 runner guard check(s) failed:/1 runner guard check(s) failed: View Logs
nightly.yml job signer-build-macos never runs scripts/
select-ci-xcode.sh, so it builds with the image's default Xcode
View Logs
nightly.yml job signer-dmg never runs scripts/
select-ci-xcode.sh, so it builds with the image's default Xcode
View Logs
test_big_red (main.FleetRuleLints.test_big_red)/
test_big_red (main.FleetRuleLints.test_big_red)
View Logs
test_every_blacksmith_linux_label_fails_over (main.BlacksmithLinuxFailoverTest.test
_every_blacksmith_linux_label_fails_over)/
test_every_blacksmith_linux_label_fails_over (main.BlacksmithLinuxFailoverTest.test
_every_blacksmith_linux_label_fails_over)
View Logs
test_every_runner_variable_a_workflow_reads_is_reported (main.TheReportSeesEveryRun
nerVariable.test_every_runner_variable_a_workflow_reads_is_reported)/
test_every_runner_variable_a_workflow_reads_is_reported (main.TheReportSeesEveryRun
nerVariable.test_every_runner_variable_a_workflow_reads_is_reported)
View Logs
test_every_upload_is_short_lived_and_small_or_allowlisted (main.WorkflowTests.test_
every_upload_is_short_lived_and_small_or_allowlisted)/
test_every_upload_is_short_lived_and_small_or_allowlisted (main.WorkflowTests.test_
every_upload_is_short_lived_and_small_or_allowlisted)
View Logs
test_keychain (main.FleetRuleLints.test_keychain)/
test_keychain (main.FleetRuleLints.test_keychain)
View Logs
test_nightly_keeps_a_margin_under_the_limit (main.WorkflowFileSizeTest.test_nightly
_keeps_a_margin_under_the_limit)/
test_nightly_keeps_a_margin_under_the_limit (main.WorkflowFileSizeTest.test_nightly
_keeps_a_margin_under_the_limit)
View Logs

...and 10 more test failures. View all on Blacksmith

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

teamleaderleo added a commit that referenced this pull request Nov 1, 2026
… on a re-run, never 16 or 32 (#29886)

The nightly signer jobs (signer-build, signer-app, signer-app-notary, signer-dmg), the nightly
sign pick and the DEV daily sign pick ran on Blacksmith Linux 16 or 32 vCPU. They are
notarization-bound (HQ build-fleet summary, W44 p50 on 32 vCPU: signer-app 240 s, signer-dmg
199 s, signer-build 7 s, the pick 11 s). Attempt 1 now takes GitHub-hosted ubuntu-24.04, a
re-run Blacksmith Linux 4 vCPU. A pool signer GitHub drops unstarted fails the pool path and
the macOS signer signs, as before. rcodesign stays the Linux build (#29821 took back the
owned-Mac route of #29801). The hosted-runner guard gets the signer route as one exact,
measured exception.

Leo, 2026-11-01: "surely we measured the signign we dont need 32/16 just for signing", then
"surely github has linux hosted we can just use".


Agent-Session: https://cmux.com/deeplink/agent?id=aid-d9093a0f1b2d0cbb0b2c

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — cf67e8ee Deployed Nov 1, 2026 by teamleaderleo via cmux-tui tree preflight #92165
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