Skip to content

[finding] The changeset LEVEL axis is blind to every NESTED package: packages/*/src/** matches one segment, so 51 of 74 workspace packages (all drivers/services/adapters) can pair Clause-②: yes with patch and stay green #16713

Description

@os-musk

Ungraded and unrouteddomain:*, 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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions