src/universal_iiif_core/resolvers/
├── discovery.py # Public API: smart_search(), resolve_provider_input(), validate_manifest_url()
├── search_adapters/ # One file per provider (archive_org.py, harvard.py, loc.py, etc.)
│ └── __init__.py # Re-exports for backward compat
└── manifest_probe.py # validate_manifest_url(), _safe_probe()
Summary
src/universal_iiif_core/resolvers/discovery.pyis 1563 LOC and growing. It contains search adapters for 8+ providers, manifest validation, probe logic, and result normalization — all in a single file.#114 tracks the Studio UI monolith split but does not cover this core resolver file.
Current structure (single file)
search_archive_org(), URL builder, result extractionsearch_harvard(), enrichment fetch_search_loc(), pagination, result extraction_search_europeana()_search_bodleian()search_institut()_search_vatican()_search_gallica(), smart searchvalidate_manifest_url(),_safe_probe()resolve_provider_input(),smart_search()Proposed split
Relationship to other issues
Acceptance criteria
resolvers/exceeds ~300 LOC (excluding__init__.pyre-exports)smart_search,resolve_provider_input,validate_manifest_url) unchangedruff check . --select C901clean