docs(deps): record the @types rename trap, and correct the stale dependency notes [skip-ci] - #877
Merged
Merged
Conversation
…ndency notes [skip-ci] A @types/* type imported by name couples the repo to one version of that package. @types/node 26.5.0 renamed IntervalHistogram to ELDHistogram with neither version declaring both, which failed Lint and Build on TS2305 while runtime behaviour was unchanged (#853, fixed by #874). Deriving the type from the value is the fix and the general rule. vitest 5.0.0 (#855) landed green on every check, which is strong evidence because CI runs the suite under the new runner — but not proof over config resolution, reporters, worker pooling or timeouts. AGENTS.md's "Dependencies and build" section described vendor/scanner and vendor/agent-types as submodules with file: deps and claimed recursive CI checkouts. None of that is true: menubar is the only submodule, scanner and agent-types are published @threadbase-sh npm packages, and every build/test checkout sets submodules: false. It also understated the externals and the migration copies — the CLI externalizes better-sqlite3 as well as node-pty, and the build copies three migration directories, not two. CLAUDE.md carried the same externals error and is corrected with it. Pointers from CLAUDE.md, AGENTS.md and a new .cursor/rules/dependency-bumps.mdc so claude-code, codex and cursor all reach it.
RonenMars
force-pushed
the
docs/dependency-bump-lessons
branch
from
September 12, 2026 01:47
da3346e to
9759fdd
Compare
Owner
Author
|
🎉 This PR is included in version 1.90.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
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.
Two lessons from the dependabot batch that landed today, plus the stale notes they exposed.
1. A
@types/*type imported by name is a version coupling@types/node26.5.0 renamed theperf_hookshistogramIntervalHistogramtoELDHistogram, and neither version declares both names.So #853 failed
LintandBuildonTS2305: … has no exported memberwhile nothing was wrong at runtime.Renaming the import moves the break to the other side of the bump and leaves the same trap for the next rename.
Deriving the type from the value that produces it —
ReturnType<typeof monitorEventLoopDelay>— tracks whatever the installed types call it (#874).Recorded with the verify-both-versions procedure, the revert-to-red check, and the sequencing constraint: the derived-type fix lands on
mainfirst, then the dependabot PR rebases green.2. A green suite does not fully clear a major test-runner bump
vitest 5.0.0 (#855) passed every check across two independent CI cycles.
That is strong evidence, because CI runs the suite under the new runner — but it covers only what the suite exercises, not config resolution, reporters, worker pooling or default timeouts.
Recorded as "suspect the runner first when tooling output turns odd".
3.
AGENTS.md"Dependencies and build" was substantially wrongFound while adding the above. Every claim below was checked against the tree, not copied from
CLAUDE.md:vendor/scanner,vendor/agent-types,vendor/menubarare submodules.gitmoduleshas onlyvendor/menubarci.yml/release.ymlcheckout setssubmodules: false; onlyupdate-menubar.ymlis recursive@threadbase/scannerarefile:deps built bypostinstall@threadbase-sh/scanner@^0.17.2and@threadbase-sh/agent-types@^1.0.0, normal npm semver deps — the scope was wrong toonode-ptyis external" for the CLInode-ptyandbetter-sqlite3; the library entry externalizesnode-ptyandpgmigrations/,runtime-migrations/,pg-migrations/prepare/postinstallpreparealso setscore.hooksPathCLAUDE.mdcarried the same CLI-externals error and is corrected with it.Reaching all three tools
Canonical text lives in
docs/troubleshooting.md.CLAUDE.mdandAGENTS.mdpoint at it; Cursor readsAGENTS.mdnatively and additionally gets.cursor/rules/dependency-bumps.mdc, scoped byglobsto TS and dependency files rather thanalwaysApply.The
.mdcis a short form plus a pointer, not a third copy — three hand-maintained copies of one paragraph is howAGENTS.mddrifted in the first place.Adding it falsified
docs/agents/tooling.md's "Cursor … read none of the files above", which is updated here.Verified state
npx vitest --version→vitest/5.0.0 darwin-arm64 node-v24.15.0, confirming the runner claim.@types/nodeonmainis26.5.0(chore(deps-dev): bump @types/node from 26.4.0 to 26.5.0 #853 merged).../../docs/troubleshooting.mdresolves from.cursor/rules/;.cursor/is not gitignored.biome checkclean.Checked 2026-09-12 against
32a7977d.Docs-only, hence
[skip-ci].