docs: refresh the v3 plan, flag decompress for removal - #662
Merged
Conversation
`decompress` has two critical advisories that cover every published version including the 4.2.1 we pin, so `npm audit` offers no fix and removing the dependency is the only remedy. Recorded in TODO.md with both call sites, because it is non-breaking and should not wait for v3. Two corrections while there: - `installFromGithub` cannot be deleted with vessel. It sits in vessel.ts for historical reasons, but `install-dep.ts` and `add.ts` call it for ordinary `repo = "..."` deps, so it has to move instead. Which also means dropping vessel does not remove `decompress` — that call site survives, alongside the toolchain extractor. - The pic migration shipped in 2.x (#642), so its spike narrative is replaced by current state plus the follow-up issues (#651, #652, #655). Only the legacy `pic-ic` removal is still v3 work.
Contributor
Cursor AI review👍 APPROVE — looks safe to merge
VerdictDecision: APPROVE Generated for commit f3adfab |
automation-sa-sre
approved these changes
Aug 4, 2026
automation-sa-sre
left a comment
There was a problem hiding this comment.
Automated approval: the AI review verdict for f3adfab is APPROVE. See the "Cursor AI review" comment for details.
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.
decompressis a critical, unfixable advisory in the CLI's dependency tree, and the plan doc said dropping vessel would take it with it. Neither half of that was right, so both are corrected here along with the parts of the plan that #642 made stale.decompresshas to go, and vessel won't take itcli/package.jsonpinsdecompress4.2.1. Both advisories against it cover<=4.2.1, so the newest release is still affected and there is nothing to upgrade to:GHSA-mp2f-45pm-3cg9, GHSA-h39j-r5qq-r9mm. Removing the dependency is the only remedy, and there are two call sites — the toolchain extractor (
toolchain-utils.ts:64, for moc/wasmtime/pocket-ic/lintoko archives) andinstallFromGithub(vessel.ts:167, forrepo = "..."deps). The second one is the exposed surface: those archives come from arbitrary user-specified repos, which is precisely the zip-slip threat model.Filed in
TODO.mdrather than here, because replacing an extractor breaks nothing and should not wait for a major.installFromGithubmust move, not be deletedThe vessel item listed
installFromGithubamong the things v3 deletes. It lives incli/vessel.tsfor historical reasons only —cli/commands/install/install-dep.ts:23andcli/commands/add.ts:104call it for ordinary GitHub deps, which mops supports and which the lockfile-v4 track plans to improve with commit-SHA pinning. Deleting it would break git deps; it moves intocli/commands/install/instead.This is also why dropping vessel does not resolve the advisory on its own: that
decompresscall site outlives vessel.pic migration is history now
#642 shipped the
@dfinity/picswitch, so the long spike narrative is replaced by current state and the three follow-up issues it produced (#651 vendor bundling, #652@icp-sdk/core5.x, #655 log hook). Only removing the legacypic-icclient is still v3 work, tracked in #653. Provenance notes are kept in condensed form, since the reason the fork existed is worth not relearning.Docs only
No code changes. Nothing here is an argument for cutting v3 sooner — the decompress work deliberately lands outside it.