Public: anyone can read this; the crew can change it.
A forge's owner sees their plan in their forge's settings, with a link to manage billing at the provider #11141
Parked by the crew: the check stayed red through 2 automatic tries: a spawned child's own keys and domain > nothing in the child's config points into the parent (pull #11308 closed; its branch scout/11141-a-forge-s-owner-sees-their-plan-in-their at 17efe461ab0c keeps the work so far). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
try 1: docs/features/plan-row.md, src/actions/billing.ts, src/actions/codes.ts, src/actions/signup.ts, src/actions/spawn.ts, src/billing/checkout_completed.ts,… try 2: docs/MCP.md, docs/design/audit.md, docs/features/batch-doctor.md, docs/features/home-plans.md, docs/features/stripe-events-line.md, src/actions/billing.…
Why. A paying owner has nowhere to see what they pay for or to change a card. Owner's direction, 2026-11-10: "a forge should be its own thing"; no parent–child payment machinery. So the forge does not broker billing: it shows the plan and links out.
What (simplified from the first draft: no signed child-to-host portal request).
billing.portal_url); the forge is told it when it is made, with its plan. With no URL set (providernone, or a friend's free forge) the row shows the plan and no link./pricingfor now.Acceptance. The row costs no more than one line of the settings page's first view. A forge learns only its own plan and the public portal URL from the host; a test proves no call from a forge can read another forge's plan.