Skip to content

Commit a775c1f

Browse files
committed
ci(lint): run the release-index rewriter's self-test at PR time (#15332)
Third version-time rewriter, third self-test step, beside the two already in this job (check:docs-image-tag-sync, check:template-version-sync). Two gates require a PR-time caller, and both name this family: check-self-test-wired ("a script CI runs that ships a --self-test must have that self-test run by CI"), and dispatch-gates' "a deferred pair defers the LEAD, not the load break" — a family no every-PR workflow runs leaves its import edges unwatched at PR time, so a change breaking the module load of check-release-section-coverage.mjs would not redden the PR that made it. With release.yml as the only caller that self-test was 2-of-1382 RED naming check:release-index-currency-sync. ⚠️ Not the --strict promotion, and it cannot become one: this step runs only --self-test, whose cases are string fixtures. It never reads the live index for currency and never reads a release page, so no corpus state can red it. The advisory, non-strict `Release section-coverage guard` step is untouched — this diff is 44 insertions and 0 deletions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
1 parent f25f725 commit a775c1f

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

.github/workflows/lint.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,6 +1958,50 @@ jobs:
19581958
- name: Template version-time rewriter self-test
19591959
run: pnpm check:template-version-sync
19601960

1961+
# #15332 — the THIRD version-time rewriter, and the third self-test beside
1962+
# the two above. scripts/sync-release-index-currency.mjs joins the root
1963+
# `version` chain and stamps the release index's "current series: X.Y.Z,
1964+
# released YYYY-MM-DD" status field from packages/spec/CHANGELOG.md, so the
1965+
# sentence cannot go stale the way it did on three consecutive minors
1966+
# (#10232, #11649, #15332). The gate that names the staleness,
1967+
# check-release-section-coverage, structurally could not fire on the change
1968+
# that causes it: the version commit is opened by changesets/action with the
1969+
# default GITHUB_TOKEN and gets NO CI, and the step further down in this file
1970+
# runs that gate WITHOUT --strict, where a finding is advisory and the job is
1971+
# green by design.
1972+
#
1973+
# ⚠️ This step is NOT that gate's --strict arm, and must never become it.
1974+
# Promoting --strict here would also red a release page that has no section
1975+
# for a just-published train, i.e. every PR between a version commit and its
1976+
# release-notes PR — a policy question, deliberately not decided by adding a
1977+
# rewriter. What runs here is ONLY --self-test, whose cases are string
1978+
# fixtures: it never reads the live index for currency and never reads a
1979+
# release page at all, so no corpus state can red it. The advisory,
1980+
# non-strict `Release section-coverage guard` step below is untouched.
1981+
#
1982+
# Why it must run at PR time and not only in release.yml's post-version lane,
1983+
# where the rewriter's own corpus is — two gates in this repo say so, and both
1984+
# name a PR-TIME caller:
1985+
# * check-self-test-wired — a script CI runs that ships a --self-test must
1986+
# have that self-test run by CI.
1987+
# * scripts/pm/dispatch-gates.mjs --self-test — "a deferred pair defers the
1988+
# LEAD, not the load break": a family no every-PR workflow runs leaves its
1989+
# import edges unwatched at PR time, so a change breaking the MODULE LOAD
1990+
# of check-release-section-coverage.mjs (which this rewriter imports its
1991+
# surface, scope and verdict from) would not redden the PR that made it.
1992+
# Measured: with release.yml as the only caller, that self-test is
1993+
# 2-of-1382 RED naming this family; with this step, 1382/1382.
1994+
#
1995+
# Only the --self-test runs here, for the same reason the two steps above
1996+
# give: on a corpus that is already current the rewriter has nothing to do, so
1997+
# CI can never observe it working. The self-test is where a STALE entry is
1998+
# observed being stamped through the gate's own verdict, and — the control
1999+
# that matters just as much — where a CURRENT index is observed left
2000+
# byte-identical and UNWRITTEN, because this rewriter writes into curated,
2001+
# reader-facing prose.
2002+
- name: Release-index currency version-time rewriter self-test
2003+
run: pnpm check:release-index-currency-sync
2004+
19612005
# #4851: the docs-accuracy-audit workflow's default scope is a generated list
19622006
# (a workflow script runs in a vm with no filesystem, so it cannot enumerate
19632007
# content/docs/ itself — the caller hands the list in). Hand-kept, that list

0 commit comments

Comments
 (0)