Completed nanovirdx.data.vxdata_adapter for HistoScan and HistoDomainRep resources.
Kept vxData Client injection explicit so scalar Sample APIs can control client construction.
Preserved requested resource order and duplicate IDs, passed local paths through, downloaded only S3 URLs, and included the nuclei segmentation map.
Defined each domain representation as one typed record containing five scalar paths.
Verified the adapter with Ruff and focused mock checks for mixed local/S3 data, duplicate order, nuclei maps, and empty inputs.
Lessons Learned: Pitfalls
The prior batch API used a struct-of-lists shape. Retaining that shape in the adapter would have leaked the old batch model into the new scalar Sample API.
vxData storage preserves input shape, but local paths must not be sent through the S3 download API.
Lessons Learned: Improvements
Document NanoVirDx’s scalar Sample adapter contract near its data model once the refactor lands: adapters accept injected clients and return one scalar path record per requested resource.