Skip to main content

GraceExpiryTracker

Owns the plugin-side payment-failure grace window: when it opened, whether the Day-30 hard cutoff has been applied, and the token bookkeeping at both the cutoff and the recovery. Consumed by FeedController both to keep serving private feeds while the license is Suspended but still inside the window, and to force 403 once the cutoff is in force.

Emails are not this class’s job. Podcaster-facing payment-failure notices are sent by the license server against the account holder’s billing address — one message per license per event rather than one per install. The plugin’s responsibility is limited to local token and feed behavior, plus the observability actions below.

Registered automatically on plugin boot — do not instantiate directly.