ExpirySignal — Examples
DATA PLATE
Time-dependent state is emitted at read time.
No schedulers. No background execution.
EXAMPLE
// permit()/denyAction() are application-owned outcomes (illustrative).
enum ExpiryState {
Expired = "expired",
NotExpired = "not_expired",
}
let exp: { signal: ExpiryState; expires_at: string } | null = null;
try {
// Read-time expiry lookup (time-dependent state)
exp = await expirySignal.state({
subject: userId,
scope: "trial",
});
} catch (err) {
// Failure policy is application-owned: choose fail-closed (deny) or fail-open.
return denyAction("Expiry state unavailable");
}
if (!exp || exp.signal === ExpiryState.Expired) {
return denyAction("Trial expired"); // application-owned outcome
}
permit();Correctness depends on your time source.
ExpirySignal emits time-dependent state only.
← Examples·Spec Sheet [ID: EXP-01]