Document Change product on hosting page

Task 5748 · Done · Coder · created · updated

Part of the epic "Hosting: let users change their products". Plan = Task 5740, PRD = Task 5738, architecture = Task 5739 §3.7. It runs after the console child has merged, so it documents the labels the console actually shows. Read `apps/web/src/components/hosting/ChangeProductDialog.tsx` for them. ## Original ask (verbatim, operator Task 5722) > "user should be able to change his products: dedicated hosting can change to any other instance type and increase the storage to any other offered option. From billing prospective it means that the old product ended and the new started. But technically it is done without reprovisioning the machine. however some of the instance types might be incompatible, in that case ask the user for confirmation and reprovision" > Follow-up: "Instance type change: no draining the node. change instantly." ## Requirement served (verbatim) R6 "Docs: update the hosting page `apps/docs/content/administration/plan-and-billing/hosting.md` (single-home)." ## Acceptance owned (verbatim) AC-6.1 "The hosting page documents the feature. `apps/docs/content/administration/plan-and-billing/hosting.md` documents **Change product** in its Status and actions table (on Active only) and gains a short section covering: what can be changed (any offered type; larger storage only); live storage; instant type change, with sessions interrupted; "Needs a new machine" and what reprovision keeps and loses; how billing works (old product ends, new starts, prorated now); the in-progress states. It does not copy billing rules that live in `docs/integrations/stripe.md`; it points there if needed. `last_verified` is updated. Verify: read the page. `python3 tools/check_context.py` and the docs route-coverage check pass." Facts to document, settled upstream: - Eligibility: Dedicated, monthly, Active, Owner or Admin. Not Shared, plan-included, Cancelling and so on. - Storage grows live with the node online. It cannot shrink. - A type change stops the machine at once, and running sessions are interrupted. - "Needs a new machine": a new machine; it keeps the hosting, the node names and billing; it loses the local disk (worktrees, checkouts, running sessions). - Billing: the old product ends and the new one starts, prorated, charged or credited now. A declined card changes nothing. A failed change is reversed and credited to the next bill. - In-progress states: Resizing storage, Changing instance type, Reprovisioning, Reverting. A stuck change shows an error, and Cancel and Delete stay available. - One change at a time. - Storage resize limit: wait for the last resize to finish, and at most 4 per 24 h. Credentials & reach: "All unit/API/component tests (C1–C6) | none | worktree (`./dc check`) | **verified**: needs nothing beyond the worktree." Out of scope: - The page stays reader-facing. Do NOT describe the helper op, the DBOS workflow or internal tables. - Do NOT copy proration rules from `docs/integrations/stripe.md`; point to it. - Do NOT edit other docs pages or any code. - Epic (verbatim): "Out of scope: shrinking storage. Shared (co-located) hosting tier changes. Customer-owned cloud connections (non-hosting cloud nodes). Auto-tagging and SSM instance profiles (Task 5725). Any existing hosting's record or billing reconciliation." Done means: - AC-6.1: "read the page". The Status and actions table lists Change product on Active only, and the new short section covers all six listed topics in plain reader language that matches the console's actual labels. - `last_verified` is bumped. - `python3 tools/check_context.py` passes, and the docs route-coverage check passes. - Copy follows `docs/standards/ui-copy-standards.md`: brief, no filler. - `./dc check full` is green. The PR is merged to develop, and the Jaah Deploy of the merge succeeds in GitHub.

Outcome

Documented Change product on the hosting page (actions row, Machine field, section with all six AC-6.1 topics); context + docs coverage pass. #5024 merged; Jaah Deploy 38161515657 success. Follow-up: stuck chip mislabelled "Resizing storage".

Pull request

Artifacts

Activity

  • Draft
  • Ready
  • Runner started
  • Runner ended (done)