Repository navigation
ci: route cmux-tui artifact jobs through live fleet - #30622
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
web and size checks: green Shipped in:
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/41415363947 at c3cb7c4 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
Review (codex gpt-6.1-sol xhigh, router-review): BLOCK at 53cbf4c BLOCK at 53cbf4c
|
There was a problem hiding this comment.
2 issues found across 3 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".github/workflows/cmux-tui-build-package.yml">
<violation number="1" location=".github/workflows/cmux-tui-build-package.yml:165">
P1: This selector still honors a `blacksmith-*` `inputs.linux_runner`, so the binary matrix bypasses the new live-pool routing and can remain pinned to the stale 4/8-vCPU runner. Apply the same non-Blacksmith guard used by `LINUX_RUNNER` before accepting this input.</violation>
<violation number="2" location=".github/workflows/cmux-tui-build-package.yml:165">
P2: The new pool fallback changes this selector’s exact contract, but `test_ci_linux_compile_runners.py` still expects the pre-change expression and will fail when the CI compile-runner suite runs. Update that test’s expected prefix with the new fallback and input guard.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }} | ||
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} | ||
| LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }} | ||
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} |
There was a problem hiding this comment.
P1: This selector still honors a blacksmith-* inputs.linux_runner, so the binary matrix bypasses the new live-pool routing and can remain pinned to the stale 4/8-vCPU runner. Apply the same non-Blacksmith guard used by LINUX_RUNNER before accepting this input.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/cmux-tui-build-package.yml, line 165:
<comment>This selector still honors a `blacksmith-*` `inputs.linux_runner`, so the binary matrix bypasses the new live-pool routing and can remain pinned to the stale 4/8-vCPU runner. Apply the same non-Blacksmith guard used by `LINUX_RUNNER` before accepting this input.</comment>
<file context>
@@ -161,10 +161,10 @@ jobs:
- LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }}
- LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }}
+ LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }}
+ LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }}
MACOS_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || (inputs.macos_runner != '' && inputs.macos_runner || vars.CI_PAID_MACOS_OVERFLOW == '1' && vars.MACOS_RUNNER_15 || 'blacksmith-6vcpu-macos-15') }}
- LINUX_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_RUNNER || 'blacksmith-4vcpu-ubuntu-2404') }}
</file context>
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} | |
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && !startsWith(inputs.linux_runner, 'blacksmith-') && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} |
| LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }} | ||
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} | ||
| LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }} | ||
| LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }} |
There was a problem hiding this comment.
P2: The new pool fallback changes this selector’s exact contract, but test_ci_linux_compile_runners.py still expects the pre-change expression and will fail when the CI compile-runner suite runs. Update that test’s expected prefix with the new fallback and input guard.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/cmux-tui-build-package.yml, line 165:
<comment>The new pool fallback changes this selector’s exact contract, but `test_ci_linux_compile_runners.py` still expects the pre-change expression and will fail when the CI compile-runner suite runs. Update that test’s expected prefix with the new fallback and input guard.</comment>
<file context>
@@ -161,10 +161,10 @@ jobs:
- LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }}
- LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }}
+ LINUX_DARWIN_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER_DARWIN_CROSS || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404' }}
+ LINUX_BUILD_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_BUILD_RUNNER || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-16vcpu-ubuntu-2404') }}
MACOS_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'macos-26' || (inputs.macos_runner != '' && inputs.macos_runner || vars.CI_PAID_MACOS_OVERFLOW == '1' && vars.MACOS_RUNNER_15 || 'blacksmith-6vcpu-macos-15') }}
- LINUX_RUNNER: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || (inputs.linux_runner != '' && inputs.linux_runner || vars.LINUX_RUNNER || 'blacksmith-4vcpu-ubuntu-2404') }}
</file context>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-4ffe4a6a3e7fada96257 (cherry picked from commit 0829eb0)
4457db0 to
081fc49
Compare
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
There was a problem hiding this comment.
3 issues found across 7 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="scripts/ci/portable_job_placement.py">
<violation number="1" location="scripts/ci/portable_job_placement.py:159">
P2: The live check counts an online but busy fleet runner as capacity. The daemon job then queues on that label with no Blacksmith fallback, which can delay artifact publication. Consider counting only idle runners for this gate, or document that busy capacity is accepted.</violation>
</file>
<file name="scripts/ci/pr_runner_pool.py">
<violation number="1" location="scripts/ci/pr_runner_pool.py:2332">
P2: A transient read failure on the optional `cmux-fleet-linux` group now aborts the whole `runners()` listing. Callers that need only glaeda-minis or owned Mac capacity then lose live data, and nightly and signing picks drop to Blacksmith. For an optional Linux group, skip the group on HTTP errors instead of raising, and keep raising only for `RUNNER_GROUP`.</violation>
</file>
<file name=".github/workflows/cmux-tui-artifacts.yml">
<violation number="1" location=".github/workflows/cmux-tui-artifacts.yml:1401">
P1: The daemon fallback sizes are reversed: normal runs resolve to 4 vCPU and overflow runs to 8 vCPU, contrary to the measured size/failover pair. Swap these two Blacksmith labels so the normal route uses 8 vCPU and `CI_CLOUD_OVERFLOW_SAVED` uses 4 vCPU.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| # ci-routing-agent is the one the other glaeda-route readers use. | ||
| environment: ci-routing-agent | ||
| runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-4vcpu-ubuntu-2404' || 'blacksmith-8vcpu-ubuntu-2404' }} | ||
| runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || contains(needs.tree-preflight.outputs.linux_jobs, ' cmux-next-daemon-tests ') && needs.tree-preflight.outputs.linux_runner || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-4vcpu-ubuntu-2404' }} |
There was a problem hiding this comment.
P1: The daemon fallback sizes are reversed: normal runs resolve to 4 vCPU and overflow runs to 8 vCPU, contrary to the measured size/failover pair. Swap these two Blacksmith labels so the normal route uses 8 vCPU and CI_CLOUD_OVERFLOW_SAVED uses 4 vCPU.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/cmux-tui-artifacts.yml, line 1401:
<comment>The daemon fallback sizes are reversed: normal runs resolve to 4 vCPU and overflow runs to 8 vCPU, contrary to the measured size/failover pair. Swap these two Blacksmith labels so the normal route uses 8 vCPU and `CI_CLOUD_OVERFLOW_SAVED` uses 4 vCPU.</comment>
<file context>
@@ -1372,7 +1398,7 @@ jobs:
# ci-routing-agent is the one the other glaeda-route readers use.
environment: ci-routing-agent
- runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || !startsWith(vars.LINUX_RUNNER, 'blacksmith-') && vars.LINUX_RUNNER || fromJSON(vars.RUNNER_POOLS || '{}').linux || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-4vcpu-ubuntu-2404' }}
+ runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || contains(needs.tree-preflight.outputs.linux_jobs, ' cmux-next-daemon-tests ') && needs.tree-preflight.outputs.linux_runner || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-4vcpu-ubuntu-2404' }}
timeout-minutes: 60
env:
</file context>
| runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || contains(needs.tree-preflight.outputs.linux_jobs, ' cmux-next-daemon-tests ') && needs.tree-preflight.outputs.linux_runner || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-8vcpu-ubuntu-2404' || 'blacksmith-4vcpu-ubuntu-2404' }} | |
| runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || contains(needs.tree-preflight.outputs.linux_jobs, ' cmux-next-daemon-tests ') && needs.tree-preflight.outputs.linux_runner || vars.CI_CLOUD_OVERFLOW_SAVED && 'blacksmith-4vcpu-ubuntu-2404' || 'blacksmith-8vcpu-ubuntu-2404' }} |
| # A configured label is only a candidate. Emit it for this run when a | ||
| # live runner listing proves at least one online member; otherwise the | ||
| # caller's measured Blacksmith branch remains the bounded fallback. | ||
| if not runners or pool.live_online(runners, [linux]).get(linux, 0) == 0: |
There was a problem hiding this comment.
P2: The live check counts an online but busy fleet runner as capacity. The daemon job then queues on that label with no Blacksmith fallback, which can delay artifact publication. Consider counting only idle runners for this gate, or document that busy capacity is accepted.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At scripts/ci/portable_job_placement.py, line 159:
<comment>The live check counts an online but busy fleet runner as capacity. The daemon job then queues on that label with no Blacksmith fallback, which can delay artifact publication. Consider counting only idle runners for this gate, or document that busy capacity is accepted.</comment>
<file context>
@@ -144,10 +151,20 @@ def decide(env: Mapping[str, str], runners: Sequence[Mapping[str, Any]] | None,
+ # A configured label is only a candidate. Emit it for this run when a
+ # live runner listing proves at least one online member; otherwise the
+ # caller's measured Blacksmith branch remains the bounded fallback.
+ if not runners or pool.live_online(runners, [linux]).get(linux, 0) == 0:
+ live_linux_missing = True
+ linux = ""
</file context>
| continue | ||
| if not isinstance(group, Mapping) or not isinstance(group.get("id"), int): | ||
| raise RuntimeError(f"no runner group {group_name} is visible to {self.repo}") | ||
| org.extend(self._runner_pages(f"/orgs/{owner}/actions/runner-groups/{group.get('id')}/runners")) |
There was a problem hiding this comment.
P2: A transient read failure on the optional cmux-fleet-linux group now aborts the whole runners() listing. Callers that need only glaeda-minis or owned Mac capacity then lose live data, and nightly and signing picks drop to Blacksmith. For an optional Linux group, skip the group on HTTP errors instead of raising, and keep raising only for RUNNER_GROUP.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At scripts/ci/pr_runner_pool.py, line 2332:
<comment>A transient read failure on the optional `cmux-fleet-linux` group now aborts the whole `runners()` listing. Callers that need only glaeda-minis or owned Mac capacity then lose live data, and nightly and signing picks drop to Blacksmith. For an optional Linux group, skip the group on HTTP errors instead of raising, and keep raising only for `RUNNER_GROUP`.</comment>
<file context>
@@ -2293,28 +2296,42 @@ class GitHub:
+ continue
+ if not isinstance(group, Mapping) or not isinstance(group.get("id"), int):
+ raise RuntimeError(f"no runner group {group_name} is visible to {self.repo}")
+ org.extend(self._runner_pages(f"/orgs/{owner}/actions/runner-groups/{group.get('id')}/runners"))
except urllib.error.HTTPError as error:
- raise RuntimeError(f"org runner group {RUNNER_GROUP} unreadable (HTTP {error.code}); the routing "
</file context>
|
Review (codex gpt-6-astra high, router-review): BLOCK at 55d49ba BLOCK at 55d49ba
Follow-ups:
|
There was a problem hiding this comment.
1 issue found across 2 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".github/workflows/cmux-tui-artifacts.yml">
<violation number="1" location=".github/workflows/cmux-tui-artifacts.yml:323">
P2: The daemon picker now depends on `route-token`, but that token is skipped when `darwin_builder` is `mac`; the remaining tokens lack organization self-hosted-runner read permission, so live fleet routing silently falls back to Blacksmith for every mac-builder run. Mint a runner-readable token for the Linux picker independently, or remove the builder condition from the shared token step.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| GITHUB_RUN_ATTEMPT: ${{ github.run_attempt }} | ||
| GITHUB_TRIGGERING_ACTOR: ${{ github.triggering_actor }} | ||
| GITHUB_REPOSITORY: ${{ github.repository }} | ||
| ROUTE_TOKEN: ${{ steps.route-token.outputs.token || steps.read-token.outputs.token }} |
There was a problem hiding this comment.
P2: The daemon picker now depends on route-token, but that token is skipped when darwin_builder is mac; the remaining tokens lack organization self-hosted-runner read permission, so live fleet routing silently falls back to Blacksmith for every mac-builder run. Mint a runner-readable token for the Linux picker independently, or remove the builder condition from the shared token step.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/cmux-tui-artifacts.yml, line 323:
<comment>The daemon picker now depends on `route-token`, but that token is skipped when `darwin_builder` is `mac`; the remaining tokens lack organization self-hosted-runner read permission, so live fleet routing silently falls back to Blacksmith for every mac-builder run. Mint a runner-readable token for the Linux picker independently, or remove the builder condition from the shared token step.</comment>
<file context>
@@ -332,7 +320,7 @@ jobs:
GITHUB_TRIGGERING_ACTOR: ${{ github.triggering_actor }}
GITHUB_REPOSITORY: ${{ github.repository }}
- ROUTE_TOKEN: ${{ steps.linux-route-token.outputs.token || steps.read-token.outputs.token }}
+ ROUTE_TOKEN: ${{ steps.route-token.outputs.token || steps.read-token.outputs.token }}
ROUTE_TOKEN_FALLBACK: ${{ github.token }}
SNAPSHOT_TOKEN: ${{ steps.read-token.outputs.token || github.token }}
</file context>
|
Review (codex gpt-6-astra high, router-review): BLOCK at abf86a4 BLOCK at abf86a4 Visual verdict: no images; Leo tries the build
Follow-ups: none |
|
Found 37 test failures on Blacksmith runners: Failures
...and 27 more test failures. View all on Blacksmith: run 41294832454, run 41294832453
|
|
For awareness: #30810 (merged as 76f23d1) already moves this workflow's 8 vCPU jobs, including |
|
Orphaned: no activity for 12 h, and no lane holds a lease on it. The orphan sweep could not merge |
|
Owned by an agent session · session |
Keep base's stricter live-capacity check and shared runner state; place the daemon picker after the macOS pick so it reads the runner state document instead of minting routing App reads, and teach the daemon runs-on guard about the fleet Linux label the picker can emit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-496b6634de62976cea5a
The daemon gate's runs-on can now resolve to cmux-fleet-linux-x64 through tree-preflight's live placement output. Teach the runs-on label guard that output's only value, keep DAEMON_POOL as the Blacksmith route, and drop the RUNNER_POOLS property reads the guard's expression parser cannot read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-496b6634de62976cea5a
The placement counts room for one job, so passing its label to both build-package calls queued the musl, plan and package legs on one idle member. Only the daemon tests take it; the build keeps its own routes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-496b6634de62976cea5a
|
Review (subagent opus-5.5): SHIP at 23c34a4 Checked: no job can resolve to an empty runs-on; the live fleet Linux label goes only to the daemon tests (placement counts room for that one job); eligible() change only affects Linux-only pickers; no new secrets; the publisher deferral cannot loop. Placement, workflow-security, publisher-testing, linux-runner-set and runs-on label suites pass. Follow-ups:
|
) #30622 wrapped the plan-build and package runs-on chains in parentheses that end after the literal Blacksmith label, so the repository-variable defaults guard no longer saw the fallback and went red on base. && binds tighter than ||, so dropping the parentheses keeps the same routing. Agent-Session: https://cmux.com/deeplink/agent?id=aid-496b6634de62976cea5a Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
The cmux-tui artifact tree publisher could queue its Linux control and daemon jobs on a stale Blacksmith 4-vCPU label while the live fleet was unavailable. That leaves the tree manifest and daemon marker missing, so nightly-next cannot consume an otherwise built source.
This change carries the approved live GCP runner-group reader and adds a Linux-only placement step to tree preflight. It emits
cmux-fleet-linux-x64only when the authenticated runner inventory proves an online member; otherwise the daemon and other heavy work use measured Blacksmith overflow. The reusable package workflow receives that live output, and stale Blacksmith values cannot pin the selector. The picker reuses the workflow's existing routing App token under its existing builder-gated condition, with its existing administration/read and organization-self-hosted-runners/read permissions; no new App, secret, or permission is introduced. The active owner run 41289457009 is left untouched.Validation:
python3 -m unittest tests.test_ci_portable_job_placement tests.test_cmux_tui_artifacts_linux_runner_set tests.test_ci_pr_runner_pool.OwnedPools(86 passed)git diff --checkpasscmux-next-chromium-currency.ymlandplatform-dev-secrets.ymlAgent session: agent session