Conversation
Clears all 24 open Dependabot alerts. Bumps vite and vitest, and extends pnpm.overrides to cover the remaining transitive advisories. Removes bun.lock. pnpm.overrides, minimumReleaseAge and onlyBuiltDependencies are pnpm-only, so bun.lock resolved a second, ungoverned dependency graph that bypassed them — it still pinned the exact brace-expansion, picomatch and yaml versions the overrides exist to exclude. Dependabot cannot maintain it either: bun is supported for version updates but not security updates, so every security PR left bun.lock stale and failed `bun i --frozen-lockfile`. The bun job now installs via pnpm and still builds and tests with bun, so runtime coverage is unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
README setup documentation still has two unresolved issues involving PocketIC setup and pnpm instructions.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This PR patches dependency advisories, standardizes installs on pnpm, and retains Bun runtime testing.
Changes:
- Updates direct and transitive dependencies through pnpm overrides.
- Removes the stale
bun.lockand updates Bun CI installation. - Refreshes contributor setup instructions and workflow badges.
File summaries
| File | Summary | Findings |
|---|---|---|
README.md |
Updates setup instructions and badges. | Nit (3 votes): Add the explicit PocketIC setup step before the Bun suite. Nit (2 votes): Update the linked examples/README.md to use pnpm instead of bun i. |
pnpm-workspace.yaml |
Removes the temporary Vite release-age exemption. | None. |
pnpm-lock.yaml |
Records patched dependency resolutions. | None. |
package.json |
Upgrades dependencies and adds pnpm overrides. | None. |
.github/workflows/e2e-test-nodejs.yml |
Installs dependencies with pnpm for Bun runtime tests. | None. |
Review details
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
- Files reviewed: 4/6 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
`.npmrc` sets ignore-scripts=true, so the postinstall that downloads the pocket-ic binary never runs on a plain install. Both setup guides now call `pnpm run setup` explicitly. examples/README.md offered `bun i` as an alternative install, which resolves a dependency graph that bypasses pnpm.overrides and the release-age policy. Bun is now documented as a test runner over a pnpm install. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Outstanding documentation and dependency-rationale corrections must be addressed before approval.
Get a fresh assessment by requesting another Copilot review.
Review details
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Suppressed comments (2)
examples/README.md:43
- This instruction refers to commands “that follow,” but the build and test commands to be run with Bun are all above this paragraph and nothing follows it. As written, the guide still tells a Bun user to run the preceding
pnpmcommands; point the instruction at the commands above (or move it before them).
Dependencies are always installed with pnpm so that `pnpm.overrides` and the
release-age policy apply. To run the suites with [bun](https://bun.sh/) instead,
keep the `pnpm i` above and replace `pnpm` with `bun` in the commands that follow.
package.json:59
- The resolver comparison in the PR description is stale relative to this change: it says the pnpm graph uses
brace-expansion1.1.13/2.0.3 and overrides^1.1.13/^2.0.3, but this file now uses^1.1.16/^2.1.2and the lockfile resolves 1.1.18/2.1.4. Please update that table so the security rationale accurately describes the graph being merged.
"brace-expansion@>=1.0.0 <2.0.0": "^1.1.16",
"brace-expansion@>=2.0.0 <2.1.2": "^2.1.2",
- Files reviewed: 5/7 changed files
- Comments generated: 1
- Review effort level: Lite
The root README implied `build` was enough to run the example suites, but it only builds packages/pic. The tests import generated `declarations/`, which are gitignored and produced by `build:examples`. The root guide now points at examples/README.md rather than duplicating the sequence. examples/README.md notes that `build:examples` needs the ICP CLI toolchain and must run before the tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Clears all 24 open Dependabot alerts (1 critical, 13 high, 8 moderate, 2 low) and supersedes #275 and #283.
Dependency updates
vite→^7.3.5,vitest→^4.1.11(the two direct-dep advisories), pluspnpm.overridesentries for the 21 transitive ones.pnpm auditis clean afterwards.Also drops the
minimumReleaseAgeExclude: [vite]entry, which was annotated "remove after 2026-04-16" — vite 7.3.5 is well past the 7-day threshold.Why
bun.lockis removedThree of the four controls added in #263 are pnpm-only —
pnpm.overrides,minimumReleaseAge,onlyBuiltDependencies. Bun reads none of them, sobun.lockwas resolving a second dependency graph that silently bypassed the hardening:pnpm.overridestargetbrace-expansion@>=1 <2→^1.1.13brace-expansion@>=2 <2.0.3→^2.0.3picomatch@>=2 <3→^2.3.2picomatch@>=4 <4.0.4→4.0.4yaml@>=2 <2.8.3→2.8.3It also can't be kept current: Dependabot supports bun for version updates but not security updates, so every security PR updated
package.json+pnpm-lock.yamlonly, leavingbun.lockstale and failing the requiredbun i --frozen-lockfilestep. That's what sank both #275 and #283, and it would sink every future one.e2e_test_bunnow installs with pnpm and still runssetup,build,build:examplesandtest:examplesunder bun, so bun runtime coverage is unchanged. What's given up is coverage of bun's resolver — acceptable for a library whose consumers resolve it themselves, and whose published tarball depends only on@icp-sdk/core,bip39andjson-with-bigint(none flagged). Verified locally thatbun run setupandbun run buildwork against the pnpm tree.Consumer-facing bun support is untouched —
docs/guides/using-bun.mdxstill applies.Docs
README.mdandexamples/README.mdboth told contributors to install withbun i. Withbun.lockgone that resolves an ungoverned graph — the same problem this PR fixes — so both now install with pnpm, and bun is documented as a test runner over that install.Both guides also omitted the
pocket-icdownload..npmrcsetsignore-scripts=true, so thepostinstallthat fetches the binary never runs on a plain install;pnpm run setupis now an explicit step. Verified by deleting the binary:pnpm idoes not restore it,pnpm run setupdoes. (Caught by Copilot review — the first revision of this PR had the same gap.)The two CI badges pointed at
test-nodejs.ymlandtest-bun.yml, neither of which exists; collapsed to the one real workflow. Happy to split the docs changes out if you'd rather keep the PR to dependencies.Verified
pnpm audit— 0 vulnerabilitiespnpm i --frozen-lockfile— lockfile up to datepnpm test:pic— 65 passedpnpm format:check— cleanbun run setup,bun run build— pass against the pnpm treevitest liston the counter example collects under 4.1.11Example e2e suites need the canister toolchain, so those run in CI.
🤖 Generated with Claude Code