docs(workflows): rename split-CI labels to github-runner/kkt-runner - #11
Merged
Conversation
Closes #10. The split `CI.yml` labels are now named after the *runner* rather than the workload: `run ci cpu` -> `github-runner`, `run ci gpu` -> `kkt-runner`. The GitHub-hosted job is not meaningfully "the CPU job", it is the job that runs on GitHub's runners; the other is defined by the self-hosted machine it lands on. - §2: rename the two rows in the label table, state that the runner-based vocabulary is fleet-wide (not a per-repo spelling choice), and mark `run ci cpu`/`run ci gpu` as deprecated. - §7: add a "rename a label fleet-wide" recipe (repository label + caller `if:` guard must move together) and scope the per-repo licence to *which* labels a repo defines, not how they are spelled. - §3.1, §4, §5, §6, §8: propagate the new names. - §3.1/§4: CTParser.jl was wrongly listed as having no GPU-relevant code; it depends on CUDA/MadNLPGPU/KernelAbstractions/ExaModels and ships the ExaModels backend, so move it into the split-CI group. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ocots
approved these changes
Jul 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #10.
Takes option 1 of issue #10 §2: standardise on a single vocabulary for the split-CI labels, named after the runner rather than the workload.
run ci cpugithub-runnerrun ci gpukkt-runnerRationale recorded in §2: the GitHub-hosted job is not meaningfully "the CPU job", it is the job that runs on GitHub's runners (and happens to exercise CPU paths); the other job is defined by the self-hosted machine it lands on (
kkt). The runner-based names keep the label, theruns_onvalue and the job name saying the same thing, and they extend to any future runner by the same rule (kkt-runner,mothra-runner, …) without inventing a new workload adjective.Merging this makes
WORKFLOWS.mddescribe a state the fleet has not reached. Three repos still carry the old labels, and until they are migrated the handbook is aspirational for them. Current state verified against each repo'smainon 2026-07-30:CI.ymljob namestest-github-runner,test-kkt-runnergithub-runner,kkt-runnertest-cpu-github,test-gpu-kktrun ci cpu,run ci gputest-cpu-github,test-gpu-kktrun ci cpu,run ci gputest-cpu-github,test-gpu-kktrun ci cpu,run ci gpurun cijobGPU.yml,run GPUPer-repo checklist (OptimalControl.jl, CTFlows.jl, CTSolvers.jl)
Each of the three needs the same four edits — the label name lives in two places per repo, and a renamed label with a stale guard silently stops triggering anything (this is exactly the failure mode the new §7 bullet warns about):
gh label edit "run ci cpu" --name "github-runner" --repo control-toolbox/<repo>gh label edit "run ci gpu" --name "kkt-runner" --repo control-toolbox/<repo>.github/workflows/CI.yml— each job'sif:mentions its label twice (once in thegithub.event.label.name ==branch, once in thecontains(...)branch).test-cpu-github→test-github-runnerandtest-gpu-kkt→test-kkt-runner, to match CTParser.jl and keep job name, label andruns_onall saying the same thing. Cosmetic, but it is the point of the rename.github-runnerto a PR and checking exactly one run starts, and thattest-kkt-runnerstays skipped.Two unrelated findings spotted while checking the above
CI.ymlstill hasopenedin itstypes:list (types: [labeled, opened, synchronize, reopened]). That is the duplicate-run bug §2 documents at length; CTFlows.jl and CTSolvers.jl have already dropped it. Worth fixing in the same PR that does the rename.run CI cpu/run CI gpu(capitalCI), grepped from$LABELSin a hand-rolledguardjob rather than anif:guard on a reusable caller. It is not in §4's split-CI group and its CI is structured differently, so I have left it alone; flagging it since it is one more variant of the same vocabulary in the wild.What changed in
WORKFLOWS.mdrun …labels" (not every trigger label starts withrunany more). Added two paragraphs: why the split is named after the runner, and that this vocabulary is fleet-wide, not a per-repo choice — which is the question WORKFLOWS.md: CTParser.jl misclassified as having no GPU code, and no guidance on split-CI label naming #10 said the handbook was silent on.run ci cpu/run ci gpuare marked deprecated.if:guard) and they must move together, otherwise the label silently triggers nothing. Also narrowed the existing "per-repo trigger change" bullet: a repo chooses which labels it defines, never how they are spelled.split CI (cpu/gpu)→split CI (`github-runner`/`kkt-runner`), checklist item, new-repo recipe step 7).Also fixed (issue #10 §1)
CTParser.jlwas listed under "no GPU-relevant code" in §3.1 and had no split-CI entry in the §4 table. That is factually wrong — it depends onCUDA,MadNLPGPU,KernelAbstractionsandExaModels, loads them unconditionally intest/runtests.jl, and ships the ExaModels backend insrc/onepass.jl. Moved into the split-CI group in both places. This is bundled here because the same table rows and the same sentence carry both the classification and the label names.Not addressed here
Issue #10's closing note — breakage matrices should be re-derived from actual downstream
[deps]rather than maintained by hand — is worth a separate §4 note.🤖 Generated with Claude Code