{"record":{"id":"76d3e1d7dc29ae7f","repo":"jdx/mise","slug":"archive-does-not-contain-registry-entries","errorCode":null,"errorMessage":"archive does not contain registry entries","messagePattern":"archive does not contain registry entries","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/registry.rs","lineNumber":360,"sourceCode":"        }\n        let file_path = PathBuf::from(components[1]);\n        if file_path\n            .extension()\n            .is_none_or(|extension| extension != \"toml\")\n        {\n            continue;\n        }\n        let short = file_path\n            .file_stem()\n            .and_then(|stem| stem.to_str())\n            .ok_or_else(|| eyre::eyre!(\"invalid registry filename: {}\", path.display()))?\n            .to_string();\n        let mut source = String::new();\n        entry.read_to_string(&mut source)?;\n        sources.insert(short, source);\n    }\n\n    ensure!(\n        !sources.is_empty(),\n        \"archive does not contain registry entries\"\n    );\n    registry_from_sources(sources)\n}\n\nfn track_registry_archive_entry(\n    index: usize,\n    entry_size: u64,\n    archive_size: &mut u64,\n) -> Result<()> {\n    ensure!(\n        index < MAX_REGISTRY_ARCHIVE_ENTRIES,\n        \"registry archive contains too many entries\"\n    );\n    ensure!(\n        entry_size <= MAX_REGISTRY_ARCHIVE_ENTRY_SIZE,\n        \"registry archive entry is too large\"","sourceCodeStart":342,"sourceCodeEnd":378,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/registry.rs#L342-L378","documentation":"mise builds its tool registry from archives that must contain at least one registry source file. After extracting candidate files into the sources map, mise requires it to be non-empty; an archive with no registry entries provides nothing to parse and is rejected with this error.","triggerScenarios":"Calling the registry-loading path (e.g. during mise's registry refresh / build tooling) with an archive whose files do not match the expected registry entry patterns, or an archive that contains only non-entry files (READMEs, dotfiles, nested non-matching paths).","commonSituations":"Pointing mise at the wrong archive (an empty or unrelated tarball); an upstream restructuring that moved/renamed registry files so the extractor no longer finds them; a truncated archive that extracted nothing.","solutions":["Verify you are using the correct registry archive and that it contains the expected registry entry files at the expected paths","Check for upstream renames of the registry file layout and update the extraction glob/pattern accordingly","Re-download the archive — a truncated or partial download may have yielded zero entries","If the archive is genuinely empty, obtain a valid release from the upstream source"],"exampleFix":"// before (empty/mismatched archive)\nmise registry-load --archive ./docs.tar.gz\n// after\nmise registry-load --archive ./registry-full.tar.gz  # contains registry/*.toml entries","handlingStrategy":"validation","validationCode":"const entries = await listArchiveFilesMatching(archivePath, registryEntryPattern);\nif (entries.length === 0) throw new Error('archive has no registry entries; wrong archive or layout changed?');","typeGuard":null,"tryCatchPattern":"try { await loadRegistryArchive(path); } catch (e) {\n  if (String(e).includes('does not contain registry entries')) {\n    console.error(`No registry entries found in ${path}; verify the archive and expected layout.`);\n    return null;\n  }\n  throw e;\n}","preventionTips":["Confirm the archive URL points at the registry release, not docs/source","Pin and review upstream layout changes that rename registry files","Check archive size before loading; 0-entry/1KB archives are usually wrong"],"tags":["registry","archive","empty-result"],"backgroundTag":"empty-result-set","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"}