Files
Álvaro Brey 87417b48b2 ci: merge gate that tightens once the full suite is approved (#8235)
* ci: post a merge gate status that tightens once the full suite is approved

Adds a ci/all-tests-gate commit status driven from CircleCI. A no-requires
job posts success at pipeline start, approving the full-suite hold flips
it to pending, and all-tasks-passed posts success again once every full
job is green. Release pipelines post it from all-tests-succeeded so
release PRs are not blocked once the context is required.

The reduced suite needs no gate of its own: its jobs are already required
individually.

* test: find the merge gate by its instance name

all-tasks-passed is now an instance of the parameterized post-gate-status
job, so the workflow entry is keyed by the job name and carries name:.

* ci: never post the default gate success once the full suite is requested

full-suite-not-requested waits for the reduced suite and checks the
hold first: approved means halt without posting, so the gate goes from
unreported straight to pending; anything but on_hold fails the job
rather than posting success. all-tasks-passed reaches the reduced suite
through full-suite-started, so it keeps a single list, and the test
guards the list that gates normal PRs.

* ci: retry the gate status post

A failed POST leaves the gate at its previous value: green if the pending
post fails, stuck if the final success post fails. Retrying transient
errors narrows both. --retry-all-errors is not used: the cimg/base curl
predates it.

* ci: mark the merge gate pending when the bot approves the full suite

The bare @RCGitBot please test comment is the usual way to request the
full suite. Posting pending from the action right after a successful
approval closes the window on that path; a re-comment on an already
approved hold posts nothing. Manual approvals in the CircleCI UI keep
the window of one container start.

* ci: pin the gate's ordering in a test and trim the fan-in list

Asserts the state of each gate instance and the requires edges that
keep pending after the default success and the final success last.
Drops the two reduced-suite jobs all-tasks-passed still listed directly,
and lets the hold check log a curl failure instead of a bare exit code.
2026-11-06 15:32:43 +00:00
..