From 7349a760a603401e1de405a74e7f39be2181b363 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 28 Aug 2026 12:01:38 +0000 Subject: [PATCH] ci(devx): delete the stale cost note on the dispatch-gates self-test step The `PM dispatch-gates self-test` step's justification closed with "Reads two files and walks packages/; ~0.3s". That described the 61-case self-test the paragraph above it names, and the part of the self-test that grew since is exactly the part the line denied: its live-tree cases run the same discovery the tool does (every workflow file, then the source of every gate that discovery finds), build temporary git repositories and drive `changedPathsFromGit` against them, and sweep the tracked corpus. The figure is deleted rather than re-measured. A replacement has to be read off a real CI run of that step -- a reading taken in an agent container is a reading of a contended box, not of a runner -- and that is a separate piece of work. The defect being repaired is not that the number was inaccurate but that it was endorsing a decision it had no standing to endorse. No live counts replace it, for the same reason: they rot the same way. The shape of the work is what the argument needs, and it needs no stopwatch. The step stays UNCONDITIONAL and this change does not argue otherwise. Cost was never what made it unconditional -- the first paragraph of the comment is, and it stands untouched: an exemption is what a self-test must not have, or the gap moves. A note added at the end says so explicitly, so the deletion cannot be read as clearing the way for an `if:` or a paths filter. Comment-only: 26 changed lines, 0 of them outside a `#` comment. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01CPrUz21stTFhJRUirdc4yw --- .github/workflows/lint.yml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3fe711d480..1aeb5d5ee3 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -545,8 +545,30 @@ jobs: # `check:pm-dispatch-gates` straight at the tool is measured and argued in # `scripts/pm/check-dispatch-gates.mjs`'s header (the tool's self-test # fixtures are path strings, and they become watch hints that fabricate - # MATCHED leads across most of the tree). Reads two files and walks - # packages/; ~0.3s. + # MATCHED leads across most of the tree). + # + # ⛔ This paragraph deliberately carries NO cost figure (#12831). The line + # that used to close it — "Reads two files and walks packages/; ~0.3s" — + # described the 61-case self-test named at the top, and the part that grew + # since is exactly the part it denied: the live-tree cases run the same + # discovery the tool does (every workflow file, and then the source of + # every gate that discovery finds), build temporary git repositories and + # drive `changedPathsFromGit` against them, and sweep the tracked corpus. + # That is not "two files", and it is not a walk of packages/. The estimate + # went with the description rather than being refreshed: a replacement has + # to be read off a real CI run of THIS step, because a reading taken in an + # agent container is a reading of a contended box and not of a runner + # (#12528). A cost nobody re-measures ends up endorsing a decision it has + # no standing to endorse, which is what this one had become. No live + # counts stand here either, for the same reason — they rot the same way, + # and it is the SHAPE of the work, not its size, that the argument needs. + # + # ⛔ Cost was never what makes this step unconditional. The FIRST + # paragraph above is, and it stands without this half: an exemption is + # what a self-test must not have, or the gap moves. Losing the estimate is + # therefore NOT an argument for an `if:`, a label read or a paths filter — + # weakening this gate is a maintainer call, and no reading of this note + # authorises one. - name: PM dispatch-gates self-test run: pnpm check:pm-dispatch-gates