Lanes
One lane at a time — the goal, the critical path, and the current wave of blockers.
Approve: Billing & PaymentsTo do · blockerApply requireTier middleware to all Pro-only routesTo doWire UI feature gates with the Gate componentTo doAdd billing route testsDoneConfirm pricing-page numbers match Stripe productsTo doConfirm STRIPE_WEBHOOK_SIGNING_SECRET set in prodDoneTest Stripe test vs live key separationDoneDecide: remove in-app checkout links, or get Apple's external-purchase entitlementTo doImplement the upgrade-path decision on iOS and AndroidTo doBuild the Android subscription and billing surfaceTo doPre-downgrade confirmation modalDoneBilling tests: pin the survivors #694 lists under "Not covered", and the Stripe cancel in account deletionDoneShow current subscription state in /settings/subscriptionDoneBuild invoice history pageTo doWire dunning email on invoice.payment_failedDoneAnnual vs monthly pricing toggleTo doTighten Stripe replay tolerance from 300s to 60sDoneDunning email says custom domains "may be paused" after several days, but billing suspends them on the first failed invoiceTo do
Wave
Billing & Payments
Depends on Auth and Backend API. Revenue path — the paywall blocker lives here.
TacTile › Launch TacTile › Backend & Infrastructure › Billing & Payments
8/18 done10 open1 open blocker
Selected taskclear
Billing tests: pin the survivors #694 lists under "Not covered", and the Stripe cancel in account deletion
DoneOwner · Vivt_7f3ac79d
Mutations to billing.ts that leave both billing test files green on PR #694's head 071e1e82, plus the untested Stripe cancel on account delete.
No dependencies in this wave — nothing gates it, and nothing waits on it.
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it