Skip to content

Catch tool-package source changing without a version bump - #267

Merged
TheGreatAxios merged 7 commits into
mainfrom
cl-github-tools-bump
Aug 21, 2026
Merged

Catch tool-package source changing without a version bump#267
TheGreatAxios merged 7 commits into
mainfrom
cl-github-tools-bump

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Seeding a fresh tenant currently aborts partway:

error: publishing the corbits-tools package-registry asset failed:
tool-package freshness: @corbits/github-tools@0.0.5 changed src/ without
bumping version.

Because seeding aborts, the tenant never gets its assistant definition — so every workbench template then fails with "No default setup agent found for this workbench", which is what a person actually sees. The cause is three layers away from the symptom.

Bumps @corbits/github-tools to 0.0.6 and both pins that reference it, which unblocks seeding.

Why this keeps happening

This is the fifth instance of the same drift. check:tool-package-pins compares a { name, version } pin literal against its package's manifest — it passes when both sides agree at the same stale version, which is exactly this shape. Its own comments, AGENTS.md, and two tickets all record that the other half was out of scope, and it stayed out of scope through four more incidents.

check:tool-package-freshness is that other half. It reads the change's git history rather than a snapshot of the working tree: a package whose non-test src/ moved must carry a version bump in the same change. A package that did not exist at the base ref is new, and its first version counts.

It scopes itself to the packages the tool registry actually publishes, read from CORBITS_TOOL_PACKAGE_DIRS in packages/tool-registry-publish/src/registry.ts — the same list the publish step walks, so the check and the publisher cannot disagree about what a tool package is. An earlier draft flagged every workspace package and produced 21 violations on a historical range, most of them packages resolved by path rather than by version.

Wired into check:structural (so bun run check covers it) and into CI, where the base ref comes from the pull request rather than a local merge base.

…without a version bump

Tool resolution keys on name@version, so new source under an unchanged
version never reaches a running agent and the hub rejects it at publish
time — which aborts seeding partway and leaves a tenant with no assistant
definition. check:tool-package-pins compares a pin against its manifest and
passes when both sides agree at the same stale version, which is the shape
that has now recurred five times. This reads the change's own git history
instead, and scopes itself to the packages the tool registry publishes.

Bumps @corbits/github-tools to 0.0.6 and its two pins, which is the live
instance of exactly that drift.
vendor/intx/* is a workspace glob, so bun install materializes a directory
holding nothing but node_modules for every linked package. The scan read
those as unregistered vendored trees and failed with sixteen violations for
paths that carry no source at all. Only a directory with its own source is
something the ledger owes a kill date.
The specifier pattern spans newlines, so a comment mentioning the word
import before a real import swallowed the lines between them and reported
the file's genuine type-only import as a value import. Comments are now
blanked before matching, preserving offsets.
A concurrent lane's classification fix landed here by mistake; it belongs
to its own change (PR #277) rather than to the tool-package freshness
guard.
@TheGreatAxios
TheGreatAxios merged commit 8fb14df into main Aug 21, 2026
5 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.

1 participant