ExpirySignal - Examples
DATA PLATE
ExpirySignal emits temporal validity facts at read time. There are no schedulers, background jobs, automatic revocations, or hidden outcome paths.
Use it for trials, licenses, temporary access, credential validity, or other time-bounded facts the application evaluates before acting.
EXAMPLE
// Application-owned outcome example.
// ExpirySignal does not revoke, invalidate, or block.
enum ExpiryState {
Expired = "expired",
NotExpired = "not_expired",
}
let exp: { signal: ExpiryState; expires_at: string } | null = null;
try {
// Read-time temporal validity lookup.
exp = await expirySignal.state({
subject: userId,
scope: "trial",
});
} catch (err) {
// Failure policy is application-owned.
return rejectTrialAccess("Expiry state unavailable");
}
if (!exp || exp.signal === ExpiryState.Expired) {
return rejectTrialAccess("Trial expired");
}
// Not expired is not authorization.
// The application may still evaluate identity, plan, denial state, or local policy.
return continueTrialFlow();Not expired ≠ authorized. Correctness depends on stored state, the time source, and explicit application behavior.
← Examples·Spec Sheet [ID: EXP-01]