Skip to content

ci(rescue): a newer nightly-next tip never cancels an older nightly run - #25430

Merged
teamleaderleo merged 1 commit into
mainfrom
gt-quota/nightly-next-rescue-no-cancel
Oct 26, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
gt-quota/nightly-next-rescue-no-cancel

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

On nightly-next, the owned-pool rescue no longer cancels or skips a refused run because the branch moved. It re-runs that run's failed jobs, as it does for any other refusal.

Why: #25404 gives every nightly-next run its own build and sign groups, so a newer tip builds alongside an older one instead of replacing it. With that in place, the rescue's "nightly-next has moved on, cancel" path broke the Nightly freshness rule: a newer tip is never a reason to cancel a nightly. Ordering is still safe, because publish-nightly's order check refuses any build that is no newer than the feed. An Astra xhigh review of #25404 raised this.

The rescue trigger now also accepts CI_SIDE_LANE_RUNNER (glaeda-side-*), the route nightly-next's builds take today, next to the older CI_NIGHTLY_NEXT_TRUSTED_* pair.

Land order: after #25404. Before #25404, a re-run of an older run would join the shared warm slot.

Risk: low. The change is limited to rescue decisions for nightly-next runs; main's nightly handling is unchanged. Tests: tests/test_ci_owned_pool_rescue.py, 173 pass.

Agent session: 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 CodeRabbit

  • Bug Fixes
    • Nightly-next builds can now run on qualifying side-lane runners as well as trusted runners.
    • Failed nightly-next jobs remain eligible for reruns even when a newer push arrives or the branch head changes. Other nightly builds retain their existing rerun behavior.

nightly-next runs build and sign in groups of their own (#25404), so the
rescue no longer cancels or skips a refused nightly-next run because the
branch moved; it re-runs its failed jobs like any other refusal. The
trigger also accepts the side-lane route nightly-next builds on today.

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

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@coderabbitai

coderabbitai Bot commented Oct 26, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 671abc1 and dbb670f.

Files selected for processing: 3
  • .github/workflows/ci-owned-pool-rescue.yml
  • scripts/ci/owned_pool_rescue.py
  • tests/test_ci_owned_pool_rescue.py

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 3 remain after this review.

Walkthrough

The rescue workflow now accepts qualifying side-lane runners for nightly-next pushes. The rescue script no longer treats nightly-next nightly runs as superseded when newer runs or commits exist. Tests cover both changes and retain the main-commit supersession check.

Changes: nightly-next rescue

Layer / File(s) Summary
Runner eligibility
.github/workflows/ci-owned-pool-rescue.yml, tests/test_ci_owned_pool_rescue.py
For nightly-next push runs, the rescue job accepts a glaeda-side- runner or the trusted pool and runner labels. The workflow-condition test checks that both alternatives remain subject to the branch and push-event conditions.
Supersession handling
scripts/ci/owned_pool_rescue.py, tests/test_ci_owned_pool_rescue.py
pull_moved returns no movement reason for nightly-next nightly runs. Tests verify that a newer push and moved head do not prevent rerunning failed jobs, while a newer main push still prevents rerunning.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: Minimal · up to dbb67

No actionable merge-blocking risk remains from the reviewed changes.

Pre-merge checks: Passed 23 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Description check Warning The description follows the template's main sections. It opens with the problem and resulting behavior, and it explains the mechanism (#25404 per-run build groups, publish-nightly order check, side-la… Add the following to the description. (1) Testing: give the exact test command run (for example, the pytest invocation for tests/test_ci_owned_pool_rescue.py). Name the focused test that fails on the base and passes on the head. Add an '###…
Docstring Coverage Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 23 passed
Check name Status Explanation
Title check Passed The title names the main behavior change: a newer nightly-next tip no longer cancels an older nightly run. It matches the raw summary, which says pull_moved now treats nightly-next runs as never super…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input Passed PASS: The PR changes only the owned-pool rescue workflow, nightly-next supersession logic, and related tests. It does not change Cloud terminal creation, cmux-tui transport, manual renderer admission,…
Cmux Swift Actor Isolation Passed The pull request changes only one YAML workflow and two Python files. The diff contains no Swift production changes, so it does not introduce or worsen Swift 6 actor isolation issues.
Cmux Swift Blocking Runtime Passed PASS: The pull request changes only one workflow YAML file, one Python script, and one Python test file. It introduces no production Swift code and no listed Swift blocking or timing primitive.
Cmux Browser Automation Off-Main Passed PASS: The pull request changes only the rescue workflow, Python rescue logic, and related tests. It does not change either browser-rule source file, and the diff adds no browser commands, WebKit/AppKi…
Cmux Expensive Synchronous Load Passed PASS: The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The diff adds no Swift code or agent-history/workspace load, and it does not affect a SwiftUI or i…
Cmux Cache Substitution Correctness Passed PASS: The pull request changes only a GitHub Actions YAML file, Python rescue logic, and Python tests. It introduces no production Swift, TypeScript, or JavaScript changes, so the cache-substitution c…
Cmux No Hacky Sleeps Passed PASS. The pull request adds no fixed sleep, timer, polling loop, delay, or wall-clock wait. The production Python rescue change adds an early return for nightly-next in pull_moved; it skips existi…
Cmux Algorithmic Complexity Passed The production diff adds one constant-time guard in pull_moved and changes one GitHub Actions boolean condition. It introduces no loops, collection scans, sorting, joins, rescans, or slower algorith…
Cmux Swift Concurrency Passed PASS: The reviewed diff changes only a GitHub Actions workflow, Python rescue logic, and Python tests. It contains no Swift code, so it introduces no Swift concurrency patterns covered by the moderniz…
Cmux Swift @Concurrent Passed PASS: The pull request changes only a GitHub workflow, Python code, and Python tests. The reviewed diff contains no Swift files or Swift code, so the Swift @concurrent check is not applicable.
Cmux Swift Package Boundaries Passed The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The reviewed diff contains no Swift files or production Swift changes, so the Swift package-boundaries r…
Cmux Swiftpm Lockfiles Passed PASS: The PR changes only the rescue workflow condition, rescue Python logic, and its tests. The authoritative diff contains no Package.swift, Package.resolved, .gitignore, Xcode project/workspace, or…
Cmux Swift Logging Passed The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The authoritative diff contains no .swift files and adds or changes no Swift logging. The Swift loggin…
Cmux User-Facing Error Privacy Passed PASS. The diff changes an internal GitHub Actions rescue condition, rescue decision logic, and tests. It adds no cmux product UI, CLI, or API error text, alert, command output, or recovery copy. The c…
Cmux Full Internationalization Passed The diff changes CI workflow eligibility, rescue control flow, comments, and tests only. It adds no Swift UI text, app catalog or Info.plist entries, web UI/API copy, metadata, markdown, changelog, or…
Cmux Swiftui State Layout Passed PASS: The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. It contains no Swift or SwiftUI changes, so the SwiftUI state-layout rules do not apply.
Cmux Architecture Rethink Passed PASS. The pull request changes only a GitHub Actions workflow, a Python rescue script, and Python tests. The authoritative diff contains no Swift files or Swift architecture changes, so the Swift-spec…
Cmux Swift Auxiliary Window Close Shortcuts Passed PASS: The pull request changes only a GitHub workflow, a Python script, and Python tests. It adds or changes no Swift or standalone cmux-owned window code, so the auxiliary-window close-shortcut rule …
Cmux Source Artifacts Passed The pull request changes only three intentional source-control paths: a GitHub Actions workflow, a hand-written rescue script, and its test file. The diff adds no logs, screenshots, recordings, tempor…
Cmux No Test Or Debug Seam In Production Source Passed PASS: The reviewed diff changes only one workflow YAML file and two Python/test files. It contains no Swift file under a production Sources/ path, so the no-test-debug-seam criterion does not apply.
Full details: Title check

Explanation

The title names the main behavior change: a newer nightly-next tip no longer cancels an older nightly run. It matches the raw summary, which says pull_moved now treats nightly-next runs as never superseded, and the objectives, which say refused runs are no longer canceled or skipped when the branch moves. The title is specific and concise, and it uses no vague terms. It does not mention the CI_SIDE_LANE_RUNNER trigger change, but that is secondary to the main change.

Full details: Cmux Cloud Persistent Session And Early Input

Explanation

PASS: The PR changes only the owned-pool rescue workflow, nightly-next supersession logic, and related tests. It does not change Cloud terminal creation, cmux-tui transport, manual renderer admission, PTY readiness, input ownership, or auth/lease/revision fences. The persistent-session rule therefore has no applicable failure condition.

Full details: Cmux Browser Automation Off-Main

Explanation

PASS: The pull request changes only the rescue workflow, Python rescue logic, and related tests. It does not change either browser-rule source file, and the diff adds no browser commands, WebKit/AppKit access, or worker-routing logic. The browser automation check is therefore not applicable.

Full details: Cmux Expensive Synchronous Load

Explanation

PASS: The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The diff adds no Swift code or agent-history/workspace load, and it does not affect a SwiftUI or interactive main-actor path.

Full details: Cmux Cache Substitution Correctness

Explanation

PASS: The pull request changes only a GitHub Actions YAML file, Python rescue logic, and Python tests. It introduces no production Swift, TypeScript, or JavaScript changes, so the cache-substitution correctness condition does not apply.

Full details: Cmux No Hacky Sleeps

Explanation

PASS. The pull request adds no fixed sleep, timer, polling loop, delay, or wall-clock wait. The production Python rescue change adds an early return for nightly-next in pull_moved; it skips existing API-read retry sleeps rather than introducing or expanding delay logic. The workflow YAML change is explicitly out of scope, and the test changes use deterministic fake-clock data only.

Full details: Cmux Algorithmic Complexity

Explanation

The production diff adds one constant-time guard in pull_moved and changes one GitHub Actions boolean condition. It introduces no loops, collection scans, sorting, joins, rescans, or slower algorithm. The test changes are test-only. Therefore, the algorithmic-complexity failure conditions are not met.

Full details: Cmux Swift Concurrency

Explanation

PASS: The reviewed diff changes only a GitHub Actions workflow, Python rescue logic, and Python tests. It contains no Swift code, so it introduces no Swift concurrency patterns covered by the modernization rules.

Full details: Cmux Swift Package Boundaries

Explanation

The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The reviewed diff contains no Swift files or production Swift changes, so the Swift package-boundaries rule does not apply.

Full details: Cmux Swiftpm Lockfiles

Explanation

PASS: The PR changes only the rescue workflow condition, rescue Python logic, and its tests. The authoritative diff contains no Package.swift, Package.resolved, .gitignore, Xcode project/workspace, or SwiftPM dependency/reference changes. Therefore no lockfile or ignore-policy requirement applies.

Full details: Cmux Swift Logging

Explanation

The pull request changes only a GitHub Actions workflow, Python rescue logic, and Python tests. The authoritative diff contains no .swift files and adds or changes no Swift logging. The Swift logging check is therefore not applicable.

Full details: Cmux User-Facing Error Privacy

Explanation

PASS. The diff changes an internal GitHub Actions rescue condition, rescue decision logic, and tests. It adds no cmux product UI, CLI, or API error text, alert, command output, or recovery copy. The changed script path runs as an operator-only CI rescue job, which the rule allows. No secret, credential, personal-data, or payload disclosure was introduced.

Full details: Cmux Full Internationalization

Explanation

The diff changes CI workflow eligibility, rescue control flow, comments, and tests only. It adds no Swift UI text, app catalog or Info.plist entries, web UI/API copy, metadata, markdown, changelog, or locale message entries. The changed comments are developer/operational text, which the rule allows.

Full details: Cmux Architecture Rethink

Explanation

PASS. The pull request changes only a GitHub Actions workflow, a Python rescue script, and Python tests. The authoritative diff contains no Swift files or Swift architecture changes, so the Swift-specific failure conditions do not apply.

Full details: Cmux Swift Auxiliary Window Close Shortcuts

Explanation

PASS: The pull request changes only a GitHub workflow, a Python script, and Python tests. It adds or changes no Swift or standalone cmux-owned window code, so the auxiliary-window close-shortcut rule does not apply.

Full details: Cmux Source Artifacts

Explanation

The pull request changes only three intentional source-control paths: a GitHub Actions workflow, a hand-written rescue script, and its test file. The diff adds no logs, screenshots, recordings, temporary or cache directories, dependency checkouts, build output, package-manager downloads, or copied artifacts. The paths are covered by the rule's allowed source, config, script, and test categories.

Full details: Description check

Explanation

The description follows the template's main sections. It opens with the problem and resulting behavior, and it explains the mechanism (#25404 per-run build groups, publish-nightly order check, side-lane trigger). It gives a Changelog-relevant point only implicitly. The Testing section names the test file and a pass count, but it does not state which command ran, does not name a focused fail-on-base/pass-on-head check, and has no 'Observed / Not run' subsection, which the template asks for on bug fixes. The Proof section is missing; for CI-only changes it should say so in one line. The Changelog section is missing; for internal CI changes it should say 'none'. The checklist is not addressed.

Resolution

Add the following to the description. (1) Testing: give the exact test command run (for example, the pytest invocation for tests/test_ci_owned_pool_rescue.py). Name the focused test that fails on the base and passes on the head. Add an '### Observed / Not run' subsection that states what was run and seen and what was not run. (2) Changelog: add the line 'none' because this is an internal CI change. (3) Proof: add one line explaining why no screenshot applies (for example, CI only). (4) Checklist: tick or address each item, or delete the items that do not apply, as the template instructs. Also remove the unfilled template comment wrappers if they remain.

Full details: Docstring Coverage

Explanation

Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@teamleaderleo
teamleaderleo merged commit 534c141 into main Oct 26, 2026
65 checks passed
@teamleaderleo
teamleaderleo deleted the gt-quota/nightly-next-rescue-no-cancel branch October 26, 2026 10:28
@github-actions

Copy link
Copy Markdown
Contributor

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

Merge receipt for dbb670fb5a: every check was green at merge (10 verified; 16 skipped by policy). Full suite runs on main after merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant