Files
rustfs/docs/testing/ci-event-drills.md
T
Chris An 3bf270b49f ci: record CI01 measurements, drill evidence and fix the OIDC live gate (#9091)
* ci: retain CI01 timing sample and fix the OIDC live gate tool

Record the measured PR feedback and runner occupancy for the CI plan's CI01
criterion, including the honest gap between the experimental targets and the
sampled medians, and replace the awscurl dependency in the live Keycloak gate
with the AWS CLI so the security suite runs on PEP 668 managed fleets.

* docs(testing): attach live run evidence to the event-drill index
2026-10-31 05:10:38 +00:00

6.2 KiB

Event-class drills and retained evidence

Use this when: you need to confirm that a CI event class has been exercised end to end, locate its retained run evidence, or repeat the drill. Source of truth: the live main ruleset for required status; .github/workflows/ci.yml for event triggers; scripts/ci_gate.py for per-event selection and expected results; the run URLs below for observed outcomes.

Every event class the planner serves must have at least one reviewable drill: an actual run whose plan, job set and gate result can be re-inspected. A drill proves the wiring for that event, not product quality and not a cost saving. Static fixtures in scripts/test_ci_plan.py and scripts/test_ci_merge_queue.py cover the negative cases (missing, cancelled, mismatched, combined-candidate conflicts) and are not substitutes for the live drills listed here.

Event classes and expected selection

Event Selection Expected gate behavior
pull_request (ordinary code) reverse-dependency closure + fixed core inventory; shared/unknown inputs expand to full Test and Lint requires exactly the planned job results
pull_request (documentation only) docs mode: no code jobs Quick Checks and Typos run; expensive jobs are required skipped
pull_request (isolated E2E) e2e mode: workspace + server build + E2E smoke + S3 lanes Connect boundary, serial ILM, protocol/rio-v2, real io_uring required skipped
pull_request (closed) Cancel Closed PR Runs only in-flight validation for that PR is cancelled; no new validation is claimed
pull_request (merged) entry into merge_group combined candidate is validated as its own SHA/tree with the full matrix
push to main full complete validation; no reuse inferred from tree equality
push of a release tag build.yml release matrix build and publication path (not the PR planner)
schedule registry-selected cadence plan suites run under their resource locks; failures feed the health monitors
workflow_dispatch full unless an explicit narrow input is passed manual runs without a plan stay visible as unverified
workflow_run monitor/filter through the responsibility registry independent health layer reports expected SHA, attempt and evidence completeness

Retained evidence index

Run URLs are https://github.com/rustfs/rustfs/actions/runs/<id>. Re-open the run and its Select CI scope job log to read the planner's recorded mode, reasons and expected job results.

Class Drill Run Observed
Ordinary PR test(heal): align cleanup tests with removal-disabled heals 41153190859 full scope (12 real jobs: workspace build/tests, E2E, S3, core contract, io_uring); gate accepted exact planned results
PR closed test(heal): align cleanup tests… closure handler 41160735383 only Cancel Closed PR Runs executed; every validation job required skipped
push to main chore(deps): refresh workspace dependencies (#9080) 41160768241 full matrix on the merge commit; no selection shortcut
Release tag 1.0.4 40198812318 Build and Release release matrix succeeded on the tag ref
schedule Functional chain health 41159991473 monitor refused to advance freshness on an incomplete chain attempt (failure is the expected answer while the chain is unhealthy)
workflow_dispatch manual full validation 41152382212 full suite set ran and the aggregate accepted the complete plan (85 min)
workflow_run Scheduled Validation Watchdog 41161431618 independent filter/monitor path executed against the registry
merge_group first queued candidate after queue enablement see below live evidence attached after the first queue entry completes
Documentation-only PR PR #9088, this document's own PR 41162871854 docs mode: Select CI scope recorded mode: docs; Test and Lint accepted in 8 s with every expensive job required skipped
Isolated E2E PR PR #9089, comment-only change under crates/e2e_test/src/ 41163203959 e2e mode: Connect boundary, serial ILM, rio-v2/protocol lanes and real io_uring required skipped; workspace build, E2E and both S3 lanes retained

Repeating a drill

Ordinary, docs and E2E classes: open a pull request containing only that class's paths and inspect Select CI scope → the planner's mode and reasons, then the aggregate's expected-vs-actual comparison. Close the PR without merging to leave no product change; the closure handler itself is the closed-event drill.

Merge-group class: queue a pull request through the enabled merge_queue rule (see verification plans and artifacts for the switch record and rollback payload). The merge_group run validates the combined candidate's own SHA/tree. Two individually passing changes whose combination fails stay blocked until their combined candidate passes; that negative case is fixed in scripts/test_ci_merge_queue.py.

Schedule and workflow_run classes cannot be forced on demand without an event; use the retained runs above and the registry's own python3 scripts/validation_registry.py check output. Tag class requires a real tag push; use the retained release runs or the preview-tag rehearsal described in CI gate matrix.

Boundaries

A completed drill is evidence that the event wiring behaves as planned for that candidate. It is not release certification, not a latency or cost result (use CI timing samples and resource accounting), and not a substitute for the required checks' own product coverage. Do not edit this file to claim a drill that has no run URL; attach the run first.