{"record":{"id":"88b706e85dcc6a94","repo":"jdx/mise","slug":"npm-has-no-embedded-aube-dependency-graph-in-the-revision-2","errorCode":null,"errorMessage":"npm:{} has no embedded-aube dependency graph in the revision 2 lockfile; run `mise lock` to repair it or disable locked mode","messagePattern":"npm:(.+?) has no embedded-aube dependency graph in the revision 2 lockfile; run `mise lock` to repair it or disable locked mode","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/npm.rs","lineNumber":544,"sourceCode":"        let source_lockfile_version = if tv.resolved_from_lockfile() {\n            crate::lockfile::version_for_request(&ctx.config, &tv.request)?\n        } else {\n            None\n        };\n        if tv.aube_lock.is_some() && package_manager != NpmPackageManager::Aube {\n            eyre::bail!(\n                \"npm:{} is locked with an embedded-aube dependency graph, but npm.package_manager is set to {}; use the embedded aube package manager or refresh the lockfile\",\n                self.tool_name(),\n                package_manager\n            );\n        }\n        if package_manager == NpmPackageManager::Aube\n            && tv.resolved_from_lockfile()\n            && tv.aube_lock.is_none()\n            && ctx.locked\n            && source_lockfile_version.is_some_and(|v| v >= 2)\n        {\n            eyre::bail!(\n                \"npm:{} has no embedded-aube dependency graph in the revision 2 lockfile; run `mise lock` to repair it or disable locked mode\",\n                self.tool_name()\n            );\n        }\n        if package_manager == NpmPackageManager::Aube\n            && tv.aube_lock.is_none()\n            && (source_lockfile_version.is_some_and(|v| v >= 2)\n                || Self::aube_lock_creation_enabled(&tv))\n        {\n            tv.aube_lock = Some(self.resolve_aube_lock(&tv).await?);\n        }\n        if let Some(lock) = &tv.aube_lock {\n            let lock = if !ctx.locked && lock.load().is_err() {\n                lock.refresh()?\n            } else {\n                lock.clone()\n            };\n            self.validate_aube_lock(&tv, lock.load()?)?;","sourceCodeStart":526,"sourceCodeEnd":562,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/backend/npm.rs#L526-L562","documentation":"The inverse of error 93: when npm.package_manager is the embedded aube and the install is locked, mise requires the revision-2 lockfile to contain an embedded aube dependency graph (aube_lock) for the tool. If it's missing, mise bails because aube-based locked installs cannot proceed without the graph; it tells the user to repair the lockfile.","triggerScenarios":"Locked install (`ctx.locked`) with package_manager = aube, tv.resolved_from_lockfile(), a lockfile whose source_lockfile_version >= 2, but tv.aube_lock is None — e.g. a lockfile generated by an older mise or with a different package manager, missing the aube graph section.","commonSituations":"Upgrading mise after the lockfile format moved to revision 2 with embedded aube graphs, while keeping an old mise.lock; a lockfile committed by a contributor using npm.package_manager = \"npm\" then installed by a contributor using aube.","solutions":["Run `mise lock` to regenerate the lockfile with the embedded aube dependency graph.","Set npm.package_manager to a non-aube value (npm/yarn/pnpm) if you don't want aube-based locked installs.","Disable locked mode (`mise install` without --locked) to bypass lockfile enforcement."],"exampleFix":"// before: stale mise.lock without aube graph\n$ mise install --locked\nnpm:prettier has no embedded-aube dependency graph...\n\n// after\n$ mise lock && mise install --locked","handlingStrategy":"validation","validationCode":"# check lockfile revision and aube graph presence before locked aube install\ngrep -n 'lockfile_version\\|aube' mise.lock","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise lock` after upgrading mise when lockfile format revisions change","Keep the lockfile generator's package_manager consistent with installers'","Commit regenerated lockfiles promptly"],"tags":["npm","lockfile","aube","lockfile-version"],"backgroundTag":"missing-dependency","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}