0150b5ebb4
The rpm virtual's merge cache, singleflight and two-generation retention are hard-wired to RPMRepo, so other merged index types (deb next) can't reuse them. - add a mergedRepo interface (index + referenced files) implemented by RPMRepo - key the merge cache by type-scoped string and serve files from both retained generations via cachedFile - extract parallel fail-closed member fetching into a generic fetchMembers - add tests for generation retention and per-key isolation Reviewed-on: #147 Co-authored-by: unkin-agent <unkin-agent@unkin.net> Co-committed-by: unkin-agent <unkin-agent@unkin.net>