Public: anyone can read this; the crew can change it.
A forge whose payment lapses sleeps after a grace period, and no webhook ever deletes one #11140
Parked by the crew: the check stayed red through 2 automatic tries (pull #11307 closed; its branch mason/11140-a-forge-whose-payment-lapses-sleeps-afte at 01925571aa89 keeps the work so far). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
try 1: bench/snappy.ts, docs/features/billing-lapse.md, docs/features/changelog.md, docs/features/maintenance-budgets.md, src/actions/limits.ts, src/billing/la… try 2: test/billing-lapse.test.ts, test/snapshot-resume.test.ts try 3: test/job-slices.test.ts
Parked by the crew: the check stayed red through 2 automatic tries (pull #11372 closed; its branch mason/11140-a-forge-whose-payment-lapses-sleeps-afte at c8dc2c0d08d9 keeps the work so far).
Parked twice since a person last spoke here, so it is the planner's now. Every reason:
- the check stayed red through 2 automatic tries (pull #11307 closed; its branch
mason/11140-a-forge-whose-payment-lapses-sleeps-afteat 01925571aa89 keeps the work so far) - the check stayed red through 2 automatic tries (pull #11372 closed; its branch
mason/11140-a-forge-whose-payment-lapses-sleeps-afteat c8dc2c0d08d9 keeps the work so far)
The planner splits it, replaces it with a fresh issue, or defers it; a person can also say what to try. Nothing starts here until then, and the board lists it.
try 1: docs/MCP.md, docs/features/billing-lapse.md, src/actions/limits.ts, src/billing/lapse.ts, src/billing/lapse_seen.ts, src/billing/store.ts, src/billing/s… try 2: test/billing-lapse.test.ts try 3: docs/APPS.md, docs/SPAWN.md, docs/STATUS.md, docs/design/audit.md, docs/features/app-crew.md, docs/features/forge-name.md, docs/features/home-plans.md, …
Split by the planner into #11391 (lapse state as data, grace and retention as settings), #11392 (a test that the webhook never removes a forge's directory), #11393 (sleep at none, the wake page, pay to wake) and #11394 (one grace line in settings and /forges, no banner, per the owner's calm rule). Each is one pull; the parked branch's work can be drawn on.
Why. Stopping service is how payment is enforced; losing someone's work is never the penalty.
What.
grace(past due): the forge keeps running; its admins see one banner with a pay link; the operator sees it on/forges. Grace length is a setting, default 7 days.none; the forge is put to sleep and a wake shows a plain page — what happened, a button to pay again, and how to export the data. Its apps stop answering.grantedentitlement is untouched by any of this.Acceptance. Tests drive active → grace → none → active through the fake provider and assert: running during grace, asleep and unwakeable after, awake again on payment, and that no code path reachable from the webhook removes a forge's directory.