CL-6497: unblock tenant seeding and check tool-package pin drift - #230
Merged
Merged
Conversation
CL-6477/CL-6480 changed the package's src without bumping its manifest or the hand-maintained pin in workflows/assistant. Tool resolution keys on name@version, so the unchanged pin resolved to a version whose contents had moved underneath it and every fresh tenant seed failed with StaleToolPackageError.
…json does not carry Every tool-package pin is hand-maintained and nothing ripples a version bump out to the workflows that pin it. This is the fourth drift incident; the static half is now checked at merge time.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fresh tenant seeding fails on main with
StaleToolPackageError. CL-6477/CL-6480 changedpackages/agent-directory-tools/srcwithout bumping the package manifest (still 0.0.3) or the hand-maintained pin atworkflows/assistant/src/index.ts:47. Tool resolution keys onname@version, so the pin kept resolving to a version whose contents had moved underneath it, and every new tenant 500s at seed time.Bumps the package to 0.0.4 and its pin to match, which unblocks onboarding.
The guard
This is the fourth pin-drift incident (
@corbits/connections-toolsin #165, the assistant's hand-maintained pin in #168,@corbits/mcp-toolsduring CL-6456, now this one), so the durable half of the change is a check: every{ name, version }pin literal in the tree must name the version that package's ownpackage.jsoncarries, or the pin can never resolve. A pin naming a package with no workspace manifest at all is also a violation. Wired intobun run checkand CI alongside the otherscripts/checks/guards.Verified against the live drift: with the pin reverted to 0.0.3 the check fails with the file, line, both versions, and the fix; with it at 0.0.4 it passes across 21 pins in 756 files.
What this does not catch
It would not have caught this incident. PR #222 left the manifest and the pin both at 0.0.3, so they agreed with each other while the
src/behind them had changed. Catching that needs a merge-base diff (src/touched without a version bump) rather than a snapshot of the working tree, and it is filed as the follow-up half of CL-6497 — that half is the mode that has now bitten us twice, so it should land next rather than being treated as optional.