Uh oh!
There was an error while loading. Please reload this page.
docs(scripts): point five gate scripts at lint.yml's idiom note instead of restating the #9465 fence - #12164
Conversation
…ad of restating the #9465 fence Seven sites in `scripts/**` stated the @changesets/cli v3 lane's fence as covering root `package.json` as a FILE (or, in the ratchet, root dependencies as a CLASS). The lane's own body scopes it to one dependency range and one script key, so those readings are false — #10894 corrected the same reading at nineteen sites inside `.github/workflows/lint.yml` and put the reasons in one place, the `GATE INVOCATION IDIOM` note. This is the half of that repair that `lint.yml` could not reach. Each site now points at that note rather than restating the scope, because restating it is the propagation mechanism the card measured: three of these docblocks were identically worded because their authors copied a neighbour's header, and a seventh careful restatement would be a seventh copy source. No wiring changes. The three self-test wiring assertions keep their predicate byte-identical (`lint.includes('node <self>\n')`); only the message string moved, and all three self-tests report the same assertion counts before and after (39 / 77 / 45). `scripts/check-step-collectors.mjs` is deliberately untouched — it already states the scope narrowly and is the model. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6
Uh oh!
There was an error while loading. Please reload this page.
yinlianghui
commented
Aug 25, 2026
Dequeued — base-branch failure, not this PR's. Nothing pushed here.
This diff is comments and assertion-message strings in five ⛔ Already filed by other seats — #12180 ( Waits for Generated by Claude Code |
Fixes#11904
Seven sites in
scripts/**stated the@changesets/cliv3 lane's fence as covering rootpackage.jsonas a file — or, in the ratchet, root dependencies as a class. The lane's own body scopes it to one dependency range and one script key. #10894 corrected the same reading at nineteen sites inside.github/workflows/lint.ymland put the reasons in one place, theGATE INVOCATION IDIOMnote. This is the half of that repairlint.ymlcould not reach.Every edit points at that note rather than restating the scope. The card's own diagnosis is that this reading propagates by copying — three of these docblocks were identically worded because their authors copied a neighbour's header — so a seventh careful restatement would be a seventh copy source.
Premise re-verified before writing anything
root package.json (the @changesets/cli range and the version script)pm:epic, 4/5 sub-issues completescripts/**populationcheck-doc-frontmatter.mjsat filing) merged asda2353495The uncited sweep the card asked for. The measurement behind this card used a bare
9465grep, which finds the citation but not a site making the claim without one. Sweeping for the claim (root package.json,declared territory,off limits,root dependencies,fenced,@changesets/cliacrossscripts/**) turns up exactly one uncited site,scripts/pm/release-rehearsal-clone.mjs:87— and it is correct: it names theversionscript as declared territory, which is inside the fence's real scope. Uncited-and-wrong population: zero. The seven remain the whole set.Per-site before → after
check-ci-filter-parity.mjsdocblockpackage.json, declared territory of the @changesets/cli v3 migration lane (#9465) while it runs"GATE INVOCATION IDIOMnote; denies the off-limits reading without restating the scopecheck-doc-frontmatter.mjsdocblockcheck-platform-checklist.mjscommentpnpmalias lives in root package.json, declared territory of the @changesets/cli v3 lane (#9465) while that runs"check:platform-checklistis already a key in rootpackage.jsoncheck-skills-token-ratchet.mjscheck-aggregator-roster.mjs:583·check-ci-filter-parity.mjs:633·check-doc-frontmatter.mjs:1223assertion messagesscripts/check-step-collectors.mjsis deliberately untouched — it already states the scope narrowly and is the model this PR copied the shape of.What this PR does not do
No gate is rewired. The three self-test wiring predicates are byte-identical — each still an
includestest for the literal string "node " followed by the script's own repo path, read out oflint.yml— and only the second argument, the failure message, moved. The directnode scripts/…invocation stays; moving any of these to a root alias would redden all three, which is the trap this card carries..github/workflows/lint.ymlwas read, never edited.Verification, at the final commit
84f6eb5b0Gate union derived in-worktree with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(change set read from git by the script itself: the same five paths). All ten derived families, both legs where a script has two, pluscheck-nul-bytes, run at84f6eb5b0— 15/15 exit 0:check-platform-checklist.mjsis not CI-wired by maintainer decision; run by hand,exit 0before and after, its inline battery reporting the same 22 + 34 + 19 self-check assertions.check-step-collectors.mjs --self-testalso green before and after (120 assertions), as the untouched control.Lint, narrowed and declared. Repo-wide
pnpm lintis CI's run. Locally this was narrowed to the five edited files:eslint --no-inline-config --format jsonreported 5 files linted (eslint's own config resolved all five — none reported ignored), 0 errors, 0 warnings, exit 0. The narrowing excludes nothing: this repo runs oneeslint.config.mjswhich never enables type-aware linting (noparserOptions.project, no typed@typescript-eslintrules for any file — stated and measured with a positive control ateslint.config.mjs:327), so a comment-and-message-only diff in fivescripts/*.mjsfiles cannot move a verdict on any file it does not touch.Changeset
None, and
skip-changesetapplied: the diff is comments and assertion-message strings underscripts/, with no published package source change and nothing user-visible to release.Refs: #9465 (the fence — still open) · #10894 (the
lint.ymlhalf, already closed; not addressed here) · #10814 (where the correct narrow wording came from)Generated by Claude Code