- Shipped
- August 11, 2026 at 1:55 AM UTC
- Author
- Kamo
- Commit
- 6a74393
PAST_DUE counted as fully live in both entitlement resolvers, with no timestamp and no cap, so a customer whose card failed kept every feature for as long as Stripe left the subscription in that state — indefinitely in practice — and nobody, customer or operator, was told. A subscription now carries when collection first failed, and PAST_DUE is live only while inside its grace period. Computed on read, exactly like trial expiry, so service stops on the clock rather than waiting for a job to notice: a scheduled decision would leave a window where a lapsed subscription still worked because the sweep had not run yet. Two deliberate choices about being wrong. Grace defaults to a week rather than zero, because a failed payment is usually an expired card and not a decision to stop paying. And a past-due row with no stamp reads as inside grace, because every subscription predating the column has one — treating null as lapsed would have cut off customers the moment this shipped, for a delinquency nobody had measured.