- Add RegistryCache with LRU eviction, TTL expiry, SHA-1 content validation
- Add CacheFactory for centralised cache configuration (Factory Method pattern)
- Add CacheStats dataclass for hit/miss/eviction observability
- Implement singleflight coalescing for concurrent-miss protection
- Use tuple keys for resolve store to prevent separator collision
- Fix cancellation-safe singleflight via plain Future + asyncio.shield
- Independent max_size budgets per store (content + resolve)
- Concurrent test assertions strengthened
- All test imports moved to module level per CONTRIBUTING.md
- Unused dead code removed from tests
ISSUES CLOSED: #28