docs(billing): sequenced M1 implementation plan on the locked decisions #25

Merged
longjacksonle merged 1 commit from docs/billing-m1-plan into main 2026-05-31 21:03:03 +02:00

Turns the gap matrix into a phased plan built on the locked scoping calls (single PSA plan, real renewal/cancel via the subscriptions table, 1-month trial with card-on-file via the kept SetupIntent path, GracePeriod unchanged). Phase 1 is webhook idempotency (decision-independent, first); phase 2 is the single-plan reshape that gates the rest and removes the row-7 bugs by deleting the price-lock path; phases 3-5 are trial state, the subscriptions-table persist+read, and the UI reskin. Flags the decision-1 blast radius (SubscriptionTier/lifetime_member/price_locked reach into auth, JWT claims, access control, cancel/admin flows, and the web client - not a clean delete), surfaces the lifetime_member keep-or-remove sub-decision, and marks the Stripe test-key dependency as a prerequisite gate (stripe_config.secret_key is NULL in dev) rather than a step. No billing logic changed; per-user model untouched. Plan only.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Turns the gap matrix into a phased plan built on the locked scoping calls (single PSA plan, real renewal/cancel via the subscriptions table, 1-month trial with card-on-file via the kept SetupIntent path, GracePeriod unchanged). Phase 1 is webhook idempotency (decision-independent, first); phase 2 is the single-plan reshape that gates the rest and removes the row-7 bugs by deleting the price-lock path; phases 3-5 are trial state, the subscriptions-table persist+read, and the UI reskin. Flags the decision-1 blast radius (SubscriptionTier/lifetime_member/price_locked reach into auth, JWT claims, access control, cancel/admin flows, and the web client - not a clean delete), surfaces the lifetime_member keep-or-remove sub-decision, and marks the Stripe test-key dependency as a prerequisite gate (stripe_config.secret_key is NULL in dev) rather than a step. No billing logic changed; per-user model untouched. Plan only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs(billing): sequenced M1 implementation plan on the locked decisions
Some checks failed
Create release / Create release from merged PR (pull_request) Has been skipped
Check / fmt / clippy / build / test (pull_request) Failing after 16s
132ebfc399
Turns the gap matrix into a phased plan built on the locked scoping calls (single PSA plan, real renewal/cancel via the subscriptions table, 1-month trial with card-on-file via the kept SetupIntent path, GracePeriod unchanged). Phase 1 is webhook idempotency (decision-independent, first); phase 2 is the single-plan reshape that gates the rest and removes the row-7 bugs by deleting the price-lock path; phases 3-5 are trial state, the subscriptions-table persist+read, and the UI reskin. Flags the decision-1 blast radius (SubscriptionTier/lifetime_member/price_locked reach into auth, JWT claims, access control, cancel/admin flows, and the web client - not a clean delete), surfaces the lifetime_member keep-or-remove sub-decision, and marks the Stripe test-key dependency as a prerequisite gate (stripe_config.secret_key is NULL in dev) rather than a step. No billing logic changed; per-user model untouched. Plan only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
longjacksonle deleted branch docs/billing-m1-plan 2026-05-31 21:03:03 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
psa-systems/bunyip!25
No description provided.