Commit 050c32e
fix(tooling): judge the clause-2 level rule at the grain the declaration is made (#16945)
`Check Changeset`'s level axis applied a PR-scoped declaration to every package
whose `packages/*/src/**` the diff moved, and asserted about each of them that
it had been widened. Measured on two PRs from one dispatch round:
* PR #16342 @ 273247e -- spec `patch` + runtime `patch`, six new
published STACK_* error codes. A correct fire.
* PR #16347 @ 23443ce -- the widening is in `@objectstack/lint`, graded
`minor` and never named by the gate; `@objectstack/spec` received one
re-worded TSDoc comment, was graded `patch`, and was refused with the
premise "a purely additive widening of a published package's public
surface" -- false of that package.
Clause 2 is declared once, for the PR: the carrier is a PR label and the
`Clause-2:` line is a PR-body line, and neither names a package. The predicate
is now the strongest thing that declaration entails, asked at its own grain: a
PR that declares clause-2 `yes` must grade AT LEAST ONE package whose
`packages/*/src/**` it moves at `minor` or above.
Nothing reads the content of a diff hunk -- no tolerance, no allowlist, no
comment-only skip. Only the quantifier moved.
Two new verdicts keep the readings from collapsing into a tick: `discharged`
(some moved packages are graded `patch`, one carries the level, and the gate
prints what it is deliberately not refusing plus the residual it cannot see)
beside `clean` (there was nothing of that shape at all). The `not-measured-*`
materiality split reads the same single `refusable` predicate, so the unread
lane cannot drift from the enforcing lane.
The refusal message no longer claims each listed package was widened. It states
what it can read, says out loud that it cannot tell which package received the
act, and asks the author to raise the one that actually grew.
Self-test: 179 -> 204 assertions; new battery "The GRAIN: a PR-scoped
declaration judged at PR scope" at 25 cases; roster floor 14 -> 15.
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
Co-authored-by: Claude <noreply@anthropic.com>1 parent d2b6fa0 commit 050c32e
1 file changed
Lines changed: 401 additions & 43 deletions
0 commit comments