Fold Trial Mode Into Billing Plans

Task 5246 · Done · Epic · created · updated

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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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 Done
    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" Done
    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)