Skip to content

dep-check 0.8.0: a workspace sibling belongs in a per-package run - #23

Merged
usetheodev merged 1 commit into
mainfrom
workspace
Aug 27, 2026
Merged

dep-check 0.8.0: a workspace sibling belongs in a per-package run#23
usetheodev merged 1 commit into
mainfrom
workspace

Conversation

@usetheodev

Copy link
Copy Markdown
Contributor

Releases @theokit/dep-check@0.8.0. Fixes #22.

The global override was pinning workspace members

It writes one value for the whole tree. When the sibling lives in the workspace under test, that replaces the workspace link with a published version — a pairing that exists nowhere. In development the link is used; published, workspace:^ is rewritten to the current local version, never an old one.

usetheokit/theokit, PR #526:

pinned @theokit/http 0.4.0

packages/theo build: error TS2724: '"@theokit/http"' has no exported member named 'createDecoratorHandler'

0.4.0 is the floor of >=0.1.0-alpha.0, which @theokit/agents declares. The package that failed is packages/theo, which declares workspace:^ and claims nothing about 0.4.0. That is #4 exactly, in a new place — and it blocked a release PR while doing it.

Dropping them would have been the wrong fix

@theokit/agents genuinely declares that range and nothing verifies it. theokit-di#44 — the first real finding this gate ever produced — came from pinning a workspace sibling and running the suite.

So they move to the per-package runs (#16), where the floor is installed and only the packages that declare it are built.

Coverage is strictly larger

One override could only ever test one floor per sibling.

theokit-di before:

@theokit/di  0.2.0        # the intersection; di-agent's 0.1.1 never exercised

after:

@theokit/di@0.1.1  <- @theokit/di-agent
@theokit/di@0.2.0  <- @theokit/orm

theokit after — each claim tested where it is made:

@theokit/http@0.4.0  <- @theokit/agents
@theokit/sdk@4.49.0  <- @theokit/presenter
theokit@0.36.1       <- @theokit/tauri

Verification

Test Files  5 passed (5)
     Tests  80 passed (80)

Four new tests, including the case that must not regress: an empty member list pins everything rather than nothing, so a repository with no publishable members cannot turn the leg into a silent no-op.

… the global override

The floor leg writes one global override per sibling. When that sibling
lives in the workspace under test, the override replaces the workspace link
with a published version — a pairing that exists nowhere. In development the
link is used; published, `workspace:^` is rewritten to the CURRENT local
version, never an old one.

Measured on theokit#526: `@theokit/http` pinned at 0.4.0, the floor of the
`>=0.1.0-alpha.0` that `@theokit/agents` declares, and `packages/theo` —
which declares `workspace:^` and claims nothing about 0.4.0 — failed to
build against a version it has never been paired with. Defect #4 exactly,
in a new place, and it blocked a release PR while doing it.

Dropping those floors would have been the wrong fix. `@theokit/agents` does
declare that range and nothing verifies it, and theokit-di#44 was found by
pinning a workspace sibling and running the suite. So they move to the
per-package runs, where the floor is installed and only the packages that
declare it are built.

Coverage comes out strictly larger, because one override could only ever
test one floor per sibling. theokit-di went from a single pinned 0.2.0 to
two separate claims: 0.1.1 for di-agent and 0.2.0 for orm.

Refs #22
@usetheodev
usetheodev merged commit dde34c1 into main Aug 27, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The global floor override pins workspace members, holding packages to versions their own declarations exclude

2 participants