Repository navigation
fix(majors): anchor the @types/node plants on the major, not the patch - #119
Conversation
Both node-26 plants in package.json found the literal "^26.6.2", so any patch bump of @types/node moved the text out from under them and the static check in majors.test.ts went red. Dependabot #118 (^26.6.3) fails on exactly that. Anchor on '"@types/node": "^26' instead. A patch bump now stays green, a major bump still goes red, and both plants are still killed at "every place that pins a Node version pins the same major". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZssYS3sP4qmk6SmMEvNdt
PR Review VerdictResult: PASS Deterministic: Measured on head Acceptance Criteria
Findings
Not Checked
Routednone Generated by Claude Code |
Requested by Kornelius · project thread
Before: the two
node-26plants onpackage.jsonintests/protections/majors.tssearched for the literal"@types/node": "^26.6.2". Every patch bump of@types/noderemoved that text, somajors.test.ts("every plant's text is still in its subject, exactly once") went red for a reason unrelated to Node. Dependabot #118 (^26.6.3) fails on exactly that, 1 test.After: both plants find
"@types/node": "^26". A patch or minor bump within 26 stays green; a major bump still turns the static check red, which is wanted, because a new major has to re-plant.How: only the find text changes. The replacements leave the tail of the version behind (
^27.6.2,latest.6.2), and each one carries a comment saying why that is still the violation the guard must refuse. The other version-bearing plants in the file (node:26-slim,node-version: 26,>=26) already name only the major.Measured (Node 26.10.0, on main
2afb042+ this commit)package.jsonat^26.7.1(patch bump)majors.test.tsredpackage.jsonfrom #118's head (^26.6.3)package.jsonat^27.0.0(major bump)npm run majors -- node-26: both@types/nodemutations are still killed atrepo-config.test.ts > … > every place that pins a Node version pins the same major, as are the other seven. The one refusal (process.test.ts, SIGTERM) is identical on main and comes from the sandbox having noDATABASE_URL, so that suite is skipped.npm run quality: 94 files, 1312 passed, 46 skipped.Afterwards #118 only needs a branch update.
🤖 Generated with Claude Code
https://claude.ai/code/session_011ZssYS3sP4qmk6SmMEvNdt
Generated by Claude Code