Skip to content

[failproofai-legion-966] Replace #965 and #955, and clear every fixable Dependabot alert - #966

Merged
hermes-exosphere merged 3 commits into
mainfrom
luv-legion-966
Nov 2, 2026
Merged

hermes-exosphere merged 3 commits into
mainfrom
luv-legion-966

Conversation

@NiveditJain

@NiveditJain NiveditJain commented Nov 2, 2026 •

Copy link
Copy Markdown
Member

One PR for three jobs: #965 and #955 redone so they install, and every Dependabot alert that has a fix, fixed. 19 alerts are open. 12 close with this PR and 7 stay open, all on framework floors where no fix exists on the line the fixture holds (below).

Nothing here ships. Every changed lockfile belongs to a "private": true integration fixture, and neither published package includes them.

#965 → mastra-1

npm ci failed ERESOLVE: @mastra/mcp@2.7.0 peers on @mastra/core >=1.79.0, and #965 left the fixture on 1.68.0. Global setup installs every fixture before any test runs, so all four integration shards went down with it. The job log never says so: vitest crashes while printing the error, and the log shows only code.charCodeAt is not a function. Reproduced by putting #965's manifests back under the harness.

This PR takes the new versions, with what they need:

Package Was Now
@mastra/core 1.68.0 1.81.0
@mastra/mcp 2.0.0 2.7.0
@mastra/memory 1.31.0 1.40.0
@modelcontextprotocol/node 2.0.0 2.1.2
@hono/node-server 1.19.17 2.1.6
  • mastra-1 is not a floor, so moving inside 1.x is fair. ts-sdk-fixture-pins.test.ts still holds it on 1.
  • nextjs moves @mastra/core to 1.81.0 too, because it compares each route's trace with this fixture's. Nothing enforced that, and Dependabot resolves one directory at a time, so there is now a test.
  • Three overrides retire. @mastra/mcp 2.7.0 pins fixed @modelcontextprotocol/client and /server releases itself. argparse goes because @mastra/core no longer reaches gray-matter, and left in place it would have forced js-yaml@5 onto the wrong argparse major.
  • @hono/node-server 2.1.6 came out today with fixes for three more advisories that have not reached Dependabot yet (GHSA-jpvv-r467-5p4w, GHSA-7v5p-43qr-wch5, GHSA-qv5m-9pm6-hqp3). It has npm provenance.

#955 → mastra-0, without the move

#955 moved @mastra/core from 0.24.9 to 1.80.0. That deletes the floor this fixture exists to hold: SECURITY.md says to close such a PR, and ts-sdk-fixture-pins.test.ts failed on it. It did not install either, because @mastra/mcp@0.14.5 peers on <0.25.0. So that version is not brought across to mastra-0. The 1.x line it reached for is what mastra-1 now tests, at 1.81.0. What is brought across is what #955 was for, the fixes:

Package Was Now How
@hono/node-server 2.1.1 2.1.6 In range
systeminformation 5.33.13 5.33.19 In range
gaxios 7.1.3 7.3.1 Override; gcp-metadata pins it exactly
rimraf, glob, minimatch and 21 more removed gaxios after 7.1.3 no longer needs rimraf
nested zod 3.25.76 removed Override to the fixture's own zod
zod 4.6.6 4.6.7 The release every other zod 4 fixture pins

@mastra/core 0.24.9, @mastra/mcp 0.14.5, @mastra/memory 0.15.13 and ai 4.3.19 resolve exactly as before.

Closing #955 alone would have brought it back. It opened after #950 added ignore: @mastra/* >=1.0.0 to this fixture. Its job log shows why that did not hold: the package being updated was @ai-sdk/provider-utils, which nothing ignored, and removing it ran npm install @mastra/core@1.80.0 --force. The ignore then took only the names out of the PR's description (Filtered dependencies filtered by dependabot.yml config: @mastra/core, @mastra/memory). A range is read for the package being updated, not for a parent moved on its behalf.

So @ai-sdk/provider-utils gets its own >=3.0.0 range on mastra-0 and ai-4. ai-4's job lists the same package and has so far ended at zod's all_versions_ignored before checking it. This can only be fully proven by Dependabot's next run after merge; ai, which has the same nested shape, already logs All updates for ai were ignored from the same kind of range.

The other alerts

  • deepmerge has no patched release (GHSA-gcqx-w48m-w2h4). llamaindex-0.11, llamaindex-0.12 and nextjs reach it only through html-to-text@9.0.5, and 10.x replaced it with deepmerge-ts. A fixture-local override takes it out of the tree, the way [failproofai-legion-904] Clear the fixable Dependabot alerts: mcp in the SDK lock, sprintf-js in two fixtures #904 removed sprintf-js. The only consumer imports htmlToText, which 10.x still exports. No fixture runs that code, so I drove HTMLNodeParser.parseNodes directly, under ESM and CJS on Node 20 and 24, on both LlamaIndex versions, and got the expected text each time.
  • Nested zod 3 leaves mastra-0 and langchain-dup-core, which SECURITY.md had listed as held there. @mastra/mcp and @mastra/schema-compat call zod-from-json-schema-v3 only when the root zod has no toJSONSchema, which a zod 4 root does. @langchain/core@0.3.80 imports only zod/v3 and zod/v4/core, which zod 4 also ships. langchain-dup-core still nests its second @langchain/core, which is what it exists to test.
Alert Package Fixture Outcome
#168 @modelcontextprotocol/node mastra-1 Fixed, 2.1.2
#169 @hono/node-server mastra-1 Fixed, 2.1.6
#163 @hono/node-server mastra-0 Fixed, 2.1.6
#164, #165 systeminformation mastra-0 Fixed, 5.33.19
#166, #167 glob, minimatch mastra-0 Removed from the tree
#161, #162, #170 deepmerge llamaindex-0.11, llamaindex-0.12, nextjs Removed from the tree
#141, #133 nested zod mastra-0, langchain-dup-core Removed from the tree
#171 minimatch sdk/typescript Already closed: #958's override fixed it this morning

What stays open: 7 alerts

Alert Package Fixture Fix is in
#7, #33 ai 4.3.19 (low) ai-4, mastra-0 5.0.52
#9, #41 @ai-sdk/provider-utils 2.2.8 (low) ai-4, mastra-0 3.0.28
#119, #131, #134 zod 3.25.76 (high) ai-4, langchain-0.3, llamaindex-0.11 4.6.6

All 7 are already accepted in SECURITY.md. Re-checked today: each locked version is still the newest stable release on its line, so each fix is a major its fixture exists to stay below or whose framework cannot take it. No code path in these fixtures reaches them with untrusted input.

GitHub will keep listing them as open. Clearing them would take dropping ai 4.x, LangChain 0.3, LlamaIndex 0.11 and Mastra 0.x from the SDK's supported range, or dismissing the alerts. This PR does neither; both are a maintainer's call.

Verified locally

All in the CI job's own commands, in node:20 and node:24 containers:

Job Result
Supply Chain, the gate's exact arguments on ghcr.io/google/osv-scanner-action:v2.5.0 No issues found, exit 0
Same scanner over all 15 fixture lockfiles as well Only the 7 above
failproofai-ts-sdk-integrations frameworks, Node 20 and Node 24 1036 passed, 4 skipped; same as main
failproofai-ts-sdk-integrations runtimes, Node 24 1132 passed under Node, Bun and Deno
failproofai-ts-sdk-integrations nextjs, Node 24 60 passed across five next build variants; same as main
bun run test:run 8847 passed, 11 skipped, in 2 of 3 runs: main's 8836 plus the 11 new tests. The third hit a timing flake in envelope-budget.test.ts (33 ms against a 28 ms bound on a busy machine; 351/351 run alone, and this PR touches nothing it exercises). main flaked once in 3 runs too, on publish-command.test.ts
bun run test:e2e 375 passed, 7 skipped
bun run lint, tsc --noEmit 0 errors, and the same 5 existing warnings

CI agrees on all 28 checks, with the same counts. test passes 8858 of 8858 in all three env configs, so the envelope-budget flake above was this machine's load.

Each new assertion in ts-sdk-fixture-pins.test.ts was broken on purpose to confirm it fails: the provider-utils range removed from mastra-0, widened past the fix on ai-4, the old mastra-0 lockfile with its nested zod restored, and nextjs one release behind its twin.

Supersedes #965 and #955. Both are closed with a link here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KYzGfYysR6TiCoMXnAMbW6

Summary by CodeRabbit

  • Chores

    • Updated TypeScript integration fixtures to use newer compatible framework and package versions, with refreshed dependency overrides.
    • Updated fixture dependency constraints and security guidance to reflect current compatibility and advisory coverage.
  • Documentation

    • Refreshed release notes and security guidance for the latest fixture dependency changes.
  • Tests

    • Expanded checks for fixture dependency versions, documented compatibility floors, and matching framework configurations.

NiveditJain and others added 2 commits November 2, 2026 16:24
…965 and #955

#965 moved @mastra/mcp to 2.7.0 in mastra-1, which peers on @mastra/core
>=1.79.0 while the fixture stayed on 1.68.0, so `npm ci` failed ERESOLVE and
took down every shard that installs it. #955 moved @mastra/core to 1.80.0 in
mastra-0, off the floor that fixture holds, and @mastra/mcp@0.14.5 cannot
install beside that either.

mastra-1 takes the new versions with what they need: @mastra/core 1.81.0,
@mastra/mcp 2.7.0, @mastra/memory 1.40.0. That brings
@modelcontextprotocol/node 2.1.2 and @hono/node-server 2.1.6, and retires the
@modelcontextprotocol/client, @modelcontextprotocol/server and argparse
overrides. nextjs moves @mastra/core with it, because it compares each route's
trace with this fixture's.

mastra-0 stays on Mastra 0.x. @hono/node-server and systeminformation move in
range. An override moves gaxios 7.1.3 -> 7.3.1, which gcp-metadata pins exactly
and which no longer needs rimraf, so rimraf, glob, minimatch and 21 more
packages leave the tree.

deepmerge has no patched release. llamaindex-0.11, llamaindex-0.12 and nextjs
reach it only through html-to-text 9, and html-to-text 10 replaced it with
deepmerge-ts, so an override takes it out of the tree.

mastra-0 and langchain-dup-core drop their nested zod 3 by overriding zod to
their own zod 4. @mastra/mcp and @mastra/schema-compat read
zod-from-json-schema-v3 only under a zod 3 root, and @langchain/core@0.3.80
imports only zod/v3 and zod/v4/core, which zod 4 also ships.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KYzGfYysR6TiCoMXnAMbW6
#955 opened after .github/dependabot.yml ignored `@mastra/*` on mastra-0, and
moved @mastra/core to 1.80.0 anyway. Its job log shows why: the package being
updated was @ai-sdk/provider-utils, which nothing ignored, and removing it ran
`npm install @mastra/core@1.80.0 --force`. The ignore then only took those names
out of the PR's description. A range is read for the package being updated, not
for a parent moved on its behalf.

So @ai-sdk/provider-utils gets its own range on ai-4 and mastra-0. ai-4 lists the
same package in its job, which has so far ended at zod's all_versions_ignored
before checking it, so the range is there for when that stops being the case.

ts-sdk-fixture-pins.test.ts now fails when a floor installing
@ai-sdk/provider-utils 2 has no such range, when zod 3 appears outside the three
fixtures SECURITY.md accepts it in, or when a nextjs framework pin leaves its
twin, which Dependabot cannot keep together because it resolves one directory at
a time. Each new assertion was broken on purpose to confirm it fails.

SECURITY.md records the fix pattern this work relied on (override the parent to
a release that no longer needs the package) and narrows the zod row to three
fixtures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KYzGfYysR6TiCoMXnAMbW6
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Thanks @NiveditJain for your contribution to Failproof AI! 🙌

We'd love to discuss your PR and welcome you to our community.

Discord: https://discord.befailproof.ai/
Reddit: https://www.reddit.com/r/failproofai/

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 94fe299b-a9b3-438c-9e59-32e00fe0fedc
Commits

Reviewing files that changed from the base of the PR and between aecc86b and 0b69b91.

Files ignored due to path filters: 6
  • sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json is excluded by !**/package-lock.json
  • sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json is excluded by !**/package-lock.json
  • sdk/typescript/integration/fixtures/llamaindex-0.12/package-lock.json is excluded by !**/package-lock.json
  • sdk/typescript/integration/fixtures/mastra-0/package-lock.json is excluded by !**/package-lock.json
  • sdk/typescript/integration/fixtures/mastra-1/package-lock.json is excluded by !**/package-lock.json
  • sdk/typescript/integration/fixtures/nextjs/package-lock.json is excluded by !**/package-lock.json
Files selected for processing: 11
  • .github/dependabot.yml
  • CHANGELOG.md
  • SECURITY.md
  • __tests__/ci/ts-sdk-fixture-pins.test.ts
  • sdk/typescript/CHANGELOG.md
  • sdk/typescript/integration/fixtures/langchain-dup-core/package.json
  • sdk/typescript/integration/fixtures/llamaindex-0.11/package.json
  • sdk/typescript/integration/fixtures/llamaindex-0.12/package.json
  • sdk/typescript/integration/fixtures/mastra-0/package.json
  • sdk/typescript/integration/fixtures/mastra-1/package.json
  • sdk/typescript/integration/fixtures/nextjs/package.json

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

Walkthrough

TypeScript integration fixtures update dependency versions and overrides. Dependabot rules, security guidance, changelogs, and CI checks are updated to reflect and validate the fixture dependency changes.

Changes: Fixture dependency remediation

Layer / File(s) Summary
Update fixture dependencies
sdk/typescript/integration/fixtures/*/package.json, sdk/typescript/CHANGELOG.md
Fixture manifests update Mastra and Zod versions, add dependency overrides, and remove selected overrides. The SDK changelog records these changes, including html-to-text overrides and removal of nested Zod 3 copies.
Document transitive dependency handling
.github/dependabot.yml, SECURITY.md, CHANGELOG.md, sdk/typescript/CHANGELOG.md
Dependabot adds @ai-sdk/provider-utils ignore ranges for ai-4 and mastra-0. Security guidance and changelogs describe transitive dependency handling and limit the documented Zod advisory fixtures to three.
Check fixture pins
__tests__/ci/ts-sdk-fixture-pins.test.ts
CI checks inspect nested lockfile versions, verify provider-utils ignore ranges and Zod 3 fixture membership, and compare selected Next.js dependencies with fixture twins.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Possibly related PRs

Suggested reviewers: hermes-exosphere

Merge Risk: Moderate · up to 0b69b

Align the html-to-text override with the SDK’s Node floor, or explicitly raise that floor before merging.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description is thorough and substantive. It states what the PR does (replaces #965 and #955, clears fixable Dependabot alerts, 12 closed and 7 left open), why each change is needed, and which fixt… Add the 'Type of Change' section and tick the applicable box. This PR is a dependency and fixture maintenance change, so 'Bug fix' is the closest option, but the author should choose. Tick the four checklist items, or state why each one doe…
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly identifies the replacement of PRs #965 and #955 and the Dependabot alert fixes, which are the main changes.
Linked Issues check Passed The only linked issue is #958, which is closed. Its state is marked as historical context only, so its acceptance criteria are not requirements for this pull request. No active directly linked targets…
Out of Scope Changes check Passed The changed files match the stated purpose: replacing #965 and #955 with installable fixture updates and clearing fixable Dependabot alerts. The changes are: (1) fixture manifests for mastra-0, mastra…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Full details: Linked Issues check

Explanation

The only linked issue is #958, which is closed. Its state is marked as historical context only, so its acceptance criteria are not requirements for this pull request. No active directly linked targets remain, and no linked-issue coding requirements apply. The PR objectives section reaches the same conclusion.

Full details: Out of Scope Changes check

Explanation

The changed files match the stated purpose: replacing #965 and #955 with installable fixture updates and clearing fixable Dependabot alerts. The changes are: (1) fixture manifests for mastra-0, mastra-1, nextjs, llamaindex-0.11, llamaindex-0.12, and langchain-dup-core, which set the version floors and overrides described in the PR; (2) .github/dependabot.yml ignore ranges for @ai-sdk/provider-utils and @mastra/core, which keep the fixture floors enforced; (3) tests/ci/ts-sdk-fixture-pins.test.ts, which adds assertions for those floors and fixture twins; (4) SECURITY.md, CHANGELOG.md, and sdk/typescript/CHANGELOG.md entries that document the same changes. The changelog text describes this PR's work and does not add unrelated release content. The six fixture lockfiles were excluded from review (rule !**/package-lock.json) and were not inspected. Their content was judged only through the matching manifest changes and the PR description. No unrelated change was demonstrated.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (10 skipped: 10 unsupported.)

Full details: Description check

Explanation

The description is thorough and substantive. It states what the PR does (replaces #965 and #955, clears fixable Dependabot alerts, 12 closed and 7 left open), why each change is needed, and which fixtures are affected. It also lists the verification commands and results. It does not follow the repository template exactly: the 'Type of Change' section is missing, and none of the four checklist boxes are ticked. The checklist results are reported in the Verified locally section, but that is not the same as the template's checklist. The Description section is present in substance.

Resolution

Add the 'Type of Change' section and tick the applicable box. This PR is a dependency and fixture maintenance change, so 'Bug fix' is the closest option, but the author should choose. Tick the four checklist items, or state why each one does not apply. The commands listed in the template are npm run lint, npx tsc --noEmit, npm run test:run, and npm run build. The PR reports bun run lint, tsc --noEmit, and bun run test:run, which do not match the template commands exactly. Confirm that npm run build was run, and add it to the checklist or note its result.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

__tests__/ci/ts-sdk-fixture-pins.test.ts

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

sdk/typescript/integration/fixtures/langchain-dup-core/package.json

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

sdk/typescript/integration/fixtures/llamaindex-0.11/package.json

ESLint skipped: the matched ESLint configuration already failed (missing-dependency).

  • 4 others

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

A rabbit checks each pin in place,
Zod and Mastra set their pace.
Overrides shift, old copies go,
Dependabot learns what ranges show.
Lockfile versions pass the test,
Then carrots crown the branch’s nest.

@socket-security

socket-security Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​@​mastra/​mcp@​2.0.0 ⏵ 2.7.09810086 +110080
Updatednpm/​@​mastra/​memory@​1.31.0 ⏵ 1.40.0100 +110088 +110080

View full report

@mastra/mcp imports zod-from-json-schema-v3 eagerly and only calls it under a
zod 3 root, and @langchain/core@0.3.80 does load zod/v3, now from zod 4's package.
So "a nested copy that nothing in the fixture loads" was wrong. What holds is that
those consumers do not need the old major.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KYzGfYysR6TiCoMXnAMbW6

@coderabbitai coderabbitai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Fix comments: Fix CodeRabbit comments on this PR

Comment thread CHANGELOG.md Resolved
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.

2 participants