Skip to content

Take zod 4, neo4j-driver 6, vitest 5 and @types/node 26; hold TypeScript 7 - #27

Merged
adamjohnwright merged 1 commit into
mainfrom
deps/major-upgrades
Sep 14, 2026
Merged

adamjohnwright merged 1 commit into
mainfrom
deps/major-upgrades

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Stacked on #26 (which is stacked on #25). Retarget to main as those merge.

Closes #17, closes #16, and closes the mergeable part of #19.

Each major was evaluated rather than merged on a green check — the suite covers a minority of tools, so green means less here than it looks.

zod 4 — take (#17)

One breaking change reached this code: z.record(v) now requires an explicit key type, so z.record(z.unknown()) becomes z.record(z.string(), z.unknown()) in the cypher tool.

zod defines the schema for all 53 tools, so passing tests are not sufficient evidence. The live sweep calls every one of them and their schemas still validate. The MCP SDK declares zod: "^3.25 || ^4.0", so this is inside its supported range.

neo4j-driver 6 — take (#16)

The code uses a small surface — driver, auth.basic, int, session.READ, session.run with a TransactionConfig timeout, result.records, toObject, close — and all of it resolves under v6, with typecheck passing against the driver's own shipped types.

Not verified against a live server. There is no Neo4j to round-trip against here, and the graph tools stay behind the NEO4J_URI gate, off by default in every deployment the team runs. That gate is the reason this is reasonable to take now rather than sit on.

vitest 5, @types/node 26 — take (part of #19)

Clean. No source changes needed.

TypeScript 7 — hold (the rest of #19)

Error: typescript-eslint does not support TS 7.0.

typescript-eslint/typescript-eslint#10940

Taking it means dropping the type-aware linting added in #26, which is a worse trade than staying on 5.9. Revisit when that issue closes.

Verification

  • npm run check (lint → format → typecheck → build → test): passes, 64 tests
  • npm run sweep: all 53 tools called; the 8 flagged are upstream 404/500 responses to deliberately odd arguments, unchanged from before the upgrade
  • npm audit: 0 vulnerabilities

🤖 Generated with Claude Code

…ipt 7

Closes the three open dependabot PRs by evaluating each major rather than
merging on a green check. The suite covers a minority of tools, so green means
less here than it looks -- each upgrade below was checked against what it
actually touches.

**zod 4** (#17). One breaking change reached this code: `z.record(v)` now
requires an explicit key type, so `z.record(z.unknown())` becomes
`z.record(z.string(), z.unknown())` in the cypher tool. zod defines the schema
for all 53 tools, so tests alone are not evidence -- the live sweep calls every
one of them and their schemas still validate. The MCP SDK declares
`zod: ^3.25 || ^4.0`, so this is inside its supported range.

**neo4j-driver 6** (#16). The code uses a small surface -- `driver`,
`auth.basic`, `int`, `session.READ`, `session.run` with a TransactionConfig
timeout, `result.records`, `toObject`, `close` -- and all of it resolves under
v6, with typecheck passing against the driver's own shipped types.

Not verified against a live server: there is no Neo4j to round-trip against
here, and the graph tools stay behind the `NEO4J_URI` gate and off by default
in every deployment the team runs. That gate is why this is a reasonable thing
to take now rather than a risk to sit on.

**vitest 5 and @types/node 26** (part of #19). Clean; no source changes needed.

**TypeScript 7 is held back** (the rest of #19). typescript-eslint does not
support it:

    Error: typescript-eslint does not support TS 7.0.
    typescript-eslint/typescript-eslint#10940

Taking it would mean dropping the type-aware linting added alongside this, which
is a worse trade than staying on 5.9 until typescript-eslint catches up. Revisit
when that issue closes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Base automatically changed from chore/speckit-and-quality to main September 14, 2026 15:42
@adamjohnwright
adamjohnwright merged commit f3c5dcd into main Sep 14, 2026
@adamjohnwright
adamjohnwright deleted the deps/major-upgrades branch September 14, 2026 15:43
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