Skip to content

Commit 05e3b98

Browse files
committed
docs(ci): rest the direct-node invocation on precedent, not on an over-broad #9465 fence
The `Step-collector gate` step comment and the script docblock both claimed root `package.json` is "declared territory of the @changesets/cli v3 migration lane (#9465)". That reading is over-broad. The fence's own text scopes it to that file's `@changesets/cli` range and its `version` script -- the parenthetical in the issue body is scoping, not illustrative -- so the file itself is not fenced and a `check:step-collectors` key would have been allowed. The decision is unchanged and still correct: lint.yml already invokes several gates as `node scripts/...` directly, and dispatch-gates.mjs derives gate families from either spelling, so the direct form loses no discovery and adds no key to the root manifest. Only the stated REASON was wrong. Worth more than a silent reword, because it is this PR's own defect class one level up: a comment asserting a constraint nobody verified reads exactly like a verified one, and propagates to the next agent who reads it -- the same way a stale knownGap turns into a stale permission. So the accurate scope is now stated positively next to the decision rather than merely deleted. Only the two comments I authored are touched; the seven pre-existing instances of the same phrasing elsewhere in lint.yml are left alone as out of scope. Part of #10814 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
1 parent a2a9741 commit 05e3b98

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

‎.github/workflows/lint.yml‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -653,11 +653,20 @@ jobs:
653653
# commands executing when the first fails, 3 of 3 when none does. A harness
654654
# that cannot reproduce the defect cannot certify the fix.
655655
#
656-
# Invoked as `node` rather than through a `pnpm check:*` alias: that alias
657-
# belongs in root package.json, declared territory of the @changesets/cli
658-
# v3 migration lane (#9465) while it runs — same shape as the other
659-
# `node scripts/…` steps in this lane. dispatch-gates.mjs derives gate
660-
# families from either spelling. Temp-dir fixtures, no network, ~1 s.
656+
# Invoked as `node scripts/…` rather than through a `pnpm check:*` alias,
657+
# on the precedent this job already sets: several gate steps here are
658+
# invoked directly, and dispatch-gates.mjs derives gate families from
659+
# either spelling, so the direct form loses no discovery and adds no key
660+
# to the root manifest.
661+
#
662+
# ⚠️ NOT because root package.json is off limits. The #9465 changeset lane
663+
# fences that file's `@changesets/cli` range and its `version` script — the
664+
# parenthetical in the issue body is scoping, not illustrative — and not
665+
# the file, so a `check:step-collectors` key would have been allowed. Said
666+
# plainly because the over-broad reading is easy to acquire and then
667+
# propagates as a constraint nobody actually has, which is this step's own
668+
# defect class wearing a different hat: a claim that reads as verified.
669+
# Temp-dir fixtures, no network, ~1 s.
661670
- name: Step-collector gate (self-tests that mask each other)
662671
run: |
663672
node scripts/check-step-collectors.mjs --self-test

‎scripts/check-step-collectors.mjs‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,16 @@
8585
* when none does. A harness that cannot reproduce the defect cannot certify the
8686
* fix.
8787
*
88-
* Invoked as `node` rather than through a `pnpm check:*` alias: that alias
89-
* belongs in root package.json, which is declared territory of the
90-
* @changesets/cli v3 migration lane (#9465) while it runs -- the same shape as
91-
* the other `node scripts/...` steps in that lane. dispatch-gates.mjs derives
92-
* gate families from either spelling.
88+
* Invoked as `node scripts/...` rather than through a `pnpm check:*` alias, on
89+
* the precedent lint.yml already sets: several gate steps in that job are
90+
* invoked directly, and dispatch-gates.mjs derives gate families from either
91+
* spelling, so the direct form loses no discovery and adds no key to the root
92+
* manifest.
93+
*
94+
* NOT because root package.json is off limits: the #9465 changeset lane fences
95+
* that file's `@changesets/cli` range and its `version` script, not the file,
96+
* so a `check:step-collectors` key would have been allowed. Recorded because
97+
* the over-broad reading of that fence propagates as a constraint nobody has.
9398
*/
9499

95100
import { existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';

0 commit comments

Comments
 (0)