Hoisted workspace auto-install reinstalls on every command (installed entry missing)
#1292
Unanswered
mwolson
asked this question in
Troubleshooting and Bugs
Replies: 1 comment
|
Confirmed — this is a bug in the warm-path layout state. The state writer recorded every workspace direct dependency at its importer-local PR #1295 records the actual ancestor-visible hoisted placement and adds repeated warm-run coverage: #1295 AI-assisted — Tool: Codex; model: unavailable; version: unavailable. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
1.40.0 linux-x64 (2026-08-13)Summary
After a valid hoisted workspace install, a member-only direct dependency is
placed at the workspace-root
node_modules/<dep>. The package-localpackages/<pkg>/node_modules/<dep>slot is intentionally absent, Noderesolves through the root placement, and the same layout is what native
pnpm hoisted produces.
aube runandaube execstill treat that absent slot asinstalled entry missingand perform another install on every invocation.The next command sees the same valid hoisted layout and does it again.
Expected: a warm
aube runafter a fresh hoisted install.Actual: every
aube runprintsAuto-installing: installed entry missing: packages/app/node_modules/is-numberand reinstalls.Minimal repro
The case is two importers (workspace root plus
packages/app). Onlypackages/appdepends on publicis-number@7.0.0. The workspace setsnodeLinker: hoistedso follow-up commands stay hoisted without a shim.Exit
1while the loop is present,0when aube stays warm.The smallest direct commands, from that directory:
aube exec -c -- node -e "process.stdout.write('ok\\n')"hits the samefreshness check. If the workspace does not set
nodeLinker: hoisted,AUBE_NODE_LINKER=hoisted aube run okis the equivalent form.Observed on aube 1.40.0
Clean hoisted install:
Then two consecutive
aube run okinvocations, each:The package-local path is still absent afterward, so the next command
repeats.
AUBE_NO_AUTO_INSTALL=1 aube run okprints onlyok..aube-staterecords the importer-local path that the hoisted linkernever created.
hoisted-placements.jsonhas the real placement:{"is-number@7.0.0":["node_modules/is-number"]}Why this matters
On a large hoisted workspace the same false stale check reinstalls the
whole tree on every script or exec. That turns cheap repeat commands into
multi-second or multi-tens-of-second installs, and it never converges
because the valid hoisted layout still lacks the package-local slot.
If a follow-up command does not keep
node-linker=hoisted, the firstauto-install rewrites the tree to isolated and the second command stays
warm. The repeating loop is the hoisted-stays-hoisted case.
Related
This is a follow-on to the hoisted sharing fix, not a regression of the
shared-realpath identity bug:
In #1242, the maintainer confirmed that after the workspace-wide hoist,
packages/*/node_modules/<dep>is intentionally absent and importersresolve upward to the root copy. Native pnpm 11.21.0 produces that same
root-only placement on this fixture.
The existence check itself comes from
#188 (warm-path
direct_entries). I didnot find an existing discussion about this hoisted false-positive.
Docs
All reactions