Filed by the dev seat on #16361 (session session_012GKcPZbMoGq7WPzKLfRBTU, PR #16945) as an out-of-scope finding. ⛔ No severity asserted, no domain routing — that is triage's. ⛔ Nothing was routed around: #16945 leaves this sentence exactly as it found it.
The sentence
.github/workflows/pr-automation.yml, the Check Changeset step, closing the "WHICH LEVEL" prose block (measured at 9a89a0040d, around line 725):
... The 64 historical `patch` precedents are
pre-rule and nothing is retro-fixed. This is prose, not a gate -- no
check computes it; `check-changeset-no-major.mjs` refuses `major` and
says why in its header, and the two remaining levels are yours.
Why it is false, and what following it costs
Both clauses were true when written. #16055 landed the LEVEL axis in scripts/check-changeset-no-major.mjs, and since then:
⇒ An author who reads this block, takes the last sentence at its word, and grades patch on a clause-②-declared PR is refused by a gate the prose told them does not exist. That is the ordinary shape of a stale docblock: the instruction is followed and the outcome fails.
⭐ It is on the path a refusal creates, which is why it is worth a card rather than a shrug. The refusal message names this exact prose as the rule's home — written out in full under "WHICH LEVEL" in the Check Changeset step of .github/workflows/pr-automation.yml — so the reader most likely to arrive at this sentence is the one who has just been refused by the check it denies. #16361's whole subject is what a false premise in a refusal message costs; this is the same failure one hop along the pointer, and it survives #16361's fix untouched.
What it is NOT
⛔ Not a request to weaken or restate the ruling — the ruling is right and #16361 did not contest it either. The correction is one clause: say that the axis computes the rule for PRs that declare clause ②, and that the two levels remain the author's everywhere else. The scope of what the gate does and does not judge is stated precisely in check-changeset-no-major.mjs's own header and in judgeLevel's verdict table.
⚠️ Not measured by this seat: whether any other prose in that step, or in AGENTS.md, carries the same pre-#16055 claim. Only the sentence above was read.
Adjacent, not duplicated
Filed by the dev seat on #16361 (session
session_012GKcPZbMoGq7WPzKLfRBTU, PR #16945) as an out-of-scope finding. ⛔ No severity asserted, no domain routing — that is triage's. ⛔ Nothing was routed around: #16945 leaves this sentence exactly as it found it.The sentence
.github/workflows/pr-automation.yml, theCheck Changesetstep, closing the "WHICH LEVEL" prose block (measured at9a89a0040d, around line 725):Why it is false, and what following it costs
Both clauses were true when written. #16055 landed the LEVEL axis in
scripts/check-changeset-no-major.mjs, and since then:judgeLevelmechanizes the maintainer ruling of 2026-09-04 (decision batch [WIP] Add query enhancements and advanced validation features #35, on finding(changeset): two independent contract reviews read the repo's own history to opposite bumps for "add an exported symbol to a published index" #15294) for every PR that declares clause ②yes.patchon the wrong package is refused with exit 1.⇒ An author who reads this block, takes the last sentence at its word, and grades
patchon a clause-②-declared PR is refused by a gate the prose told them does not exist. That is the ordinary shape of a stale docblock: the instruction is followed and the outcome fails.⭐ It is on the path a refusal creates, which is why it is worth a card rather than a shrug. The refusal message names this exact prose as the rule's home —
written out in full under "WHICH LEVEL" in the Check Changeset step of .github/workflows/pr-automation.yml— so the reader most likely to arrive at this sentence is the one who has just been refused by the check it denies. #16361's whole subject is what a false premise in a refusal message costs; this is the same failure one hop along the pointer, and it survives #16361's fix untouched.What it is NOT
⛔ Not a request to weaken or restate the ruling — the ruling is right and #16361 did not contest it either. The correction is one clause: say that the axis computes the rule for PRs that declare clause ②, and that the two levels remain the author's everywhere else. The scope of what the gate does and does not judge is stated precisely in
check-changeset-no-major.mjs's own header and injudgeLevel's verdict table.AGENTS.md, carries the same pre-#16055 claim. Only the sentence above was read.Adjacent, not duplicated
Check Changeset's clause-② level rule is PR-scoped but the fact it judges is package-scoped — a PR that widens package A is refused for grading package Bpatch, where B only received a comment #16361 (this seat's card) — the grain the level rule is applied at. Landed as PR fix(tooling): judge the clause-② level rule at the grain the declaration is made #16945; ⛔ does not touch this workflow prose.packages/*/src/**matches one segment, so 51 of 74 workspace packages (all drivers/services/adapters) can pairClause-②: yeswithpatchand stay green #16713 — the same axis is blind to nested packages (packages/*/src/**matches one path segment). A different defect in the same predicate; ⛔ neither subsumes this one.