⛔ Ungraded and unrouted — domain:*, priority and type are triage's. Filed unassigned by the os-dev seat working #16609 (session session_01ADLdAs2pVcH17h9tZKWMBg), found while deriving that card's own changeset grade from the repo.
Sibling of #16692, but a different axis of the same regex — see "Why this is not #16692" below.
The reading
scripts/check-changeset-no-major.mjs:822:
const PUBLISHED_SOURCE_PATH = /^packages\/([^/]+)\/src\//;
[^/]+ is exactly one path segment. This repo's workspace is not flat: most packages live at packages/GROUP/NAME/, so their source is packages/GROUP/NAME/src/** — the first segment after packages/ is the GROUP, and /src/ does not follow it.
⇒ For every nested package the LEVEL axis records no package at all, so the clause-②-versus-patch cross-check has nothing to judge and prints its green.
Measured on origin/main a0856e3bf9
The gate's own exported predicate, run against the #16609 branch whose diff moves packages/drivers/driver-sql/src/sql-driver.ts:
packagesTouched for MY diff:
packages: [] unreadable: []
⚠️ Note unreadable is empty too. #4690's distinction — "a name it could not read must not look like a package the diff did not touch" — is preserved for an unreadable manifest but not for this case: a nested package is not an unreadable reading, it is simply never a candidate. The gate cannot report a limb it never grew.
Segment behaviour, same run:
MATCH dir=cli packages/cli/src/index.ts
NO MATCH packages/drivers/driver-sql/src/sql-driver.ts
MATCH dir=spec packages/spec/src/x.ts
NO MATCH packages/services/service-job/src/a.ts
Population — the thing #16692 explicitly left unmeasured
Counted over packages/**/package.json (depth ≤ 4, excluding node_modules) on a0856e3bf9:
| shape |
count |
LEVEL axis |
packages/NAME/ (flat) |
23 |
can see |
packages/GROUP/NAME/ (nested) |
51 |
blind |
69% of the workspace, including every driver-*, service-*, adapter, connector-* and app package. @objectstack/driver-sql is among them.
Two-leg control — the difference IS the finding
✓ LEVEL AXIS: this PR declares clause-② `yes`, and no package whose `packages/*/src/**` it moves is graded `patch`.
· carrier: `needs:contract-review` IS on this PR
· declaration line: `Clause-②: yes`
⛔ That green is "the axis did not look" rendered identically to "the axis looked and approved" — the exact mis-reading #16692 records a seat making, reproduced here through a different mechanism.
Why this is not #16692
#16692 is about which ROOT inside a package the axis reads: bin/** ships but is not src/**. It is scoped to depth-1 packages and states as not-claimed: "⛔ Not measured: whether any package other than @objectstack/cli ships a root outside src/** that the axis would likewise miss."
This card is about how DEEP the package directory is. The affected paths are src/** — the very root #16692 treats as the working case — and they are still invisible. The two are independent: #16692's option B ("add bin/** specifically") would not move this case at all, and #16692's own positive control (packages/cli/**) passes while this one fails.
⇒ Recorded here because it changes #16692's option analysis: any fix that enumerates ROOTS without also fixing the DEPTH leaves 69% of the workspace uncovered.
Options, ⛔ none ruled here
What is NOT claimed
- ⛔ Not that any specific merged PR is mis-graded — this is about the rule's reach, not its execution.
- ⛔ Not that the clause-② carrier chain is broken: it reads the claim, not the paths, and is unaffected.
- ⛔ Not measured: whether
judgeLevel's other consumers share the regex.
Re-check
node --input-type=module -e '
import { packagesTouched } from "./scripts/check-changeset-no-major.mjs";
console.log(packagesTouched({ cwd: process.cwd(), from: "origin/main", head: "HEAD" }));'
# on a branch touching packages/drivers/*/src/** -> { packages: [], unreadable: [] }
Related
#16692 (the ROOT axis of the same regex) · #16609 (the card this was found under; its own grade was decided from precedent rather than from this axis, because this axis cannot judge it)
⛔ Ungraded and unrouted —
domain:*, priority and type are triage's. Filed unassigned by theos-devseat working #16609 (sessionsession_01ADLdAs2pVcH17h9tZKWMBg), found while deriving that card's own changeset grade from the repo.Sibling of #16692, but a different axis of the same regex — see "Why this is not #16692" below.
The reading
scripts/check-changeset-no-major.mjs:822:[^/]+is exactly one path segment. This repo's workspace is not flat: most packages live atpackages/GROUP/NAME/, so their source ispackages/GROUP/NAME/src/**— the first segment afterpackages/is the GROUP, and/src/does not follow it.⇒ For every nested package the LEVEL axis records no package at all, so the clause-②-versus-
patchcross-check has nothing to judge and prints its green.Measured on
origin/maina0856e3bf9The gate's own exported predicate, run against the #16609 branch whose diff moves
packages/drivers/driver-sql/src/sql-driver.ts:unreadableis empty too. #4690's distinction — "a name it could not read must not look like a package the diff did not touch" — is preserved for an unreadable manifest but not for this case: a nested package is not an unreadable reading, it is simply never a candidate. The gate cannot report a limb it never grew.Segment behaviour, same run:
Population — the thing #16692 explicitly left unmeasured
Counted over
packages/**/package.json(depth ≤ 4, excludingnode_modules) ona0856e3bf9:packages/NAME/(flat)packages/GROUP/NAME/(nested)69% of the workspace, including every
driver-*,service-*,adapter,connector-*and app package.@objectstack/driver-sqlis among them.Two-leg control — the difference IS the finding
--self-testasserts "end to end: a real diff that movespackages/cli/src/**and grades itpatchunder ayesdeclaration is REFUSED" (check-changeset-no-major.mjs:2028).node scripts/check-changeset-no-major.mjs --self-test→ exit 0, so that assertion holds.--eventpath on the driver-sql:findWithWindowFunctionsreturns storage forms — a declared boolean answers1and an object field answers JSON text wherefind()answerstrueand the parsed object #16609 branch, with a payload carryingneeds:contract-reviewand theClause-②: yesline, and the changeset gradedpatch:⛔ That green is "the axis did not look" rendered identically to "the axis looked and approved" — the exact mis-reading #16692 records a seat making, reproduced here through a different mechanism.
Why this is not #16692
#16692 is about which ROOT inside a package the axis reads:
bin/**ships but is notsrc/**. It is scoped to depth-1 packages and states as not-claimed: "⛔ Not measured: whether any package other than@objectstack/cliships a root outsidesrc/**that the axis would likewise miss."This card is about how DEEP the package directory is. The affected paths are
src/**— the very root #16692 treats as the working case — and they are still invisible. The two are independent: #16692's option B ("addbin/**specifically") would not move this case at all, and #16692's own positive control (packages/cli/**) passes while this one fails.⇒ Recorded here because it changes #16692's option analysis: any fix that enumerates ROOTS without also fixing the DEPTH leaves 69% of the workspace uncovered.
Options, ⛔ none ruled here
pnpm-workspace.yamlglobs already enumerate both shapes) instead of a hand-written path regex.judgeLevelcounts a package as "grown" only throughpackages/*/src/**, so a shippedbin/target is a published surface the changeset level axis cannot see #16692's option C records, at 51 packages instead of one.What is NOT claimed
judgeLevel's other consumers share the regex.Re-check
Related
#16692 (the ROOT axis of the same regex) · #16609 (the card this was found under; its own grade was decided from precedent rather than from this axis, because this axis cannot judge it)