# SIEVE

## Goal
Provide strong scan resistance with very low metadata and update overhead.

## Core Idea
SIEVE is a simple FIFO-like policy with a one-bit filter:
- New entries are inserted as "cold".
- On access, an entry is marked "hot" via a single bit.
- Eviction scans from the FIFO head:
  - hot entry: clear bit and give it one more pass
  - cold entry: evict immediately

This creates low-cost second-chance behavior without maintaining full LRU order.

## Core Data Structures (Typical)
- Hash index `K -> EntryMeta`
- FIFO queue for insertion/eviction order
- One hot/cold bit per entry

## Complexity & Overhead
- Access path is O(1): bit set only (no relinking)
- Eviction is amortized O(1) with queue head advancement
- Metadata is minimal: queue links/indices + one bit

## Notes For CacheKit
- Aligns well with contiguous storage and index-based handles.
- Attractive for high-throughput paths where LRU relinking is too expensive.
- Benchmark against `S3-FIFO`, `Clock`, and `LRU` on scan-heavy mixes.

## References
- Zhang et al. (2023): "SIEVE is Simpler than LRU: an Efficient Turn-Key Eviction Algorithm for Web Caches", in *Proceedings of the ACM on Measurement and Analysis of Computing Systems (POMACS)*.
- Wikipedia (taxonomy context): https://en.wikipedia.org/wiki/Cache_replacement_policies
