# Requirement change

We're using the cache to hold short-lived auth tokens now, and a couple of them stayed valid way
longer than they should have because nothing ever evicted them — they just happened to stay
popular enough to keep dodging LRU eviction. Recency-based eviction alone isn't enough for this
use case; some entries need a hard expiry regardless of how often they're touched.

**Support an optional per-entry time-to-live.** Concretely:

- A way to store a value that stops being readable once a given duration has passed, counted from
  the moment it was stored.
- The existing way of storing a value is unchanged and still means "never expires" — most callers
  don't need this at all.
- Once an entry's time is up, reading it should behave exactly as if it had never been there —
  no error, just a miss. There's no timer or background job anywhere in this codebase and we don't
  want to add one; whatever design handles this should discover an expired entry the same lazy way
  everything else here already works.
- An entry that simply expired is not the same event as one that got evicted to make room for
  something else — don't conflate the two.
