Skip to content

build(deps): bump lodash from 4.17.21 to 4.18.1#5

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/lodash-4.18.1
Open

build(deps): bump lodash from 4.17.21 to 4.18.1#5
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/lodash-4.18.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Apr 8, 2026

Copy link
Copy Markdown

Bumps lodash from 4.17.21 to 4.18.1.

Release notes

Sourced from lodash's releases.

4.18.1

Bugs

Fixes a ReferenceError issue in lodash lodash-es lodash-amd and lodash.template when using the template and fromPairs functions from the modular builds. See lodash/lodash#6167

These defects were related to how lodash distributions are built from the main branch using https://github.com/lodash-archive/lodash-cli. When internal dependencies change inside lodash functions, equivalent updates need to be made to a mapping in the lodash-cli. (hey, it was ahead of its time once upon a time!). We know this, but we missed it in the last release. It's the kind of thing that passes in CI, but fails bc the build is not the same thing you tested.

There is no diff on main for this, but you can see the diffs for each of the npm packages on their respective branches:

4.18.0

v4.18.0

Full Changelog: lodash/lodash@4.17.23...4.18.0

Security

_.unset / _.omit: Fixed prototype pollution via constructor/prototype path traversal (GHSA-f23m-r3pf-42rh, fe8d32e). Previously, array-wrapped path segments and primitive roots could bypass the existing guards, allowing deletion of properties from built-in prototypes. Now constructor and prototype are blocked unconditionally as non-terminal path keys, matching baseSet. Calls that previously returned true and deleted the property now return false and leave the target untouched.

_.template: Fixed code injection via imports keys (GHSA-r5fr-rjxr-66jc, CVE-2026-4800, 879aaa9). Fixes an incomplete patch for CVE-2021-23337. The variable option was validated against reForbiddenIdentifierChars but importsKeys was left unguarded, allowing code injection via the same Function() constructor sink. imports keys containing forbidden identifier characters now throw "Invalid imports option passed into _.template".

Docs

  • Add security notice for _.template in threat model and API docs (#6099)
  • Document lower > upper behavior in _.random (#6115)
  • Fix quotes in _.compact jsdoc (#6090)

lodash.* modular packages

Diff

We have also regenerated and published a select number of the lodash.* modular packages.

These modular packages had fallen out of sync significantly from the minor/patch updates to lodash. Specifically, we have brought the following packages up to parity w/ the latest lodash release because they have had CVEs on them in the past:

Commits
  • cb0b9b9 release(patch): bump main to 4.18.1 (#6177)
  • 75535f5 chore: prune stale advisory refs (#6170)
  • 62e91bc docs: remove n_ Node.js < 6 REPL note from README (#6165)
  • 59be2de release(minor): bump to 4.18.0 (#6161)
  • af63457 fix: broken tests for _.template 879aaa9
  • 1073a76 fix: linting issues
  • 879aaa9 fix: validate imports keys in _.template
  • fe8d32e fix: block prototype pollution in baseUnset via constructor/prototype traversal
  • 18ba0a3 refactor(fromPairs): use baseAssignValue for consistent assignment (#6153)
  • b819080 ci: add dist sync validation workflow (#6137)
  • Additional commits viewable in compare view

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.21...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Apr 8, 2026
joalves added a commit that referenced this pull request Jun 17, 2026
Brings the integration suite from "runner dies at file #5 of 12, oscillates
between 70% and 99%" to **44 / 44 deterministic, 100% pass rate** against
test-1. Closes out the Phase 2 cleanup that #28 started.

Highlights from the journey, in causal order:

## Test runner / infrastructure

- `tests/integration/wrangler-fixture.js`: shared idempotent fixture that
  ensures wrangler dev is running before integration tests (no-op when
  already up). Wired into the test runner.
- Top-level `process.exit()` removed from claude-mcp-tools,
  claude-tool-discovery, claude-user-experience, mcp-schema. Was killing
  the runner mid-suite. Now guarded by `import.meta.url === pathToFileURL(...)`.
- Retry-once at the test() layer in all three Claude-driven files —
  catches single-shot model flakes without hiding real failures.
- Claude-driven tests now dump every captured tool result on lifecycle
  assertion failures, so a future flake is self-documenting.

## Real MCP bugs surfaced and fixed

Each one was a silent failure: the catalog said one thing, the underlying
CLI core read something else, and the call returned `{id: X}` with no
state change.

- `updateExperiment`: catalog said `data`, core reads `params.changes`.
  Renamed. Without this fix, every update silently no-op'd.
- `stopExperiment.reason` / `restartExperiment.reason`: catalog said
  optional, core throws if missing or not in a fixed enum. Marked
  required, listed valid values.
- `developmentExperiment`, `fullOnExperiment`, `archiveExperiment`:
  catalog was missing `note`. Added.
- `archiveExperiment`: catalog was missing `unarchive` (core accepts it).
- `listApps` was being called with `{items: 1}`; the catalog takes no
  params. Validation catches that now too.

## Param validation in execute_command

`src/cli-catalog.ts` gains `validateCommandParams()` — rejects unknown
params with Levenshtein-based "did you mean X?" suggestions, rejects
missing required params with the full schema. Wired into `execute_command`
BEFORE the destructive-confirmation flow. On failure the response
includes the full command docs inline (via `buildCommandDoc()`, extracted
and shared with `get_command_docs`) so the model self-corrects in one
round-trip without a follow-up `get_command_docs` call.

This single change makes the silent-no-op class of bugs impossible going
forward.

## Test cleanup

- Old "stale name" tests deleted: `button-rounding-experiment.test.js`
  (called `list_experiments`/`get_experiment`/`create_experiment` —
  none of which the CLI rewrite exposed).
- `health-check.test.js` rewritten to match the `/health` shape that
  has actually existed for months.
- `mcp-schema.test.ts` schema assertions updated to current tool shapes.
- `lifecycle-sdk.test.ts` (NEW): deterministic SDK-driven lifecycle.
  Uses the official MCP SDK, real setTimeout-based polling. Covers
  the "MCP correctly proxies state transitions" concern that Claude
  tests can't deterministically verify.
- The four Claude-driven lifecycle prompts (1 in claude-mcp-tools,
  3 in claude-tool-discovery) rewritten as natural-language flows —
  no more hand-fed param shapes that papered over catalog bugs.
- claude-user-experience prompts tightened with domain anchoring
  ("ABsmartly experiment") and "don't read local files" guards —
  diagnosed by replaying the flaky prompt and finding Claude wandering
  into `Bash ls -la` / disk-grep tangents instead of using its tools.

## Final state

Run on test-1 (healthy backend):
\`\`\`
  api-client-listings        8 / 8   ✅
  authentication            10 / 10  ✅
  backend-oauth-constraints 10 / 10  ✅
  claude-mcp-tools          15 / 15  ✅ (natural-language lifecycle)
  claude-tool-discovery     25 / 25  ✅ (3 natural-language lifecycles)
  claude-user-experience    28 / 28  ✅ (tightened prompts + retry-once)
  health-check               7 / 7   ✅
  lifecycle-sdk              2 / 2   ✅ (deterministic SDK-driven)
  mcp-schema                84 / 84  ✅
\`\`\`

**Total: 44/44, 100%, reproducible.**

Files restored that earlier work had deleted (multi-tenant-oauth,
oauth-flow, resources-prompts-flow) skip cleanly when their
prerequisites aren't available rather than fail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants