ci: the daemon-tests marker and our check, job and step names name no runner OS
Leo: "ok do NOT label stuff as os=linux..."
Takes back #25758: only its "os" field in the daemon-tests marker and the OS word in the gate job name, per the order quoted above. The gate still runs where #25758 put it.
What changes
The daemon-tests marker. cmux-tui-mark-daemon-tested.sh stops writing the "os" field into tree/<key>/daemon-tests.json (added by #25758), and cmux-tui-artifacts.yml drops the runner_os output and TESTED_OS env that fed it.
Backward compatibility. Every reader of the marker (request-nightly-next.sh, tree-preflight, tree-owner-wait, cmux-tui-point-channel.sh) checks only that the marker exists, so markers already published with "os" and new markers without it promote the same way. request-nightly-next.test.sh now covers a marker that still carries the old field, and the reader's comment says only presence counts. A run already in flight uses its own commit's files and writes the old shape, which still promotes.
The gate job's name goes from cmux_next_ daemon tests (Linux) to cmux_next_ daemon tests. cmux_tui_publisher_testing.py already matched both the bare name and any (...)-suffixed name. Older runs' (macOS) and (Linux) jobs still count, and the test now covers both. The gate's test file is renamed tests/test_cmux_tui_daemon_tests_gate.py, with its ci-guards.yml step, test-execution.toml entry and comment references updated. The test now also asserts that the job, its steps and the marker name no OS.
Other check, job and step names our lane owns, with every consumer updated in the same change:
| Where | Before | After |
|---|---|---|
cmux-next-car-guards.yml job name / artifact | car guards (linux) / car-guards-<car>-linux | car guards (portable) / car-guards-<car>-portable (retention allowlist updated; the job id stays) |
cmux-next-terminal.yml job names | terminal crates (Linux), Swift terminal packages (Linux) | ... (portable) |
swift-packages-linux.yml workflow and job names | Swift packages (Linux), swift test <group> (Linux) | ... (portable) |
nightly.yml build-nightly-linux-inputs | no name: (check showed the id) | name: build nightly inputs (the id stays, because needs:, the step-coverage map and open PRs key on it) |
nightly.yml download steps | ... built on Linux (cmux-next), ... generated on Linux (cmux-next) | ... beside the app (cmux-next) (test constants updated) |
cmux-next.yml web-bundle download steps (x3) | ... this run's Linux job built | ... this run's bundle job built (test updated) |
cmux-next-guards.yml | The Linux cross build's macOS link stubs ... | The cross build's macOS link stubs ... |
ci-guards.yml step names (6) | ... on Linux / Linux ... | neutral wording |
No branch ruleset on feat-cmux-next requires any of these checks, so no required check is renamed. Job ids, cache keys and runs-on labels are unchanged.
Left alone
cmux-next/linux-compileand the compile and REF-capture step names incmux-next.yml: another change in flight renames these tocmux-next/compile.- Teammates' jobs and steps: these are reported to the coordinator, not changed here.
- Ours but out of scope here: the
regen-linuxdispatch mode incmux-next-batch.yml(an input value thatnext_batch.pysends), the classicci.yml/ci-macos.ymlgate step names, theInstall Linux build dependenciessteps outside the gate job, and theswift-packages-linux.ymlfile name.
Risk
Low. The changes are label renames plus one marker field removed. The one behavioural reader, the publisher job lookup, keeps matching old and new names.
Tests
These run on a remote box through cmux-ci test: test_cmux_tui_daemon_tests_gate.py, test_cmux_tui_publisher_testing.py, test_ci_tui_routes_avoid_nightly_label.py, test_tui_publish_workflow_security.py, test_cmux_next_checks_workflow.py, test_nightly_helpers_beside_release_build.py, test_ci_upload_artifact_retention.py, test_nightly_step_coverage.py, test_ci_linux_compile_runners.py, test_cmux_tui_lane_daemon_tests.py, test_cmux_tui_owner_wait_defers.py, request-nightly-next.test.sh and validate_test_execution_registry.py.
Agent session: agent session
š¤ Generated with Claude Code