Skip to content

Consolidate plugin dependency maintenance and update Pydantic and UUID - #184

Merged
lucarlig merged 1 commit into
mainfrom
user/luca/dependabot-workspace-cleanup
Sep 14, 2026
Merged

lucarlig merged 1 commit into
mainfrom
user/luca/dependabot-workspace-cleanup

Conversation

@lucarlig

@lucarlig lucarlig commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

output_length_guard was outside the root uv workspace, so root Dependabot updates and monthly maintenance missed its separate dependency lock. Join it to the workspace, remove its local lockfile, and include it in monthly plugin validation.

This also incorporates the pending Pydantic and UUID updates from #183 and #182 into one change.

Changes

  • Resolve all nine plugins through the root uv.lock; add a catalog regression check for workspace membership and absence of plugin-local locks, with CI triggers covering Python manifests and locks.
  • Update Pydantic to 2.13.5, pydantic-core to 2.46.5, and UUID to 1.26.1. Align the root Pydantic constraint with the updated plugin manifests.
  • Apply required patch-version bumps to the five modified plugin packages and keep their Cargo lock entries and plugin manifests aligned.
  • Document how to verify and handle alerts referencing deleted lockfiles.

Advisories and resolution

The 140 alerts below represented 23 advisories against seven plugin-local lockfiles deleted in #121 and #159. The active dependencies were already patched on main; these were stale alerts, not 140 outstanding code fixes. Both lockfiles present at inspected commit 213611aaaf64e67b042e4cef9b14dcd4f02a0786 were outside every reported vulnerable range.

Grouped by dependency, the 23 advisories were resolved as follows. The patched versions were already present on main; this PR retains them in one shared lockfile. All associated stale alerts were dismissed as inaccurate, with evidence recorded in each dismissal.

Dependency What the advisories covered Minimum version covering all advisories Version in shared lockfile How it was resolved
cryptography — 4 advisories Vulnerable bundled OpenSSL; certificate path-building DoS; certificate name-constraint bypass; PKCS#7 decryption oracle. 50.0.0 50.0.1 Already patched; dismissed alerts against deleted lockfiles.
MCP Python SDK — 3 advisories Cross-client task access/cancellation; missing authenticated-principal checks on HTTP sessions; missing WebSocket Host/Origin validation. 1.28.1 1.29.1 Already patched; dismissed alerts against deleted lockfiles.
PyJWT — 5 advisories Algorithm allowlist bypass; HS256 token forgery with mixed algorithm families; unsafe JWKS URL schemes; decoding and JWKS-request DoS. 2.13.0 2.13.0 Already patched; dismissed alerts against deleted lockfiles.
Starlette — 5 advisories Host/path URL poisoning; ignored form limits; arbitrary HTTPEndpoint method dispatch; Windows StaticFiles SSRF and NTLM credential theft. 1.3.1 1.6.0 Already patched; dismissed alerts against deleted lockfiles.
python-multipart — 4 advisories Querystring CPU DoS; querystring and Content-Disposition parameter smuggling; unbounded buffering with negative Content-Length. 0.0.31 0.0.32 Already patched; dismissed alerts against deleted lockfiles.
h2 — 1 advisory Duplicate Host headers could enable request smuggling. 4.4.1 4.4.1 Already patched; dismissed alerts against deleted lockfiles.
pydantic-settings — 1 advisory Nested secrets followed symlinks outside secrets_dir, enabling local file reads and bypassing size limits. 2.14.2 2.15.0 Already patched; dismissed alerts against deleted lockfiles.

After reconciliation, GitHub showed zero open alerts, with 140 dismissed and the 18 previously fixed alerts unchanged. This PR prevents further lockfile drift by placing all nine plugins under the root workspace and rejecting plugin-local lockfiles in the catalog checks. The Pydantic and UUID bumps are routine updates, separate from these advisory resolutions.

GitHub still retains the obsolete manifest entries in its dependency graph. A graph refresh remains an administrative follow-up because this account did not expose the documented refresh action. No advisory ignore rules were added and Dependabot remains enabled.

@brian-hussey brian-hussey left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@msureshkumar88 msureshkumar88 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The workspace consolidation direction is correct, but please address these before merge:\n\n1. Strengthen the regression coverage. test_all_plugins_share_the_root_uv_workspace_lock only checks static membership, root-lock existence, and local-lock absence. It does not prove that the committed root uv.lock resolves every declared workspace package—precisely the invariant this PR changes. Add an isolated fixture/CI assertion using uv lock --check and a locked workspace sync (or equivalent) that fails when a new workspace member is omitted from the shared lock.\n\n2. Keep this issue-focused. The output_length_guard workspace repair requires its workspace membership, shared lock regeneration, local lock removal, maintenance inclusion, and regression coverage. The Pydantic/pydantic-core and UUID updates, five package version bumps, and their documentation are separate Dependabot work (#183/#182). Please split them into separate PRs, or explicitly document and obtain approval for the combined release/compatibility scope. Raising the Pydantic lower bound also prevents consumers pinned to 2.13.4 from installing the affected packages.\n\nAlso add a formal Fixes #… reference to the workspace/lock-drift issue; this PR currently has no closing issue link.

@msureshkumar88 msureshkumar88 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The workspace consolidation direction is correct, but please address these before merge:

  1. Strengthen the regression coverage. test_all_plugins_share_the_root_uv_workspace_lock only checks static membership, root-lock existence, and local-lock absence. It does not prove that the committed root uv.lock resolves every declared workspace package—precisely the invariant this PR changes. Add an isolated fixture/CI assertion using uv lock --check and a locked workspace sync (or equivalent) that fails when a new workspace member is omitted from the shared lock.

  2. Keep this issue-focused. The output_length_guard workspace repair requires its workspace membership, shared lock regeneration, local lock removal, maintenance inclusion, and regression coverage. The Pydantic/pydantic-core and UUID updates, five package version bumps, and their documentation are separate Dependabot work (#183/#182). Please split them into separate PRs, or explicitly document and obtain approval for the combined release/compatibility scope. Raising the Pydantic lower bound also prevents consumers pinned to 2.13.4 from installing the affected packages.

Also add a formal Fixes #… reference to the workspace/lock-drift issue; this PR currently has no closing issue link.

@gandhipratik203 gandhipratik203 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The plugins mentioned have the dependency updates. LGTM once the existing comemnts are resolved.

@lucarlig

Copy link
Copy Markdown
Collaborator Author

2. The output_length_guard workspace repair

i think the regression test is not needed for just updates

@lucarlig
lucarlig dismissed msureshkumar88’s stale review September 14, 2026 10:41

regression test not needed, 1 singple pr to fix all issues under vuln

@lucarlig
lucarlig merged commit a545efa into main Sep 14, 2026
90 checks passed
@lucarlig
lucarlig deleted the user/luca/dependabot-workspace-cleanup branch September 14, 2026 10:42
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.

4 participants