Public: anyone can read this; the crew can change it.
Reserved names are held where accounts and orgs are made; seeds opt out by name #935
Check · Review · Land · Live done — Landed and live in production.
Closes #720
shipped production is serving it for issue #720 — its issue is already done deploy 4183511
Sign in to join this conversation.
new above
offline
Closes #720
The reserved-name rule now lives where accounts and orgs are made, so a way in added later inherits it without calling anything.
Where the rule lives
createUser(core/users.ts) already refused a reserved name for every non-agent account (from #662's round two). It gainsreservedSelf: the account naming this one, whose own handle does not count against it. That lets the everyday account drop its separate check.createOrgin core/orgs.ts now refuses a reserved name itself (name_reserved), with a namedallowReservedopt-out. The separate check in actions/orgs.ts is gone.Seeds opt out by name, nothing by default: a spawned child's founder (
allowReserved: true) and its org ({ allowReserved: true }). The spawner was already held to the rule on the parent. Agents keep their own rule.Every door
signUp→createUserensureEdgeUser→createUsercreateUserwithreservedSelf, so the separate call is gonecreateUser; a reserved name now says "That name is reserved." and does not spend the linkcreateOrgNo MCP tool, admin page or import makes accounts today; any added later goes through
createUserorcreateOrg.Tests (written refusing first)
createOrgrefuses an agent-with-role name without the opt-out and makes a seed with it; the API refusestrevat0,scout-botandsettingswith 422.ada-me) is still allowed (existing test).adminis refused with "That name is reserved." and the same link then claims.Widely used signatures: core
createOrggains an optional 4th argument, andCreateUserInputgains optionalreservedSelf. Existing callers are unchanged. No hot files.🤖 Generated with Claude Code