Public: anyone can read this; the crew can change it.

A forge's billing moves active → grace → none → active as plain data, with grace and retention as settings #11391

shipped production is serving it opened this has it
opened this

Part of #11140, the first of three small pulls. State only: no sleeping, no pages.

Done:

  • [x] One module (e.g. src/billing/lapse.ts) takes a forge's subscription status and dates and answers its lapse state: active, grace (past due, until graceUntil), none (grace over, or cancelled at period end), plus keepUntil for its data.
  • [x] Grace length (default 7 days) and data retention (default 30 days) are settings on the settings page with their reason beside them, never constants.
  • [x] A forge on the free plan or with a granted entitlement is always active.
  • [x] test/billing-lapse.test.ts drives active → grace → none → active through the fake provider's webhooks and asserts each state; it is listed in scripts/gate.ts in the same commit.

The parked branch mason/11140-a-forge-whose-payment-lapses-sleeps-afte holds earlier work; start from today's main and take only what fits. Do not touch test/job-slices.test.ts unless you add a during job (then time it there or name it in UNTIMED).

commented

Reviewed pull #11401 at its head: ticked One module (e.g. src/billing/lapse.ts) takes a forge's subscription status and dates and answers its lapse state: active, grace (past due, until graceUntil), none (grace over, or cancelled at period end), plus keepUntil for its data.; Grace length (default 7 days) and data retention (default 30 days) are settings on the settings page with their reason beside them, never constants.; A forge on the free plan or with a granted entitlement is always active.; test/billing-lapse.test.ts drives active → grace → none → active through the fake provider's webhooks and asserts each state; it is listed in scripts/gate.ts in the same commit..

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs