Repository navigation
fix(ci): a fork pull request never reads CI_SESSION_LANE_RUNNER - #27548
Conversation
dd027bc (#27201) gave the macOS placement step SESSION_LANE: ${{ vars.CI_SESSION_LANE_RUNNER }}, a runner variable that names an owned glaeda-session-* label, with no fork branch. tests/test_ci_fork_runner_routing.py (ci-guards.yml "Validate fork runner routing") fails on it: "cmux-next.yml:1249 checks vars.CI_SESSION_LANE_RUNNER before the fork pull-request branch". The expression now starts with the owner branch and the fork pull-request branch, as every other runner line does. Values, by GitHub's && / || rules (evaluated with the test's own parser): - push, same-repo pull request, workflow_dispatch in manaflow-ai: unchanged (the variable, or ''). - fork pull request into manaflow-ai: 'blacksmith-6vcpu-macos-26' (was the variable). - a fork's own CI: 'macos-26' (was ''). side_lane_placement.py uses SESSION_LANE only when it starts with "glaeda-", so for both fork cases the placement's session lane is '', its safe default (the job keeps the route it had without it). The step itself runs only on a glaeda- side route, which a fork never gets; this makes the input safe on its own, with no exemption list to keep right. Red (base 7b53cd4): python3 tests/test_ci_fork_runner_routing.py -> FAILED (failures=1). Green (head): OK (20). test_ci_side_lane_placement, test_ci_next_macos_cascade, test_ci_owned_pool_rescue, test_ci_pr_runner_pool, test_runner_label_policy, test_cmux_next_checks_workflow: OK.
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 34e31e4 to compare; do not merge until green; see lane-rules Shipped in:
|
|
Independent review subagent, security lens: SHIP. A fork PR into manaflow-ai stops at the fork branch before Review (Claude Opus 5.5, security lens): SHIP at 83df9a3 |
|
Found 6 test failures on Blacksmith runners: Failures
|
|
Bead |
|
Review (codex gpt-6-astra high fast, drain lane): SHIP at 83df9a3 No blocking findings. The expression preserves same-repository behavior and short-circuits fork cases before accessing the runner variable. Review limited to the supplied diff; the |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
#27201 (dd027bc) gave the macOS placement step
SESSION_LANE: ${{ vars.CI_SESSION_LANE_RUNNER }}. That runner variable names an ownedglaeda-session-*label, and the line has no fork branch.tests/test_ci_fork_runner_routing.py(ci-guards.yml "Validate fork runner routing") fails on it:cmux-next.yml:1249 checks vars.CI_SESSION_LANE_RUNNER before the fork pull-request branch.The expression now starts with the owner branch and the fork pull-request branch, in the same form as every other runner line. A fork pull request never reads the variable. There is no exemption entry in the test, so there is no second list to keep correct.
Thanks @teamleaderleo for #27201. This only gates the new input; the session-lane routing is unchanged for same-repository runs.
Values before and after
Evaluated with GitHub's
&&/||rules, using the test's own expression parser. "placement lane" is whatscripts/ci/side_lane_placement.pytakes from it: it usesSESSION_LANEonly when the value starts withglaeda-.''. That is its safe default: the job keeps the route it had without the lane.glaeda-side route, which a fork never gets. This change makes the input safe without depending on that.Changelog
none
Testing
Command:
python3 tests/test_ci_fork_runner_routing.pyFAILED (failures=1)(the line above).Ran 20 tests ... OK.Also OK at the head:
test_ci_side_lane_placement.py,test_ci_next_macos_cascade.py,test_ci_owned_pool_rescue.py,test_ci_pr_runner_pool.py,test_runner_label_policy.py,test_cmux_next_checks_workflow.py.Observed / Not run
scripts/cmux-next/prepush-gate.py: no new violations.The same class of fix for perf/chrome-parity is on
cp/fix-tip-checks-base-red-4.Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Fixes the macOS placement step in
cmux-next.ymlso a fork pull request never reads theCI_SESSION_LANE_RUNNERvariable, which resolves the failing "Validate fork runner routing" test.SESSION_LANEexpression now checks the owner and fork pull-request branches before falling back to the variable, matching the pattern used by other runner lines.macos-26orblacksmith-6vcpu-macos-26), which place no session lane.Written for commit 83df9a3. Summary will update on new commits.