Plans and billing correction for organization states

Task 9013 · Done · Coder · created · updated

Goal: an org sees its real plan and what it does or doesn't include, and an operator edits plans without ambiguity. - Pending self-service org on `(default)`: Plan page shows the applied-for plan or "No plan yet"; the guide's Choose plan step can be completed. - A plan-gated page (e.g. Billing › Jaah AI) shows the "not included" line with a Subscription link, never an empty tab. - Plan form: per-field "inherit (default)" vs own empty value; cron minimum period in words, not seconds. - One control per cap: migrate legacy `limit_runner_slots` overrides into Max agents; show "no agents bought — capped at Max agents". - Tenant API doors for Automations and Slots match what the console exposes (decide and enforce); reader docs for operator-only surfaces moved out of the tenant portal; drop AuditPage's dead operator-plane prompt. - Self-create takes the advisory lock after the slug is chosen; `reset_billing` restores `inherits` and `_default`; migration 202610211200 tested without a `free` row. Out of scope: Stripe, prices, the inheritance model. Done means: api + vitest per item; plan form checked at 1440px and 390px; quick gate green.

Outcome

Pending-org plan label/choice, plan gates with Subscription link, per-field (default) in plan form, runner slots folded into Max agents, operator-only Slots doors, docs moved, lock/reset_billing/migration fixes. Quick gate green; PR #6640 queued. Visual check done (1440/390 clean). Follow-up draft #9059. Memory: none applied.

Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)