Skip to content

ci: merge_group trigger, cancel-superseded and end-of-queue cache janitor (GEN-022) - #1336

Merged
zackees merged 2 commits into
mainfrom
ci/gen-022-merge-queue
Oct 26, 2026
Merged

zackees merged 2 commits into
mainfrom
ci/gen-022-merge-queue

Conversation

@zackees

@zackees zackees commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Steps 1-2 of GEN-022's merge-queue transition (forge-ci/ci.yml#432). Same shape as forge-ci/zccache#1998 and forge-ci/soldr#3923.

  • ci.yml triggers on merge_group (types: checks_requested). On a queue run, ci-mode runs local-gate verify, which passes non-PR events straight through, so linux-quick (Linux x64 checks) always runs. The schedule- and label-gated lanes stay skipped.
  • cancel-superseded (fix(broker): bound pre-bind serve steps to unblock macOS rejected-handoff e2e #409): runs only on merge_group, no needs:. It runs ci/cancel_superseded.py, copied from ci: merge_group trigger, cancel-superseded and end-of-queue cache janitor (GEN-022) forge-ci/zccache#1998.
  • queue-cache-janitor: runs ci-lint cache janitor after every other job on always(), only on merge_group, and holds the non-cancelling cache-janitor group. [cache].budget = "9GB" is declared. It checks out ci-lint at current forge-ci/ci.yml main (953c4e1) rather than the linter pin (86b6393), because the pin predates the repo-wide budget LRU pass (feat(cache): merge queue policy; end-of-queue janitor enforces [cache].budget by LRU (#405) forge-ci/ci.yml#407). That adds one CT-004 finding. The nightly cache-budget job is unchanged.
  • ci.toml: merge_group was already allowed for ci.yml. [allow].permissions grants actions: write to cancel-superseded and queue-cache-janitor.
  • local-gate.toml: cancel-superseded is verify-exempt (GATE-002).
  • tests/test_ci_lint.py pins the new shape: the trigger, no needs: on cancel-superseded, the janitor needing every other job, the group, and that nothing else depends on cancel-superseded. The existing cache-budget pins in tests/test_cache_budget.py still hold.
  • No job runs ci-lint plan, so the linter pin is unchanged (step 1 does not apply).

ci-lint precheck --local (forge-ci/ci.yml main): GEN-022 is cleared. The only new finding is the CT-004 above (and a line-number shift on an existing SEC-001). The local gate passed (linux-quick, 598s) and the head is stamped. The first gate run caught a bug in the new test (it matched needs: in a comment), fixed in the second commit. Nextest's one-retry flake observer_launched_tree_test::an_observed_configured_command_spawns_verbatim_and_reports_lifecycle was seen on the first run and is not related.

Not included: the queue ruleset (step 3). Suggested required checks: CI mode, Linux x64 checks / lint gates (linux-x86) (that aggregate requires preflight and dylint).

Refs forge-ci/ci.yml#432

…itor (GEN-022)

Steps 1-2 of GEN-022's merge-queue transition (forge-ci/ci.yml#432).

Refs forge-ci/ci.yml#432
Local-Gate: v1 tree=25a701708cf5c5b952e1aff946697fc94b0349e8 secs=598 lanes=linux-quick:run
Ci-Attestation: {"at":1793017745,"gate":"rust/all/fmt","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"a0ae5d0aab5259dfaca9f7928cb63218","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"python/all/static","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"bd7104278a721b4d22899434da52be46","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"rust/x86_64-unknown-linux-gnu/check","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"1de6a6ed97a4c7684b0096f0d4c98c59","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"rust/x86_64-unknown-linux-gnu/dylint","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"d92f61661498f164215a47c88eaa1578","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"c84834a1e570bfbcebd08a125f38adad","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"python/linux-x64/test","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"1d3b7f92b7bf7b42cb00786db554a0eb","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
Ci-Attestation: {"at":1793017745,"gate":"general/linux-x64/perf","host":"linux-x86_64","key":"374668cbe847a1e407bf7482c78a204b63afc89dbbc70c210c38ae9ea2f897ce","lane":"linux-quick","parents":["bd905ec713f399922d900795d7b24e6cfd31b461"],"secs":598,"stamp":"89e9e65deafc1606a78be05c1a20010d","tree":"25a701708cf5c5b952e1aff946697fc94b0349e8","v":1,"via":"run"}
@zackees
zackees merged commit bbe332a into main Oct 26, 2026
12 checks passed
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