Goal
Add opt-in Catalog v2 beta support to CollectorVision without changing existing Catalog v1 behavior. Catalog v1 NPZ files and hf:// references must continue to load exactly as they do today.
Catalog producer: HanClinto/CollectorVisionCatalog.
Current compatibility gap
Python Catalog.load() currently supports local/Hugging Face NPZ catalogs containing float32 embeddings plus card_ids and optional oracle_ids. Catalog.for_game() resolves v1 Hugging Face catalogs.
The web scanner already searches packed FP16 efficiently, but its manifest expects separate embeddings, card_ids, and optional secondary-ID arrays. Catalog v2 instead publishes a release index, per-catalog manifest, FP16 matrix, aligned gzip JSONL recognition records, optional metadata, and exact-base deltas.
No CollectorVision client currently discovers, downloads, validates, caches, or applies the v2 format.
Backward-compatible API direction
- Keep
Catalog.load(), Catalog.for_game(), NPZ, and hf:// behavior unchanged.
- Add an explicit beta entry point such as
Catalog.load_v2(...) / Catalog.for_game(..., catalog_version="v2-beta"); do not silently switch defaults during beta.
- Preserve
Catalog.search() returning (score, primary_id) tuples.
- Expose richer row descriptors, secondary IDs, face index, catalog key/version, and optional metadata through additive attributes/APIs.
- Continue requiring users to install exactly one ONNX Runtime backend; catalog support must not add an ONNX Runtime dependency.
Python client
Browser client
Beta exit criteria
Goal
Add opt-in Catalog v2 beta support to CollectorVision without changing existing Catalog v1 behavior. Catalog v1 NPZ files and
hf://references must continue to load exactly as they do today.Catalog producer: HanClinto/CollectorVisionCatalog.
Current compatibility gap
Python
Catalog.load()currently supports local/Hugging Face NPZ catalogs containing float32 embeddings pluscard_idsand optionaloracle_ids.Catalog.for_game()resolves v1 Hugging Face catalogs.The web scanner already searches packed FP16 efficiently, but its manifest expects separate
embeddings,card_ids, and optional secondary-ID arrays. Catalog v2 instead publishes a release index, per-catalog manifest, FP16 matrix, aligned gzip JSONL recognition records, optional metadata, and exact-base deltas.No CollectorVision client currently discovers, downloads, validates, caches, or applies the v2 format.
Backward-compatible API direction
Catalog.load(),Catalog.for_game(), NPZ, andhf://behavior unchanged.Catalog.load_v2(...)/Catalog.for_game(..., catalog_version="v2-beta"); do not silently switch defaults during beta.Catalog.search()returning(score, primary_id)tuples.Python client
primary_id.valueto existingcard_ids; mapscryfall_oracletooracle_idswhere available.Browser client
Beta exit criteria