Runtime facts the residency (self-eviction) sweep hands to
Stuff.canEvict — only what an object cannot derive about
itself. Everything self-knowable (contents, engagement, host,
container chain) the object introspects directly; the context carries
the sweep-computed idle duration and the trigger that fired.
Deliberately thin and extensible: the sole reason canEvict
takes a context object rather than being no-arg is so a future
resource-pressure trigger (compute-dormancy) can add fields
(memoryPressure, …) and a new reasonwithout changing any
existing override's signature. v1 carries only these two.
Runtime facts the residency (self-eviction) sweep hands to Stuff.canEvict — only what an object cannot derive about itself. Everything self-knowable (contents, engagement, host, container chain) the object introspects directly; the context carries the sweep-computed idle duration and the trigger that fired.
Deliberately thin and extensible: the sole reason
canEvicttakes a context object rather than being no-arg is so a future resource-pressure trigger (compute-dormancy) can add fields (memoryPressure, …) and a newreasonwithout changing any existing override's signature. v1 carries only these two.