Problem
The unchanged full-VM lifecycle suite now exposes seven native installer trust-classification failures after dependency provisioning and manifest parsing are fixed:
--trustexits non-zero for an unhoisted untrusted package- a trusted dependency entry matches by a truncated hash instead of exact package name
- a colliding package in the trusted subtree incorrectly runs its script
- trust follows dependency aliases instead of the resolved package name
- non-npm trust propagates beyond root/workspace declarations
- binary-lockfile trust accepts a non-exact name match
- default trust follows a non-canonical registry tarball URL
Several failures allow lifecycle scripts that pinned Bun blocks, so this is a correctness and supply-chain boundary rather than output-only parity.
Reproduction:
scripts/provision-corpus-deps.sh
HOME_NATIVE_VM=1 HOME_CORPUS_FULL_VM=1 ./zig-out/bin/home test packages/runtime/test/bun-corpus/cli/install/bun-install-lifecycle-scripts.test.tsCurrent unchanged ReleaseFast file: 48 pass / 12 fail / 699 assertions. These seven are the trust identity/source subset.
Acceptance criteria
- Trust decisions use the exact resolved package identity and full lockfile key.
- Hash-prefix collisions, aliases, transitive non-npm packages, and non-canonical registry sources remain blocked exactly as in pinned Bun.
--trusthandles unhoisted packages with the pinned exit/output behavior.- All seven unchanged cases pass in Debug and ReleaseFast.
- No corpus edits, skipped scripts, weakened assertions, or broad trust fallback.