Skip to content

audit frontend dependencies in CI and patch nanoid - #70

Merged
gibbsie merged 1 commit into
mainfrom
chore/frontend-audit-hygiene
Aug 12, 2026
Merged

audit frontend dependencies in CI and patch nanoid#70
gibbsie merged 1 commit into
mainfrom
chore/frontend-audit-hygiene

Conversation

@gibbsie

@gibbsie gibbsie commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary

The Security Scan job audited only the root lockfile, so frontend advisories never reached the blocking gate - Dependabot was the sole signal.

  • New blocking audit-ci step for frontend/package-lock json in the same Security Scan job, with its own config (frontend/.audit-ci.json, thresholds mirroring root, allowlist empty - the frontend tree currently audits clean).
  • nanoid 3.3.16 → 3.3.18, resolved by the registry within postess's declared ^3.3.16 range; clears the size-zero infinite-loop advisory (GHSA-2v37-7h3g-55p8, HIGH). Closes Dependabot alert #97. Lockfile diff is the nanoid chain only.
  • audit-ci-allowlist-justifications.md corrected: the react-router entry claimed no fix was published - 7.18.2 shipped and is resolved (PR build(deps): bump react-router and react-router-dom in /frontend #67). The vestigial allowlist ID in root audit-ci.json is deliberately untouched (root stays byte-identical) and documented as pending root-scoped cleanup.

Testing

Frontend gate exits 0 as configured. Bite-proven despite the clean tree: the identical config run against a tree with real HIGH advisories fails with exit l naming the GHSAs - thresholds live, exit codes propagate. No continue-on-error or soft-fail anywhere in ci.yml. Frontend jest 2,041 passed exit 0; vite build exit 0; root gate unchanged, exit 0 as on 'main.

Notes

No infrastructure or runtime delta - CI config, one dependency patch, and a documentation truth fix. Future frontend advisories without a patch will now need an allowlist entry plus a written justification; the gate enforces that by failing.

The security-scan job audited only the root lockfile, so frontend advisories were invisible to the blocking gate and Dependabot was the sole signal. A frontend-scoped audit-ci config (empty allowlist — the frontend tree is currently clean) now runs as a blocking step in the same job, proven able to fail by running the identical config against a tree with real high advisories.

nanoid resolves to 3.3.18 within postcss's declared range, clearing the size-zero infinite-loop advisory.

The react-router justification no longer claims a fix is unpublished — 7.18.2 shipped and is resolved; its vestigial root allowlist entry is documented as pending root-scoped cleanup rather than silently kept.
@gibbsie
gibbsie merged commit 1697383 into main Aug 12, 2026
14 checks passed
@gibbsie
gibbsie deleted the chore/frontend-audit-hygiene branch August 12, 2026 09:00
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.

1 participant