{"record":{"id":"22a00115d35fe414","repo":"jdx/mise","slug":"no-matching-complete-lockfile-artifact-list-found","errorCode":null,"errorMessage":"No matching complete lockfile artifact list found for {} on platform {} (--locked mode)","messagePattern":"No matching complete lockfile artifact list found for (.+?) on platform (.+?) \\(--locked mode\\)","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/backend/github.rs","lineNumber":727,"sourceCode":"                    &additional_patterns,\n                    &platform.additional_artifacts,\n                ) =>\n            {\n                platform\n                    .additional_artifacts\n                    .iter()\n                    .map(|artifact| ReleaseAsset {\n                        name: get_filename_from_url(&artifact.url),\n                        url: artifact.url.clone(),\n                        url_api: artifact.url_api.clone().unwrap_or_default(),\n                        digest: None,\n                    })\n                    .collect()\n            }\n            _ if ctx.locked\n                && (!additional_patterns.is_empty() || locked_additional_artifacts_present) =>\n            {\n                eyre::bail!(\n                    \"No matching complete lockfile artifact list found for {} on platform {} (--locked mode)\",\n                    tv.style(),\n                    platform_key\n                )\n            }\n            _ => {\n                let mut assets = Vec::new();\n                for pattern in &additional_patterns {\n                    assets.push(\n                        self.resolve_asset_url_for_target_with_pattern(\n                            &tv,\n                            &opts,\n                            &repo,\n                            &current_target,\n                            Some(pattern),\n                        )\n                        .await?,\n                    );","sourceCodeStart":709,"sourceCodeEnd":745,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/backend/github.rs#L709-L745","documentation":"In --locked mode the github backend must resolve every configured artifact from the lockfile for reproducibility. When a tool has additional artifact patterns (or locked additional artifacts exist) but no complete matching artifact list could be found for the current platform, it bails rather than falling back to live pattern matching, which would violate the lock.","triggerScenarios":"Running `mise install --locked` (or settings.locked = true) for a github: tool where `additional_artifacts` patterns are configured in mise.toml but the lockfile (mise.lock) has no complete artifact entry set for the current platform key — never locked on this platform, patterns added after the last `mise lock`, or a lockfile generated on another OS/arch.","commonSituations":"Adding `additional_artifacts = [\"...\"]` to a tool and forgetting to re-run `mise lock`; sharing mise.lock across a team where it was generated only on macOS and a Linux CI runs --locked; renaming patterns so old lock entries no longer match.","solutions":["Run `mise lock` with the current config (on the failing platform) to record the artifact list, then retry","Commit the regenerated mise.lock alongside the pattern change","If intentional, drop --locked / settings.locked for this install or remove the additional_artifacts patterns"],"exampleFix":"# before\nmise install --locked   # fails: new pattern not locked\n# after\nmise lock && mise install --locked","handlingStrategy":"validation","validationCode":"# CI gate: lock must succeed and lockfile must exist before a locked install\nmise lock --additional-artifacts && test -f mise.lock && mise install --locked","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Re-run `mise lock` whenever additional_artifacts patterns change and commit mise.lock","Run `mise lock` on every platform in your matrix so all platform keys exist","Make `mise install --locked` a CI step that fails fast on stale locks"],"tags":["github-backend","lockfile","locked-mode","additional-artifacts"],"backgroundTag":"lockfile-entry-missing","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}