True once observedAt is non-null and older than stalenessWindowMillis.
When observedAt is null, returns false (unknown age is not treated as
stale by policy; the publisher still decides whether to show).
A false result is not a validity certificate.
Fires when the held ad crosses the applied policy window. Returns an unsubscribe function.
Edge semantics:
observedAt is null, isStaleByPolicy() is false and this
subscription never fires (unknown age is not treated as stale).destroy() releases listeners; a later unsubscribe is a no-op.release() transfers ownership to the caller and after
pool destroy(). Pool teardown does not own or cancel this timer.
Publisher-owned staleness policy on inventory the consumer holds.
Protects against the library or the publisher holding an ad too long. It does not certify that an ad inside the window is valid: on an SDK-managed poll the ad may already be past the platform's own timeout at hand-off.
Scope still matters: these members describe the object the consumer holds. Pool churn events describe pool-owned inventory only, and a handed-out ad has already left the pool, so those events can never identify it.