Skip to content

ci: route post-merge build and sanitizer shards to on-demand runners - #743

Merged
luisleo526 merged 6 commits into
mainfrom
ci/ondemand-post-labels
Nov 5, 2026
Merged

luisleo526 merged 6 commits into
mainfrom
ci/ondemand-post-labels

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

Move only the post-merge Release build shards and sanitizer shards to the dedicated on-demand runner labels. Synchronize the runner-label contract and its tests with the workflow, keep every other job on its existing runner, and update the CI runner table.

Validation: the full test_ci_preflight.py module (504 tests) plus actionlint runner-label, runner-allowlist, and CI-workflow checks pass on the exact head.

This change updates the checker's runner-label pins together with the workflow, so the first admission run against main's rules is expected to fail until it lands.

🤖 Generated with Claude Code

Keep the post-merge build and sanitizer jobs on the dedicated on-demand
profiles, and update the preflight, actionlint, allowlist mirror, tests, and
CI runner table to describe those exact labels.
Treat on-demand amd64 labels as part of the runner-loss retry fleet, cover
the new labels with a real acceptance row, remove the unused old label, and
document the rollback path.
Fold the rollback note into the existing rerun policy paragraph so the
documented line-count contract stays unchanged.
Keep the disk-sized amd64 acceptance control and require on-demand arm64
and malformed-label inputs to remain refused.
Update the release-gate workflow expectations to match the post-merge
Release build label, preserving shard and runner-drift refusal controls.

@graphify-labs graphify-labs Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Graphify reviewed this change.

No issues found by static checks — no coupling regressions or blocking issues in the code graph. That is not the same as safe to merge: see what was not checked.

Not checked: tests were not run; no formal proof of the changed code.


Graphify review — findings

Switches the ci-post.yml Release build and sanitizer jobs to new on-demand GKE runner labels, gke-ondemand-32cpu-64gb-amd64 and gke-ondemand-32cpu-64gb-amd64-256gb, replacing the old gke-32cpu-64gb-amd64 pair. The new labels are added to the actionlint self-hosted list, the runner-group allowlist mirror and docs/ci.md, so the docs and allowlist match the workflow. scripts/ci_preflight.py now expects the on-demand labels for those two jobs, and its GKE route and runner-group regexes accept an optional -ondemand segment. Preflight therefore refuses the old labels on ci-post.yml and still treats the new ones as group-member scale sets. The preflight tests are updated to the new expectations.

No blocking issues surfaced. 1 lower-confidence candidate did not survive cross-model review.

Analysis details — impact, health, verification

Impact & health

Graphify review

Impact — 919 functions depend on the 891 functions this change touches.

Health — grade C; 10 existing hotspot(s) in the area this change touches (pre-existing, not introduced here):

  • ci_workflow_findings() — 81 callers, 24 callees (high)
  • gke_admit_workflow_findings() — 16 callers, 11 callees (high)
  • check_commands() — 22 callers, 5 callees (high)
  • native_workflow_findings() — 9 callers, 12 callees (high)
  • _job_values() — 29 callers, 3 callees (high)
  • admit_rule_findings() — 7 callers, 9 callees (high)
  • _job_block() — 17 callers, 3 callees (high)
  • runner_findings() — 2 callers, 25 callees (high)
  • …and 2 more

Verification — 919 functions in the blast radius were not formally verified this run (proofs are advisory here).

Gate & verification

graphify gate

PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.

Advisory (not blocking):

  • verification_scope: 919 function(s) in the blast radius were not formally verified this run

@luisleo526
luisleo526 merged commit aff553b into main Nov 5, 2026
12 of 14 checks passed
@luisleo526
luisleo526 deployed to release-bot November 5, 2026 13:26 — with GitHub Actions Active
luisleo526 added a commit that referenced this pull request Nov 5, 2026
Merge main aff553b into the #742 branch
without rebasing or force-updating it. Keep the complete #743 main delta.

Conflict resolutions:
- scripts/ci_preflight.py: keep #742's NATIVE_X86_JOB mapping to the spot
  32CPU label while retaining main's on-demand build and sanitizer labels.
- scripts/test_ci_preflight.py: keep the matching NATIVE_X86_JOB expectation
  and main's on-demand build and sanitizer expectations.

All other main hunks are retained, including the workflow, allowlist, docs,
rerun-controller, release-gate, and rerun-preempted changes.

This branch was successfully deployed

1 active deployment
release-bot — aff553b3 Deployed Nov 5, 2026 by luisleo526 via promote #438
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