Skip to content

ci(nightly): the prepared-app upload sends 32 artifact blocks at a time, not 5 - #32490

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/nightly-prepare-upload-concurrency
Nov 2, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/nightly-prepare-upload-concurrency

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Signing waits on prepare-nightly-variant-primary's end, and its last step uploads the prepared app (346 MB in run 41485637444). When the build job places the preparation on a dedicated nightly Mac, that upload ran at upload-artifact's default of 5 blocks at a time: 65-156 s, median 85 s, over 21 runs (41455121554 to 41488515134). On the same Macs, the 413 MB unsigned-app upload in build-nightly-app has sent 32 blocks at a time since #32343 and takes a median 53 s across 24 runs.

This PR puts the same ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: "32" anchor (*artifact-upload-concurrency) on "Upload prepared app for signing". The fallback leg prepare-nightly-variant uses that step by alias, so it gets the setting too. Artifact name, path, compression level 0, retention and step order are unchanged. A test in tests/test_nightly_stop_if_publish_doomed.py pins the setting on both legs. It fails without the workflow change and passes with it.

The change only matters when the preparation runs on a Mac. On the Linux overflow route the upload already takes 3 s (runs 41480007529, 41490937436 and 41492012856).

Performance

metric before after delta harness or run link
"Upload prepared app for signing", Mac route (median of 21) 85 s ~45 s (expected: 346 MB at the ~7.8 MB/s the 32-block unsigned upload reaches on the same Macs) ~-40 s runs 41455121554-41488515134; 41485637444 took 126 s
same, Mac route (slowest of 21) 156 s ~60 s (expected) ~-95 s run 41478567483
prepare-nightly-variant-primary job, Mac route (median of 21) 202 s ~162 s (expected) ~-40 s same runs
same, Linux overflow route 45 s 45 s 0 runs 41480007529, 41490937436, 41492012856
Blacksmith minutes per day unchanged unchanged 0 no routing change

The "after" numbers are estimates. The next nightly-next run whose preparation lands on a Mac measures them.

Tests

  • python3 -m unittest tests.test_nightly_stop_if_publish_doomed: fails without the workflow change (2 errors), passes with it
  • tests.test_nightly_step_coverage, test_nightly_background_steps, test_nightly_workflow_size, test_nightly_trusted_routing, test_ci_nightly_off_blacksmith, tests/test_nightly_sign_shadow_workflow.py, tests/test_ci_self_hosted_guard.sh: pass

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Speeds up the nightly prepared-app upload on Mac runners by sending 32 artifact blocks at a time instead of the default 5. Reuses the same *artifact-upload-concurrency anchor as the unsigned-app upload; the fallback leg prepare-nightly-variant shares the step by alias and inherits it too. Artifact name, path, compression level 0 and retention are unchanged.

Performance

  • On a dedicated nightly Mac, the 346 MB upload drops from a median 85 s (65–156 s across 21 runs) to an estimated ~45 s; the slowest run drops from 156 s to ~60 s.
  • The Linux overflow route (3 s) and Blacksmith minutes are unaffected.

Tests

  • test_prepared_app_upload_sends_blocks_in_parallel pins ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY: "32" and compression-level: 0 on both legs and fails without the workflow change.

Written for commit 87d3b73. Summary will update on new commits.

View guided diff Turn on auto-fix

…me, not 5

Signing waits on prepare-nightly-variant-primary's end, and its last step
uploads the 346 MB prepared app. On a dedicated nightly Mac that upload took
65-156 s (median 85 s over 21 runs, 41455121554-41488515134) at
upload-artifact's default 5 blocks at a time; the same Macs move the 413 MB
unsigned app in a median 53 s at 32 since #32343. Reuse that step's
ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY anchor on the prepared-app upload, which
the fallback leg (prepare-nightly-variant) shares by alias. Same artifact,
name, compression and retention; a test pins it on both legs.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 87d3b73: 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=pr32490 -f ref=lane/nightly-prepare-upload-concurrency -f platform=macos -f backend_mode=local

Shipped in:

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/41497919334 at f6b340f failed: cmux-next crash ends the app, cmux-next daemon tests.
Those jobs last passed at ac1dcde. This pull request is one of 5 merged since: #32423, #32457, #32494, #32495, #32490.
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 added the risk:high Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-sonnet-5-5): SHIP at 87d3b73

The anchor is defined at line 2448, before its use at line 3274, and resolves. The step had no env before, so nothing is overwritten. The new test covers both the primary and fallback legs and passes.

Follow-ups: none

@teamleaderleo
teamleaderleo merged commit f6b340f into feat-cmux-next Nov 2, 2026
156 of 165 checks passed
@teamleaderleo
teamleaderleo deleted the lane/nightly-prepare-upload-concurrency branch November 2, 2026 18:04
teamleaderleo added a commit that referenced this pull request Nov 2, 2026
…ghtly.yml back under its size cap (#32513)

#32490, #32501 and #32498 together took nightly.yml to 493,218 bytes, past the
490,000-byte cap in tests/test_workflow_file_size.py. Move "Build and sign the
release notes" and "Embed channel provisioning profile" into
scripts/ci/nightly-steps/, the same way earlier steps were moved; the second
runs under bash -e like its inline block did. The workflow expanded by
tests/nightly_workflow_text.py is byte-identical to base. nightly.yml is now
485,819 bytes.

Base-red-job: test_workflow_file_size (nightly.yml over its 490,000-byte cap)


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

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

This branch was previously deployed

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