Hoisted workspace auto-install reinstalls on every command (installed entry missing)
#1292
SummaryAfter a valid hoisted workspace install, a member-only direct dependency is
Expected: a warm Actual: every Minimal reproThe case is two importers (workspace root plus git clone https://github.com/mwolson/tmp-aube-issues.git
cd tmp-aube-issues/hoisted-workspace-auto-install-freshness
./repro.sh; echo exit=$?Exit The smallest direct commands, from that directory: aube install --node-linker=hoisted --ignore-scripts
# Node resolves packages/app -> root node_modules/is-number
# packages/app/node_modules/is-number does not exist
aube run ok
aube run ok
AUBE_NO_AUTO_INSTALL=1 aube run ok
Observed on aube 1.40.0Clean hoisted install: Then two consecutive The package-local path is still absent afterward, so the next command
"direct_entries": {
".": [],
"packages/app": ["packages/app/node_modules/is-number"]
}{"is-number@7.0.0":["node_modules/is-number"]}Why this mattersOn a large hoisted workspace the same false stale check reinstalls the If a follow-up command does not keep RelatedThis is a follow-on to the hoisted sharing fix, not a regression of the
In #1242, the maintainer confirmed that after the workspace-wide hoist, The existence check itself comes from Docs |
Replies: 2 comments
|
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. |
|
Confirmed fixed with aube |
Confirmed — this is a bug in the warm-path layout state. The state writer recorded every workspace direct dependency at its importer-local
node_modulespath even when the hoisted linker intentionally satisfied that edge from the workspace root, so the freshness check could never converge.PR #1295 records the actual ancestor-visible hoisted placement and adds repeated warm-run coverage: #1295
AI-assisted — Tool: Codex; model: unavailable; version: unavailable.