Adapter Layer01
Keep src/lib/releases.ts as the release adapter. It owns seeded fallbacks, remote crates.io enrichment, sorting, and public route lookup.
Crate Source02
Use known user-owned crate names and crates.io crate/version APIs. Do not scrape the crates.io user page because the fetched page requires JavaScript.
Fallback Requirement03
Every crates.io-backed release must keep a seeded fallback so build and public routes still work if the external API is unavailable.