From 62c1945c002df9ab4c45017aadacce355baca545 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 30 Sep 2026 09:21:06 -0400 Subject: [PATCH 1/3] docs(ci): state the observed contract-only ci-status re-run behavior Refs #4670 Co-Authored-By: Claude Opus 5.5 --- docs/ci-runner-routing.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/ci-runner-routing.md b/docs/ci-runner-routing.md index 352d6a7f69..1ca91f1ccc 100644 --- a/docs/ci-runner-routing.md +++ b/docs/ci-runner-routing.md @@ -71,16 +71,19 @@ for an in-flight full run, then ends on a settled `success`, `failure`, or **Operator remedy.** When a contract-only `ci-status` is red: -- If `ci-lanes` on that SHA is already `success`, try re-running the red - contract-only `ci` run; if it stays red, push a new commit. +- If `ci-lanes` on that SHA is `success`, re-run the red contract-only `ci` + run. The composite logs `Carried forward: ci-lanes is success`, passes, and + the re-run replaces the red check run. Pushing a new commit is not needed. - If `ci-lanes` is `failure` or missing, re-run the full workflow. -A body edit while a failed full run is being re-run can still read the old -failure without waiting (#4670). Distinguishing that re-run from a -contract-only sibling is a ci-workflows composite change; this repository -pins the composite and documents the remedy until that pin moves. How a ruleset -treats two same-name `ci-status` check runs on one SHA is unverified and tracked -in #4670. +A body edit while a failed full run is being re-run reads the old `ci-lanes` +failure at once, without waiting, and goes red; the re-run's later `success` +does not change that run. The wait loop only holds while no settled `ci-lanes` +status exists. Fixing this is a ci-workflows composite change +([ci-workflows#646](https://github.com/melodic-software/ci-workflows/issues/646)); +this repository pins the composite and documents the remedy until that pin +moves. How a ruleset treats two same-name `ci-status` check runs on one SHA is +unverified and tracked in #4670. ## Toolchain integrity From 55dabf3799b26e41ada878c73bd744754008a259 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 30 Sep 2026 09:39:11 -0400 Subject: [PATCH 2/3] docs(ci): scope the contract-only re-run remedy to a passing contract A re-run turns green only when ci-lanes is success and the title and do-not-merge label pass. Add the invalid-title and label case. Co-Authored-By: Claude Opus 5.5 --- docs/ci-runner-routing.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/ci-runner-routing.md b/docs/ci-runner-routing.md index 1ca91f1ccc..c070fef82a 100644 --- a/docs/ci-runner-routing.md +++ b/docs/ci-runner-routing.md @@ -71,9 +71,12 @@ for an in-flight full run, then ends on a settled `success`, `failure`, or **Operator remedy.** When a contract-only `ci-status` is red: -- If `ci-lanes` on that SHA is `success`, re-run the red contract-only `ci` +- If `ci-lanes` on that SHA is `success` and the pull-request contract passes + (valid title, no `do-not-merge` label), re-run the red contract-only `ci` run. The composite logs `Carried forward: ci-lanes is success`, passes, and the re-run replaces the red check run. Pushing a new commit is not needed. +- If the title is invalid or `do-not-merge` is applied, the contract check + stays red on a re-run. Fix the title or remove the label, then re-run. - If `ci-lanes` is `failure` or missing, re-run the full workflow. A body edit while a failed full run is being re-run reads the old `ci-lanes` From 47e4e33feb8b387d87653c9045e6648529dbc8cd Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Wed, 30 Sep 2026 10:45:14 -0400 Subject: [PATCH 3/3] docs(ci): point the contract-failure remedy at the ci-lanes bullets Fixing the title or label does not turn the check green when ci-lanes is also failed or missing. Co-Authored-By: Claude Opus 5.5 --- docs/ci-runner-routing.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/ci-runner-routing.md b/docs/ci-runner-routing.md index c070fef82a..495e2800d5 100644 --- a/docs/ci-runner-routing.md +++ b/docs/ci-runner-routing.md @@ -76,7 +76,8 @@ for an in-flight full run, then ends on a settled `success`, `failure`, or run. The composite logs `Carried forward: ci-lanes is success`, passes, and the re-run replaces the red check run. Pushing a new commit is not needed. - If the title is invalid or `do-not-merge` is applied, the contract check - stays red on a re-run. Fix the title or remove the label, then re-run. + stays red on a re-run. Fix the title or remove the label first, then follow + the other bullets for `ci-lanes`. - If `ci-lanes` is `failure` or missing, re-run the full workflow. A body edit while a failed full run is being re-run reads the old `ci-lanes`