Skip to content

dep-check 0.9.0: a range ahead of the registry is not a range behind it - #25

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

dep-check 0.9.0: a range ahead of the registry is not a range behind it#25
usetheodev merged 1 commit into
mainfrom
workspace

Conversation

@usetheodev

Copy link
Copy Markdown
Contributor

Releases @theokit/dep-check@0.9.0. Fixes #24.

A range ahead of the registry was labelled as behind it

Both miss latest; they are opposite problems.

meaning
behind the range stopped at an older major and the world moved on
ahead the range's floor is above everything published — no published version satisfies it, so the package installs nowhere

The second was reported as:

[contract] @theokit/sat  @theokit/sdk  >=99.0.0  latest 4.59.0 (0 majors behind)

0 majors behind, for a package no consumer can install.

Why it matters now

It is the expected state mid-way through a two-release change — a satellite declaring the floor it will need before the sibling that provides it publishes. usetheokit/theokit-sdk is about to be in exactly that state: @theokit/sdk-memory needs a shared sub-path shipping in a later @theokit/sdk, so the floor cannot be declared and satisfied in one release.

Legitimate and temporary — and, in the old output, indistinguishable from a range that has been wrong for a year. That difference is the entire question a reader has.

After

[unpublished] @theokit/sat  @theokit/sdk  >=99.0.0  latest 4.59.0 (nothing published satisfies this yet)

unpublished sorts above contract, and the legend says when the state is expected rather than only what it is. An ahead finding carries no majors-behind count — the number was the misleading part.

Verified in both directions: zero findings against theokit-sdk, one correctly labelled against a fixture declaring >=99.0.0.

Unchanged

Check C still never blocks. Two-release ordering is a property of publishing interdependent packages, not something a gate should refuse.

84 tests, four new — including the one that names the defect: an ahead finding must not report a majors-behind count.

A declared range can miss `latest` from either side, and check C described
both as behind. They are opposite problems: behind means the range stopped
at an older major; ahead means its floor is above everything published, so
the package installs nowhere.

The second read:

    [contract] @theokit/sat @theokit/sdk >=99.0.0 latest 4.59.0 (0 majors behind)

`0 majors behind`, for a package no consumer can install. The measurement
was right and the label described its mirror image.

It comes up for a real reason. A two-release change has the satellite
declare the floor it will need before the sibling that provides it has
published — theokit-sdk is about to be in exactly that state for
@theokit/sdk-memory. That is legitimate and temporary, and in the old output
it was indistinguishable from a range wrong for a year, which is the whole
question a reader has.

`ahead` now has its own severity, sorts above `contract` — a range the
registry cannot satisfy at all is worse than a stale one — and carries no
majors-behind count, since the number was the misleading part. The legend
says when the state is expected, not only what it is.

Check C still never blocks. Two-release ordering is a property of publishing
interdependent packages, not something a gate should refuse; the gate's job
is to name which state you are looking at.

Refs #24
@usetheodev
usetheodev merged commit 8e2344b 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.

Check C reports a range ahead of the registry as '0 majors behind'

2 participants