Lesson 55: Waiver Sunset Enforcement Scheduler for Renewal and Closure Checkpoints in RPG Live-Ops
Lesson 54 helped you score override requests before they enter watch lanes. The next failure mode happens later: teams approve temporary overrides, then miss renewal or closure checkpoints until expiry drift is already visible in production.
This lesson adds a sunset enforcement scheduler so each waiver exception is tracked against deterministic checkpoint timing before expiry.

What you will build
By the end of this lesson, you will have:
- A
waiver_sunset_rules.mdcontract for renewal and closure timing - A
waiver_sunset_schedule.csvschema for active override windows - Deterministic checkpoint states (
upcoming,due_now,overdue) - A lane-routing flow that blocks stale waivers from silent rollover
Step 1 - Define sunset timing rules
Create one source-of-truth contract for all temporary waivers:
- required
waiver_start_at_utcandwaiver_end_at_utc - renewal lead window (for example: 7 days before expiry)
- closure evidence due window (for example: 24 hours after end)
- mandatory lane owners for renewal and closure decisions
- escalation targets when checkpoints miss SLA
Without fixed windows, "temporary" exceptions become indefinite policy drift.
Step 2 - Build waiver_sunset_schedule.csv
Use one row per active waiver:
| column | purpose |
|---|---|
waiver_id |
unique waiver identifier |
release_cycle_id |
cycle where waiver is active |
owner_lane |
lane accountable for waiver outcome |
waiver_start_at_utc |
activation timestamp |
waiver_end_at_utc |
expiry timestamp |
renewal_checkpoint_at_utc |
latest timestamp for renewal decision |
closure_checkpoint_at_utc |
latest timestamp for closure packet |
renewal_state |
pending, approved, rejected |
closure_state |
pending, complete, missing_evidence |
sunset_state |
upcoming, due_now, overdue |
escalation_lane |
fallback owner when SLA is missed |
scheduler_action |
notify, block_release_lane, escalate |
Keep this file adjacent to Lessons 53 and 54 outputs so drift scoring and waiver lifecycle controls remain aligned.
Step 3 - Add deterministic sunset-state logic
Use simple time-based rules:
upcoming: current time is before renewal checkpointdue_now: current time is between renewal checkpoint and closure checkpointoverdue: closure checkpoint passed with unresolved state
Escalation policy:
- if
renewal_stateremainspendingat renewal checkpoint ->notifyowner lane and reviewer lane - if
closure_stateremains incomplete at closure checkpoint ->block_release_lane - if overdue exceeds one additional review window ->
escalateto executive or governance lane
This keeps waiver expiry governance objective and auditable.
Step 4 - Route scheduler outputs into release controls
Before each release recommendation:
- attach
waiver_sunset_schedule.csvsnapshot to packet - fail promotion if any critical waiver row is
overdue - permit conditional promotion only with explicit renewal decision and closure owner assignment
- store review timestamp and lane acknowledgements in UTC
Release readiness should never depend on memory of waiver dates.
Step 5 - Add one daily scheduler review cadence
Run one fixed daily review:
- generate list of waivers entering
due_nowwithin 24 hours - verify owners accepted checkpoint tasks
- reclassify rows where evidence is complete
- document unresolved rows with blocker reason
Consistency matters more than complexity. A short, repeatable run prevents missed sunsets.
Common mistakes
Mistake: Treating sunset deadlines as reminders only
Fix: bind overdue state directly to release-lane blocking rules.
Mistake: Logging renewal state without closure evidence
Fix: require both renewal and closure fields before waiver lifecycle is considered complete.
Mistake: Using local timestamps across regions
Fix: store all scheduler checkpoints in UTC and display converted views only in dashboards.
Pro tips
- Add one
waiver_age_dayscalculated field for quick risk scans - Keep a weekly report of overdue waivers by owner lane
- Re-run scheduler immediately after policy updates to catch legacy drift rows
Mini challenge
- Add 15 active waiver rows to
waiver_sunset_schedule.csv. - Compute
sunset_stateusing current UTC time. - Trigger routing actions for each
due_nowandoverduerow. - Export a one-page lane summary for the next release risk review.
FAQ
Should we auto-renew waivers that are still high priority
No. Auto-renewal without checkpoint evidence recreates the same governance risk this scheduler is meant to prevent.
How often should sunset checkpoints run
At least daily during active release cycles, and immediately before every release gate review.
What if a waiver expires during an incident response window
Classify it as overdue, document emergency context, and require explicit renewal or closure decision in the next review block.
Lesson recap
You now have a waiver sunset enforcement scheduler that turns waiver expiry into a deterministic, lane-owned workflow instead of an ad-hoc reminder.
Next lesson teaser
Next, continue with Lesson 56: Waiver Renewal Evidence Completeness Scorer for Policy Alignment in RPG Live-Ops so renewal approvals are blocked when evidence is incomplete or policy-misaligned.
Related learning
- Lesson 54: Waiver Override Pre-Approval Simulator Using Policy and Drift History in RPG Live-Ops
- Lesson 53: Waiver Policy Drift Audit for Lane Closure Behavior Across Release Cycles in RPG Live-Ops
- Lesson 52: Waiver Closure Quality Audit for Evidence Completeness Across Watch Lanes in RPG Live-Ops
- How to Build a Weekly Live-Ops Risk Review in 45 Minutes