Commit e9bba50
ci(lint): report how many gates never ran when Lint & Repo Gates aborts (#17678)
* ci(lint): report how many gates never ran when the job aborts
`Lint & Repo Gates` runs ~161 gates as separate Actions steps and stops at
the first non-zero exit. That abort is deliberate and adjudicated (#13690);
what was missing is the number it leaves behind. One red is a LOWER BOUND on
the problems in the tree, and a gate that never executed produces the same
"no output" a passing gate does.
Measured on run 34468505490 before writing this: the jobs API and the web UI
do mark the un-run steps `skipped` (112 of them), but never count them, and
use that same word for a step its own `if:` turned off. The check-run
`output` was null on every field and the job log said nothing at all.
Adds `scripts/report-unmeasured-gate-tail.mjs` plus one `if: failure()` step
that prints the count to the job log, the job summary and one `notice`
annotation. Fail-fast is untouched, no gate moved, no `continue-on-error`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* ci(lint): count the gate tail by position, not by a mid-run conclusion
Caught by the live double-failure probe (run 34583803573), not by reasoning:
the reporter runs while the job is still in progress, and the runner stamps
`skipped` on the steps behind the failure progressively. The completed job
ended with 161 skipped declared steps; at the instant the reporter read the
API only 12 carried that word, so it printed `never_ran=12` — a lower bound
on a lower bound, wearing the look of a precise number.
Behind the failure the tail is now counted by POSITION, and `conclusion` is
used only to subtract the steps that demonstrably did run. A mid-run fixture
pins it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* ci(lint): stop the tail reporter from listing itself, and gate the wiring
Run 34584689309 ended its own report with `- Report how many gates never
ran`, while that step was the one printing it: the jobs API had not yet
marked the step `in_progress`, so the in-flight rule did not catch it.
The workflow now hands the step its own name through OS_TAIL_REPORT_STEP and
the reporter subtracts it. The two lines agreeing is not left to a comment —
`wiringVerdict()` reads lint.yml as text and the self-test fails on a stale
value, a missing one, or a rename.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* ci(lint): keep a green run byte-identical — the self-test is failure-only too
Acceptance clause 2 of the card is that an all-green head's output does not
change at all. An unconditional self-test step would have printed one line on
every green run, and one line is still new noise. Both new steps now carry
`if: failure()`, so a green run of this job produces exactly the bytes it did
before: no log output, no summary, no annotation.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 1a25f4a commit e9bba50
2 files changed
Lines changed: 813 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
177 | 177 | | |
178 | 178 | | |
179 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
180 | 187 | | |
181 | 188 | | |
182 | 189 | | |
| |||
4468 | 4475 | | |
4469 | 4476 | | |
4470 | 4477 | | |
4471 | | - | |
4472 | | - | |
4473 | | - | |
4474 | | - | |
| 4478 | + | |
| 4479 | + | |
| 4480 | + | |
| 4481 | + | |
| 4482 | + | |
| 4483 | + | |
| 4484 | + | |
4475 | 4485 | | |
4476 | 4486 | | |
4477 | 4487 | | |
4478 | 4488 | | |
| 4489 | + | |
| 4490 | + | |
| 4491 | + | |
| 4492 | + | |
| 4493 | + | |
| 4494 | + | |
| 4495 | + | |
| 4496 | + | |
| 4497 | + | |
| 4498 | + | |
| 4499 | + | |
| 4500 | + | |
| 4501 | + | |
| 4502 | + | |
| 4503 | + | |
| 4504 | + | |
| 4505 | + | |
| 4506 | + | |
| 4507 | + | |
| 4508 | + | |
| 4509 | + | |
| 4510 | + | |
| 4511 | + | |
| 4512 | + | |
| 4513 | + | |
| 4514 | + | |
| 4515 | + | |
| 4516 | + | |
| 4517 | + | |
| 4518 | + | |
| 4519 | + | |
| 4520 | + | |
| 4521 | + | |
| 4522 | + | |
| 4523 | + | |
| 4524 | + | |
| 4525 | + | |
| 4526 | + | |
| 4527 | + | |
| 4528 | + | |
| 4529 | + | |
| 4530 | + | |
| 4531 | + | |
| 4532 | + | |
| 4533 | + | |
| 4534 | + | |
| 4535 | + | |
| 4536 | + | |
| 4537 | + | |
| 4538 | + | |
| 4539 | + | |
| 4540 | + | |
| 4541 | + | |
| 4542 | + | |
| 4543 | + | |
| 4544 | + | |
| 4545 | + | |
| 4546 | + | |
4479 | 4547 | | |
4480 | 4548 | | |
4481 | 4549 | | |
| |||
0 commit comments