ci(nightly-next): register the post-publish launch smoke on main (not a publish gate)
This puts the cmux NEXT post-publish launch smoke (manaflow-ai/cmux#26723) on main. A schedule and a workflow_dispatch register only from the default branch.
This is not a smoke gate. Publishing never waits on it. Leo, 2026-10-23: "we want no smoke tests. No smoke tests, okay? Or at least, like, you know, previously we had the daemon with a smoke test literally block the entire nightly release, right? Like, that's unacceptable."
After a build is on the cmux NEXT feed, the workflow launches it from a fresh home.
- pass: nothing happens.
- cannot-run: nothing happens.
- crash (on both attempts, with the harness's evidence that the app launched): it dispatches
nightly-next-rollback.ymlwithbad_buildandif_newest, so the feed serves the earlier Nightly build it keeps. It also files one issue per build with the evidence.
So a launch crash like 0c83363 never stays on the feed for more than one smoke run.
Changes
.github/workflows/nightly-next-launch-smoke.yml: the same file as on feat-cmux-next.scripts/ci/owned_pool_rescue.py: the workflow is added toSIDE_WORKFLOW_PATHS. Its Mac job takes an owned Mac's side label on attempt 1, so the sweeper re-runs a refused job; Blacksmith macOS comes after. This is the same asnightly-next-canary.yml.
Tests
These pass on this branch: test_ci_owned_pool_rescue, test_ci_owned_pool_sources, test_ci_runs_on_values, test_ci_no_github_hosted_macos, test_ci_workflow_run_sources, test_runner_label_policy, test_ci_fork_runner_routing and test_ci_self_hosted_guard.sh. The behaviour tests (tests/test_nightly_next_launch_smoke.py) live with the code in #26723.
No new secrets. The crash job's permissions (actions: write, issues: write, contents: read) are the ones nightly-next-rollback.yml already uses.
Agent session: agent session
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Puts the cmux NEXT post-publish launch smoke on main so its schedule and dispatch register, without making it a publish gate. Runs take their smoke tooling from feat-cmux-next; a PR into feat-cmux-next tests its own head.
- Every 10 minutes the workflow launches the feed's newest build from a fresh home; a crash on both attempts dispatches
nightly-next-rollback.ymland files one issue per build with the crash evidence. The dispatch carriesif_newest, so the rollback re-checks the build is still the newest and never pulls a build published meanwhile. - Passes are cached per build; a cannot-run is cached only for the rest of its UTC hour; a crash is never cached, so it is retried until its rollback lands.
- Schedule and dispatch runs get a concurrency group of their own so a waiting run is never replaced; only a PR's runs share a group, per PR.
- If the tooling ref lacks
scripts/ci/nightly_next_launch_smoke.py(a PR into main beforefeat-cmux-nextlands), nothing is judged: no rollback, no verdict cache, so the build is smoked once the tooling lands. - Adds the workflow to
SIDE_WORKFLOW_PATHSinscripts/ci/owned_pool_rescue.pyso its Mac job takes an owned Mac's side label on attempt 1, matchingnightly-next-canary.yml, and exempts the same job from the Xcode floor pin since it builds nothing.
Summary by CodeRabbit
- Chores
- Nightly builds are checked for valid feed entries, successful downloads, and launches on macOS. Results and smoke-test evidence are recorded.
- Scheduled checks skip builds that passed previously or could not be tested during the current UTC hour. Smoke tests retry once after a qualifying failure; crashes are not cached.
- For non-pull-request runs, a crash can trigger a rollback request if the build is still newest, and creates or updates a tracked issue. Pull-request checks do neither.