Fold Trial Mode Into Billing Plans
Fold Trial mode into Billing plans:
- Trial becomes a regular Plan, that is pre-seeded but may be changed by Operator as they please
- All functions of Trial become configurable parameters of the plan
- Trial node: each plan may have multiple products that are coming with the plan. One of them is a Jaah-provided node - operator can pick what kind of node - same as with Trial now and the same controls (reuse) as with user adding products. They may be arbitrary number of products attached
- When user is signing up he is picking the plan from offered plans that are self-served. Operator can change this plan to any other configured in the system that are active/offered, including those that are not Self-served. E.g. Operator may choose a different flavor of a Trial, such as one without a node
- Operator can override Plan parameters per organization, instance of the plan
- One of the goals is to make it more flexible with less specialized configuration knobs
Subtasks
- [business_analysis] Fold Trial Mode Into Billing Plans Settled: Trial becomes a seeded, editable plan. Plans gain duration, caps, hosting-allowed and bundled products (Shared/Dedicated node, monthly Jaah AI credit), with per-org overrides, sign-up plan choice and a default-plan setting; the Trial knobs are deleted. 9 operator decisions + 11 assumptions are in the PRD.
- [architecture] Fold Trial Mode Into Billing Plans plan_terms resolver (override→plan) + bundle reconciler replace Trial code; Trial seeded as a plan; lapse→Default via sentinel. 9 children: C1 schema → C2 terms/API → C3 Stripe ∥ C4 bundles ∥ C6 editor → C5/C7/C8 → C9 contract. 6 operator decisions (DA-1..6).
- [plan] Fold Trial Mode Into Billing Plans Split along expand → core → parallel build → contract: 9 coders (C1–C9, tasks 5256–5264) in 5 phases. Added a C8→C5 edge, an AC9.2 baseline in C1, and a prod-release gate on C9. Critic passed on round 2.
- Plan parameters schema and Trial seed Revision 0374 merged (#4618): plan params, product/bundle tables, Trial seeded; full gate green. Dev at 0374, AC9.2 before/after diff empty (both uploaded). Code Trial ignores the row until C2.
- Plan terms resolver and admin API Built plan_terms (override→plan terms, SQL ended twin, assign) + plan/org-plan admin APIs, Default plan knob, 7 knobs deleted, rev 0375. Full gate green; #4621 + follow-up #4622 merged, live on dev. 4 dev write checks covered by tests only (operator OK'd).
- Bundled products reconciler replaces trial node plan_bundles.py replaces trial_node/trial_hostings: bundles, credit, keep-or-stop lifecycle, bundles API, plan-bundles cron (0376); 5 knobs deleted. Full gate green; #4636 + AC9.2 fix #4640 merged, live on dev, AC9.2 diff vocabulary-only.
- Plan editor with reused hosting picker The plan editor now has Duration, Limits, Hosting and Products, with a dry-run confirm. HostingPicker was extracted from Add node, plus a reusable ProductLinesEditor. Full gate green; #4625 merged and deployed to dev. The dev UI check used local evidence (operator OK'd).
- Sign-up plan choice and approval Sign-up plan cards + plan choice at approval: free choice assigned, priced → Default + pending_plan_key (no bundles); operator can override. Full gate green; #4646 merged. Dev oracles run locally (dev unreachable from node).
- Operator org plan and bundles page Plan tab: overrides with Reset and a dry-run plan move; OrgBundles replaces the trial panel; Limits chips, roster Ends, No-subscription chip. Full gate green; #4647 merged. Dev not reachable, checked locally. NodeVault (5284) made develop's API ref stale.
- Tenant plan-ended banner and bundles Trial UI replaced: PlanEndedBanner, KeepBundleCard, Billing "Included with"/"Complete checkout", Nodes bundle rows, docs. Full gate green; #4661 merged. Dev-only oracles not run: dev unreachable from node.
- [finish] Fold Trial Mode Into Billing Plans All 9 coders merged; dev at 0384 with Trial a seeded editable plan, bundles cron live, knobs gone. Filed 5376 (drop trial_ends_at/org_trial_nodes after prod release) and 5377 (stale "trial plan" banner). Dev UI not browsable from node; verified via dev DB.
- Drop orgs.trial ends at and org trial nodes Revision 0385 drops org_trial_nodes, orgs.trial_ends_at and OrgTrialNode. PR #4676 merged; dev verified at 0385 with both gone. The release gate was unmet (prod is on 0377); the operator chose to merge anyway. Full gate red only on 3 inherited tests; CI gate green.
- Billing status banner says "trial plan" Billing status banner now says "the Default plan" instead of "the trial plan"; tests updated and passing; visual check done. PR #4675 merged. Local full gate red only on 3 api-unit pins develop inherited from Task 5319; CI gate green.
Artifacts
Activity
- Created
- Runner started
- Ready
- Ready
- Ready
- Runner started
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Runner resumed
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Runner resumed
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner started
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Runner resumed
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner started
- Draft
- Draft
- Draft
- Draft
- Draft
- Draft
- Draft
- Draft
- Ready
- Ready
- Ready
- Ready
- Ready
- Ready
- Ready
- Ready
- Runner ended (done)
- Runner started
- Awaiting response
- Awaiting response
- Runner resumed
- Awaiting response
- Awaiting response
- Runner resumed
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner started
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner started
- Runner started
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Awaiting response
- Awaiting response
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner started
- Runner started
- Runner ended (done)
- Runner started
- Ready
- Runner started
- Runner ended (done)
- Runner ended (done)
- Runner started
- Ready
- Ready
- Runner ended (done)
- Runner started
- Runner started
- Awaiting response
- Runner ended (done)
- Awaiting response
- Runner resumed
- Runner ended (done)
- Runner ended (done)