Skip to content

ci(nightly-next): one Mac job on the release-pool path; the final DMG is checked in verify-final - #26491

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
ib/nightly-next-signer-mac-leg
Oct 28, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
ib/nightly-next-signer-mac-leg

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

The release-pool path for nightly-next had two Mac jobs between the pool signer and the fallback decision: signer-dmg-image (builds the DMG), then signer-verify (checks the final DMG). The macOS signer could not start until both had run. This change leaves one Mac job before that decision.

  • signer-dmg (release pool) now hands on the notarized DMG, the appcast and the signed-app handoff under the names build-sign-notarize-nightly uses. build-sign-notarize-nightly runs whenever signer-dmg did not pass.
  • signer-verify is gone. Its checks of the final DMG (codesign, Gatekeeper's notarized source, Apple's checks of the app inside including the copied Computer Use helper, and the appcast's Sparkle signature against the pinned key) move to a step in verify-final-dmg-nightly that runs only for a pool-signed DMG (scripts/ci/nightly-steps/signer-final-dmg-checks.sh). Publish already needs that job.
  • signer-dmg-image is the pool path's one Mac job, routed like the verify jobs: on attempt 1 of a nightly-next push, a free owned fleet Mac first (the owned-pool rescue watches it there); otherwise the Blacksmith macOS label with a moving queue, and on a rerun the other size.
  • The canonical uploads in signer-dmg never overwrite, so after a rerun the macOS job's verified output stands.

Outside the pool path nothing changes. Comparing the expanded workflow with base, the only differences are the signer-verify → signer-dmg name in the four jobs that read it, and the new step in verify-final-dmg-nightly, which is gated on needs.signer-dmg.result == 'success'. nightly.yml shrinks from 488,751 to 485,729 bytes.

Trade-off: a failure in the final DMG's Mac checks now fails the run's publish instead of falling back to the macOS signer. The same app was already checked on a Mac before the DMG was built, so such a failure is rare, and the next tip builds.

Before (run 40556126172): pushed 18:01, published 20:52. The sign job queued 73 min on blacksmith-6vcpu-macos-26. After: measured on the first opted-in run at this tip.

Tests: tests/test_nightly_signer_jobs.py pins the one hand-off point, the fallback condition, the pool-only final-DMG step and its checks, and the overwrite rules. The sign-runner, recovery, coverage and retention tests are updated. Every other red guard here fails the same way on base.

Risk: high (release workflow). Nothing changes unless the sign_pool input or vars.CI_NIGHTLY_NEXT_SIGN_POOL opts in.

Review (codex gpt-6-astra xhigh): SHIP at b8b7e93

Agent session: agent session

🤖 Generated with Claude Code

… is checked in verify-final

signer-verify was a second Mac job between the pool signer and the fallback
decision, so the pool path waited in two Mac queues before the macOS signer
could start. signer-dmg (release pool) now hands the notarized DMG, appcast and
signed-app handoff on, and build-sign-notarize-nightly runs whenever signer-dmg
did not pass. signer-verify's checks of the final DMG (signature, Gatekeeper's
notarized source, Apple's checks of the app inside, the appcast's Sparkle
signature) move to verify-final-dmg-nightly, for a pool-signed DMG only, which
publish already needs. signer-dmg-image stays the pool's one Mac job, routed
owned-first like the verify jobs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-cc8bff1c3ddb4ec353c5
@teamleaderleo teamleaderleo added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

Review b8b7e93: 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=pr26491 -f ref=ib/nightly-next-signer-mac-leg -f platform=macos -f backend_mode=local

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 4 test failures on Blacksmith runners:

Failures

Test View Logs
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build/
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build
View Logs
nightly.yml must derive the embedded key and sign every appcast through the helper/
nightly.yml must derive the embedded key and sign every appcast through the helper
View Logs
test_the_nightly_is_covered (main.NightlyStepCoverageTests.test_the_nightly_is_cove
red)/
test_the_nightly_is_covered (main.NightlyStepCoverageTests.test_the_nightly_is_cove
red)
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-bjaxti created for this PR by the cmux coordinator.

@teamleaderleo
teamleaderleo merged commit 7056500 into feat-cmux-next Oct 28, 2026
177 of 188 checks passed
@teamleaderleo
teamleaderleo deleted the ib/nightly-next-signer-mac-leg branch October 28, 2026 01:47
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — b8b7e939 Deployed Oct 28, 2026 by teamleaderleo via wait for same-key tree publisher #68449
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