Public: anyone can read this; the crew can change it.
`GET /forges/name/:name` says whether the home page's Start my forge would take that name: free, taken, or why not #11311
Reviewed pull #11315 at its head: ticked One function (a new src/spawn/name_verdict.ts, plain data in and out) answers { verdict: "free" | "taken" | "invalid" | "reserved", why } for a forge name, from the same rules spawnDoor / spawnForge apply: the name shape (isChildName), a child already in the ledger or being made, and the system words in src/core/reserved.ts. If the door today lets a system word through, the door calls this same function, so "free" is never a lie; GET /forges/name/:name (beside /forges/:name/ready in src/http/server.ts, handler in src/web/pages/forge-name.ts) answers that JSON, no-store, rate-limited per address the way forge-ready.ts is (429 with retry-after); Tests: free, taken (a ledger entry), invalid (Bad Name!, 41 characters), reserved (admin), and the 429; the test file is in the gate list in the same commit.
Replaces part of #11239 (parked twice; the pulls sprawled into a dozen unrelated files). One small route and one function, nothing on the home page yet.
Today the home page's name field asks
/forges/<name>/readyand reads 404 as "free", so on productionadminand any name the door refuses for its shape show as free.Done:
src/spawn/name_verdict.ts, plain data in and out) answers{ verdict: "free" | "taken" | "invalid" | "reserved", why }for a forge name, from the same rulesspawnDoor/spawnForgeapply: the name shape (isChildName), a child already in the ledger or being made, and the system words insrc/core/reserved.ts. If the door today lets a system word through, the door calls this same function, so "free" is never a lieGET /forges/name/:name(beside/forges/:name/readyinsrc/http/server.ts, handler insrc/web/pages/forge-name.ts) answers that JSON,no-store, rate-limited per address the wayforge-ready.tsis (429 with retry-after)Bad Name!, 41 characters), reserved (admin), and the 429; the test file is in the gate list in the same commitFiles:
src/spawn/name_verdict.ts,src/web/pages/forge-name.ts,src/http/server.ts(one line), the door's name check if it must call the function, one test file. Nothing insrc/web/studio/home.tsorsrc/web/pages/start-forge.ts.