jdx/mise · error

archive does not contain registry entries

Error message

archive does not contain registry entries

What it means

mise downloads and parses a registry archive, collecting TOML sources for every registry entry file it finds. If no registry entry files are found after iterating the archive, it refuses to build an empty registry and raises this error. An empty registry is treated as an error (rather than silently working with zero tools) so distribution or packaging problems surface immediately.

Source

Thrown at src/registry.rs:360

        }
        let file_path = PathBuf::from(components[1]);
        if file_path
            .extension()
            .is_none_or(|extension| extension != "toml")
        {
            continue;
        }
        let short = file_path
            .file_stem()
            .and_then(|stem| stem.to_str())
            .ok_or_else(|| eyre::eyre!("invalid registry filename: {}", path.display()))?
            .to_string();
        let mut source = String::new();
        entry.read_to_string(&mut source)?;
        sources.insert(short, source);
    }

    ensure!(
        !sources.is_empty(),
        "archive does not contain registry entries"
    );
    registry_from_sources(sources)
}

fn track_registry_archive_entry(
    index: usize,
    entry_size: u64,
    archive_size: &mut u64,
) -> Result<()> {
    ensure!(
        index < MAX_REGISTRY_ARCHIVE_ENTRIES,
        "registry archive contains too many entries"
    );
    ensure!(
        entry_size <= MAX_REGISTRY_ARCHIVE_ENTRY_SIZE,
        "registry archive entry is too large"

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Re-download the registry archive (clear mise's cache, e.g. `mise cache clear`) in case of a truncated/empty download.
  2. Verify the archive actually contains registry TOML files: `tar -tzf registry.tar.gz | head`.
  3. If you publish the registry, fix the packaging step to include the registry entry files at the expected location.
  4. Check the configured registry URL/short-name source points at the real registry archive, not an unrelated file.
Defensive patterns

Strategy: retry

Validate before calling

# shell: confirm the archive is non-empty and contains TOML entries before use
tar -tzf registry.tar.gz | grep -q '\.toml$' && echo OK || echo 'REJECTED: no registry entries'

Prevention

When it happens

Trigger: Calling download_registry_archive/refresh (or the test helper load path) with an archive that contains only non-registry files, an empty tarball, or entries outside the expected registry directory.

Common situations: The registry publisher packaged the wrong directory, the archive was truncated/empty due to a failed upload or proxy caching an empty response, or the short-name mapping skipped all entries because files live in unexpected subdirectories.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/76d3e1d7dc29ae7f. Report an issue: GitHub.