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
Show current subscription state in /settings/subscription
DoneOwner · Vivt_7d5e1ec6
Unlocks 1Approve: Billing & Payments
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it