build(deps): bump lodash from 4.17.21 to 4.18.1#5
Open
dependabot[bot] wants to merge 1 commit into
Open
Conversation
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>
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.
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.
Bumps lodash from 4.17.21 to 4.18.1.
Release notes
Sourced from lodash's releases.
Commits
cb0b9b9release(patch): bump main to 4.18.1 (#6177)75535f5chore: prune stale advisory refs (#6170)62e91bcdocs: remove n_ Node.js < 6 REPL note from README (#6165)59be2derelease(minor): bump to 4.18.0 (#6161)af63457fix: broken tests for _.template 879aaa91073a76fix: linting issues879aaa9fix: validate imports keys in _.templatefe8d32efix: block prototype pollution in baseUnset via constructor/prototype traversal18ba0a3refactor(fromPairs): use baseAssignValue for consistent assignment (#6153)b819080ci: add dist sync validation workflow (#6137)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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill 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.