A cold-spilled key whose TTL passes is never actively reclaimed: the hot expiry machinery (including the #549 index) deliberately covers hot entries only, and the cold copy stays in the datafile + cold_index until a read notices (ColdReadOutcome::Expired) or an orphan sweep touches it. ColdLocation already caches ttl_ms, so a low-frequency cold-index scan (or a second deadline index over cold locations) could reclaim expired entries — freeing disk space, manifest entries, and logical_len accuracy — without any disk reads. Emission semantics need care: reclaiming a cold-expired key on a master should route through the same dual-plane DEL treatment as hot expiry (#542 discipline), or replicas retain their copy forever.
A cold-spilled key whose TTL passes is never actively reclaimed: the hot expiry machinery (including the #549 index) deliberately covers hot entries only, and the cold copy stays in the datafile + cold_index until a read notices (
ColdReadOutcome::Expired) or an orphan sweep touches it.ColdLocationalready cachesttl_ms, so a low-frequency cold-index scan (or a second deadline index over cold locations) could reclaim expired entries — freeing disk space, manifest entries, andlogical_lenaccuracy — without any disk reads. Emission semantics need care: reclaiming a cold-expired key on a master should route through the same dual-plane DEL treatment as hot expiry (#542 discipline), or replicas retain their copy forever.