Where payment sits today, and where it’s not
The first free create is not pay-gated. The create slider calls requestSpace() unless a plan was already picked:
// home/web/static/home.js:3875-3878
onEleven: () => {
$("create-back").classList.add("hidden");
return planChoice && planChoice.tier ? requestPaidSpace() : requestSpace();
},
Payment moves to the front only when a free create is refused. That happens when the account is over its free quota (default 1 free space, cloud.go:653) or the free pool is full. The person is bounced to a plan picker, then Stripe Checkout, and the space is created after payment:
// home/web/static/home.js:3884-3887
if ((code === "quota_exceeded" || code === "free_pool_full") && billingTiers.length) {
openPlanBounce((err && err.message) || "");
return;
}
// cloud.go:331 — "this account already has %d free %s (the limit) — upgrading a space frees its slot, and so does deleting one you no longer use"
// pool.go:263 — "The free pool is full right now. Paying supports free spaces for those who can't — as more people upgrade, the pool grows. Check back soon, or upgrade to create a space now."
The paid branch’s sub-line: “Slide, and we'll take you to the payment — your space is created the moment it's paid.” (home.js:4031-4033).
The real front-door gate is membership, not money. “+” only appears once the account holds at least one space (home.js:2792-2794). The server enforces it with “You need at least one Eleven space before you can create a new one.” (home/provision.go:258-261). A signed-in account with no spaces sees “None (yet). Creating is invite-only for now.”
A plan step already exists, half-way through setup (web only, free spaces, when home serves a price book). It records “chose the {plan} plan — payment waits at the finish line”, and the finish offers a “Set up your plan” chip that opens home’s /#upgrade=<host>&tier=<key>. Paul’s target — always create free, then a plans step at the end of setup — is drawn as dashed cards below. The difference from today: the plan step currently sits before the key step, native has none, and the over-quota bounce still asks for payment first.