Skip to content

chore(deps): audit + bump vulnerable/outdated deps; add minimumReleaseAge guard; docs accuracy pass - #5

Merged
PAMulligan merged 3 commits into
mainfrom
2-choredeps-weekly-dependency-security-sweep-wk-3-onboard-vespasian-to-sweep-rotation-enable-dependabot-pnpm-audit-docs-pass
Jul 7, 2026
Merged

chore(deps): audit + bump vulnerable/outdated deps; add minimumReleaseAge guard; docs accuracy pass#5
PAMulligan merged 3 commits into
mainfrom
2-choredeps-weekly-dependency-security-sweep-wk-3-onboard-vespasian-to-sweep-rotation-enable-dependabot-pnpm-audit-docs-pass

Conversation

@PAMulligan

Copy link
Copy Markdown
Contributor

Weekly Dependency + Security Sweep (Wk 3) — onboards Vespasian to the PMDS sweep rotation. Closes #2.

Security — pnpm audit: 12 vulnerabilities (8 high, 4 moderate) → 0

All fixes via scoped pnpm.overrides (transitive deps; lockfile regenerated with pnpm, never hand-edited):

Package Override Advisory Came in via
esbuild >=0.28.1 dev-server request forwarding (GHSA-67mh-4wv8-2f99) electron-vite → esbuild 0.21.5
js-yaml@3 >=3.15.0 <4 merge-key quadratic DoS @lhci/utils → 3.14.2
js-yaml@4 >=4.2.0 <5 merge-key quadratic DoS commitlint/cosmiconfig, electron-builder (22 paths)
tar >=7.5.16 7 advisories (path traversal, symlink escape, …) electron-builder → app-builder-lib → tar 6.2.1
ws@7 >=7.5.11 <8 fragment memory-exhaustion DoS @lhci/cli → ws 7.5.10
ws@8 >=8.21.0 <9 fragment memory-exhaustion DoS puppeteer-core → ws 8.20.1
  • @babel/core was already at 7.29.7 (≥ 7.29.6 target) — no action needed.
  • Overrides are capped per major deliberately: an uncapped >= floated js-yaml 3.x consumers onto 5.2.1 (which drops the safeLoad API @lhci uses) — caught and fixed before commit.
  • tar 6 → 7 is the one major bump (as flagged in the sibling sweeps). Verified require('tar') from app-builder-lib still exposes the classic c/x/t/create/extract API on 7.5.19.

Outdated deps (in-range bumps)

playwright 1.60.0 → 1.61.1 (exact pin, all 3 packages), fast-xml-parser, fflate, zod 3.x, tsx, typescript, typescript-eslint, electron, electron-builder, commitlint, pixelmatch, @types/*. Majors (react 19, vite 8, eslint 10, electron-vite 5, zod 4, …) intentionally left for dedicated upgrade PRs, not a weekly sweep.

minimumReleaseAge guard

Checked all four siblings first, per the issue: none carries a minimumReleaseAge config (only Nerva has any dependency automation — a plain dependabot.yml). Added .github/dependabot.yml modeled on Nerva's structure plus Dependabot cooldown (7-day default, 14-day majors) — Dependabot's equivalent of Renovate's minimumReleaseAge — for both npm and github-actions ecosystems.

⚠️ Owner action still required: enable Dependency graph + Dependabot alerts in Settings → Security (repo-settings change, out of scope for this PR).

Docs accuracy pass

  • Added release / pipeline-tests / security-audit / node / pnpm / license badges (README previously had none).
  • Verified counts: 54 agents (.claude/agents/*.md), 10 skills — README claims match.
  • Sibling cross-links (Aurelius, Claudius, Flavian, Nerva) present and correct.
  • Quick-start verified: pnpm install + wizard scripts run cleanly on this tree.

Tests

  • pnpm test:all — 54 + 124 + 55 pass (init / pipeline / wix-driver)
  • pnpm test:canva-e2e — 6 pass (CI site-validation gate)
  • pnpm gui:test (63 pass) · gui:typecheck · gui:build (exercises the esbuild 0.28.1 override through electron-vite/vite)
  • commitlint smoke-tested against the new js-yaml 4.3.0
  • pnpm audit clean

🤖 Generated with Claude Code

…eAge guard; docs accuracy pass

Weekly Dependency + Security Sweep (Wk 3) — onboards Vespasian to the
PMDS sweep rotation.

Security (pnpm audit: 12 vulnerabilities -> 0):
- esbuild >=0.28.1 (dev-server request vuln via electron-vite's 0.21.5)
- js-yaml@3 >=3.15.0 <4, js-yaml@4 >=4.2.0 <5 (merge-key DoS; capped
  per-major so 3.x consumers keep the safeLoad API)
- tar >=7.5.16 (7 advisories; major bump from app-builder-lib's 6.2.1 —
  classic c/x/t CJS API verified intact from app-builder-lib)
- ws@7 >=7.5.11 <8, ws@8 >=8.21.0 <9 (memory-exhaustion DoS via @lhci)
- @babel/core already at 7.29.7 (>=7.29.6) — no action needed

Outdated (in-range bumps): playwright 1.60.0 -> 1.61.1 (pinned),
fast-xml-parser, fflate, zod 3.x, tsx, typescript, typescript-eslint,
electron, electron-builder, commitlint, pixelmatch, @types/*.

minimumReleaseAge guard: no sibling repo carries one (verified); added
.github/dependabot.yml modeled on Nerva's with Dependabot `cooldown`
(7d default / 14d majors) as the equivalent guard. Dependency graph +
Dependabot alerts still need enabling in repo settings (owner action).

Docs: added release/CI/node/pnpm/license badges to README; verified
agent (54) and skill (10) counts, sibling cross-links, and quick-start
install steps.

Tests: test:all (233), test:canva-e2e (6), gui test/typecheck/build all
green.

Closes #2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paul Mulligan and others added 2 commits July 7, 2026 17:06
The uncapped pre-existing "cookie": ">=0.7.0" override floated to
cookie@2.0.1 when the lockfile was regenerated. cookie@2 declares
engines.node >=22, and .npmrc sets engine-strict=true, so every
Node 20 CI job failed at pnpm install. Capping to <1 restores the
CI-proven cookie@0.7.2 (still above the >=0.7.0 advisory floor).

Verified no other resolved package requires Node >20; audit remains
clean and all suites pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The site-validation run failed on transient packages.microsoft.com
apt signing errors during 'Install jq' — but jq ships preinstalled on
GitHub-hosted ubuntu runners, so the apt call is pure flake surface.
Guard the step to only hit apt when jq is actually missing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@PAMulligan
PAMulligan merged commit deac733 into main Jul 7, 2026
15 checks passed
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.

chore(deps): Weekly Dependency + Security Sweep (Wk 3) — onboard Vespasian to sweep rotation (enable Dependabot + pnpm audit + docs pass)

1 participant