You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] ci-cd-pipeline.md carries a fourth hand-copied copy of the two self-test case counts (100 / 32), with no derivation and nothing that re-checks it #6100
Found while implementing #6089 (drop the case counts from hook-selftests.yml's step names). Out of scope there — that card and its dispatch ruling are scoped to .github/workflows/hook-selftests.yml, and this is a different file with a different gate family — so recorded here instead of folded in.
The observation
#6089 enumerated three copies of the self-test case counts, all inside .github/workflows/hook-selftests.yml (the cost note plus the two step names). There is a fourth, in the docs:
content/docs/guide/ci-cd-pipeline.md:1135:Runs `.claude/hooks/guard-main-checkout-bash.selftest.sh` (100 cases) and
content/docs/guide/ci-cd-pipeline.md:1136:`.claude/hooks/guard-shared-stash.selftest.sh` (32 cases) — the hermetic self-test matrices for
Same shape as the one #6089 ruled on: a hand-copied number, no derivation recipe, and nothing that re-checks it. scripts/__tests__/ci-cd-pipeline-doc.test.ts pins this page hard — the workflow inventory, the ci.yml job table, the name: each job reports under, and (what each job runs) the commands each ci.yml job runs — but every one of those pins is scoped to ci.yml or to workflow filenames. Nothing reads a case count, so these two numbers are unpinned.
Both numbers are stale or about to be
Same timing as #6089, and this file is not touched by either PR:
#6089's fix (PR linked below) removed the workflow's copies, so after it lands this page is the only remaining hand-copied copy — and the one a contributor reads to learn what the gate does.
Why this is worth a card rather than a shrug
The page itself already carries the opposite principle, enforced: ci-cd-pipeline-doc.test.ts has a test named "states no job count, so the number cannot drift away from the table", whose comment reads
a hand-maintained count drifts by construction and a stale one still reads as authoritative. "Seven jobs, all parallel" outlived the seventh job by three months.
That decision (#3451, #3212) was made for the ci.yml job count on the same page. These two case counts are the same construction one section down.
Keep the counts and add a pin to ci-cd-pipeline-doc.test.ts deriving them from the self-test matrices (grep -c '^expect ' + inline specials). Turns the drift red instead of removing it, at the cost of a new pin over governed-surface content (.claude/**) from a docs test.
Leave it — accept prose drift on a docs page.
Option 1 mirrors the ruling already made on #6089 one file over; option 2 is the only one that would make the numbers self-correcting. Whichever is chosen, it is a maintainer/PM call, not a dev-agent one — hence unassigned.
⛔ Not fixed in PR for #6089: that PR is scoped to the workflow file, and widening it would put a docs page (a hot merge-conflict file) into a CI-only diff.
Found while implementing #6089 (drop the case counts from
hook-selftests.yml's step names). Out of scope there — that card and its dispatch ruling are scoped to.github/workflows/hook-selftests.yml, and this is a different file with a different gate family — so recorded here instead of folded in.The observation
#6089 enumerated three copies of the self-test case counts, all inside
.github/workflows/hook-selftests.yml(the cost note plus the two step names). There is a fourth, in the docs:Same shape as the one #6089 ruled on: a hand-copied number, no derivation recipe, and nothing that re-checks it.
scripts/__tests__/ci-cd-pipeline-doc.test.tspins this page hard — the workflow inventory, theci.ymljob table, thename:each job reports under, and (what each job runs) the commands eachci.ymljob runs — but every one of those pins is scoped toci.ymlor to workflow filenames. Nothing reads a case count, so these two numbers are unpinned.Both numbers are stale or about to be
Same timing as #6089, and this file is not touched by either PR:
guard-shared-stash.selftest.shfrom 32 to 41 cases.guard-main-checkout-bash.selftest.shfrom 100 to 121 cases.#6089's fix (PR linked below) removed the workflow's copies, so after it lands this page is the only remaining hand-copied copy — and the one a contributor reads to learn what the gate does.
Why this is worth a card rather than a shrug
The page itself already carries the opposite principle, enforced:
ci-cd-pipeline-doc.test.tshas a test named "states no job count, so the number cannot drift away from the table", whose comment readsThat decision (#3451, #3212) was made for the
ci.ymljob count on the same page. These two case counts are the same construction one section down.Options, not a recommendation to implement blind
guard-main-checkout-bash.selftest.shandguard-shared-stash.selftest.sh". Consistent with [finding] hook-selftests.yml hard-codes both self-test case counts in its step names, with no derivation recipe and nothing that re-checks them #6089's ruling and with the page's own no-job-count pin; the numbers are available from each run's tail (N passed, N failed) and fromguard-shared-stash.sh's header, which carries its count with the recipe to re-derive it.ci-cd-pipeline-doc.test.tsderiving them from the self-test matrices (grep -c '^expect '+ inline specials). Turns the drift red instead of removing it, at the cost of a new pin over governed-surface content (.claude/**) from a docs test.Option 1 mirrors the ruling already made on #6089 one file over; option 2 is the only one that would make the numbers self-correcting. Whichever is chosen, it is a maintainer/PM call, not a dev-agent one — hence unassigned.
⛔ Not fixed in PR for #6089: that PR is scoped to the workflow file, and widening it would put a docs page (a hot merge-conflict file) into a CI-only diff.
Refs: #6089 · #5754 / PR #6022 · #3721 · #3451 · #3212 · #6042 / PR #6087 · #5789 / PR #6046.