Check the lifecycle behind each structure: cache reads alter frequency, deadlines can go stale, slot generations reject old handles, and equal-priority tasks need a stable tie rule.
Lessons
- LFU caches: evict by frequency, then recency
- Expiry heaps: invalidate stale TTL records on replacement
- Generational slots: reject stale handles after reuse
- D-ary heaps: trade shallower ascent for wider extraction
