Remove the Paddle-backed subscriptions code path #416
Labels
No labels
Compat/Breaking
Component/Enclave-Builder
Component/Infrastructure
Deploy/BYOC
Deploy/Full-managed
Deploy/Self-hosted
Interface/API
Interface/CLI
Interface/Git
Interface/Web
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
public/platform#416
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Remove the recurring Paddle subscription path for managed/self-managed enclaves. Self-managed capacity and lifecycle should be controlled by the platform's
self_managed_plansmodel rather than by creating, changing, canceling, or projecting Paddle subscriptions.This is specifically about Paddle recurring subscriptions. Keep the Paddle integration used for one-time prepaid credit purchases, payment-method/customer setup where still required by that flow, and verified transaction fulfillment.
Coordinate this with PR #412: preserve its separation of billing records from authoritative self-managed entitlements, but remove the provider-subscription lifecycle rather than retaining Paddle subscription rows as an active billing path.
Scope
BYOC_PADDLE_SUBSCRIPTIONS_ENABLEDand its API, metering, pricing-validation, deployment, and test branches.subscription.*webhooks as an entitlement or lifecycle source.paddle_catalog, recurring tier price IDs/products, and subscription-specific provisioner behavior) without breaking credit-package provisioning.Migration and safety requirements
Before deleting the provider path, define and implement an explicit disposition for any existing non-canceled Paddle subscriptions. The removal must not silently leave customers being charged after Caution stops processing lifecycle events. Migration should either cancel/migrate known provider subscriptions through an operator-controlled procedure or fail closed with a reconciliation report that identifies remaining provider-backed rows.
Preserve billing/audit history needed for reconciliation, even if active provider IDs and intent tables are no longer used for authorization. Existing self-managed resources and contractual/manual plans must retain the intended capacity semantics during migration.
Acceptance criteria
self_managed_plansis the sole authority for self-managed/BYOC deployment capacity and lifecycle./subscriptionsmutations, webhook handlers, recurring catalog fields, and subscription checkout UI from being reintroduced, while explicitly allowing historical migrations/audit compatibility references.Likely affected areas
src/api/src/subscriptions.rssrc/api/src/main.rssrc/api/migrations/045_paddle_byoc_subscriptions.sqlplus a new forward migrationsrc/metering/src/webhooks.rs,billing.rs,calculator.rs, andmain.rssrc/caution-config/src/pricing.rsfrontend/src/views/Dashboard.vueprices.json.exampleutils/provision-paddle.shMakefile,tests/e2e/test_paddle_subscriptions.sh, and subscription-specific fixtures/testsRelated