← Back to list
01Issue
FeatureOpenSwamp CLIPublic
AssigneesNone
Relationships
#3352 extension push: audit the dependency versions the bundle actually ships (pinned facts, deno info resolution, JSR existence)
Opened by skunk-ape · 10/13/2026
Part C (#3352, release 2, swamp) of the extension dependency trust plan (#3350–#3354). Plan: Extension dependency trust plan (https://claude.ai/code/artifact/c333312a-ca26-4056-a7f2-cabd7f30457c).
Problem
The push gate audits something other than what ships.
- Facts come from latest.
fetchNpmFactsreadsdist-tags.latestfor deprecation, license, maintainers and publish date. Only OSV uses the pinned version. So a pin to a deprecated old version passes, and a good pin fails when latest is deprecated. - Unpinned and range specifiers are guessed. With no version, latest is audited. A range (
^1.2) is sent to OSV as if it were a version, and can match nothing. - JSR is never audited. Every
jsr:dependency is marked passed without a lookup.
Change
- The pinned version's facts. Read
versions[<resolved>]for deprecation, license, maintainers and publish date. - What the bundle resolves. Run
deno info --jsonon each entry point, with the same config and lockfile settingsdeno bundleuses (src/domain/models/bundle.ts:--configwhen the extension has a deno.json, otherwise no lock). Audit those resolved npm and JSR versions. Each unpinned or range specifier gets a finding that names the version this push bundled. - JSR. The package and version must exist: missing is an error (the push would fail to resolve anyway). A yanked version is a warning. OSV has no JSR data, so there's no vulnerability check.
- Severity. A deprecated pin and an unpinned or range specifier are warnings in this release. #3354 makes them errors after a two-week window. A missing JSR version is an error now.
Depends on
#3350.
Acceptance
- Unit tests: a pinned deprecated version; latest deprecated with a good pin; unpinned;
^/~ranges; an exact version; a subpath import; with and without a deno.json and lockfile; JSR present, yanked and missing. - A UAT item covers the deprecated-pin warning, the range warning naming the resolved version, and a missing JSR version. Its tests skip themselves until the binary has the capability.
- Release notes, plus a notice to publishers whose latest version would block once #3354 ships.
02Bog Flow
Open
No activity in this phase yet.
03Sludge Pulse
Sign in to post a ripple.