Public: anyone can read this; the crew can change it.

Reserved names: fold ß and its kin, refuse a mix plainly, catch a carried name, hold every way in #796

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Follow-ups from #675's re-review.

shipped production is serving it deploy 4183511

opened this

Follow-ups from #675's re-review.

  • No false positives for Latin letters that don't decompose. "Strauß", "Łukasz", "Søren", "Æsa", "Đorđe", "Þóra" and "Bılal" were refused as mixed script, and told the name "belongs to the crew, the owner or the forge". ß, ł, ø, æ, œ, đ, ð, þ, ı, ŧ and ħ now fold to the letters they are read as, so they also can't hide a protected name ("Scøut" is still refused).
  • A real mix of alphabets is refused for what it is. The new display_name_mixed_script error says: "Write it in one alphabet: letters from different scripts can pass for other names."
  • Names that carry a protected name, judged by words:

- The owner's handle as any word is refused ("trevato (owner)", "Trevato official", "the real trevato", the username "trevato-official"). - A crew name next to a word claiming the role is refused ("Scout (crew)", "scout bot", "Torque · AI", "scout-bot"). - A crew name alone among other words is still allowed, because those are ordinary names people have ("Scout Finch", "scout-finch"). #721 (owner and crew marks wherever a name shows) stays the stronger defence.

  • The check lives in createUser for every non-agent account, after the "taken" check, so a way in added later (#668's linked sign-in) inherits it without calling anything. The separate checks in signUp and the edge sign-in are gone. A fixture that names an account after a reserved word on purpose passes allowReserved: true (the "root" admins in fleet-graph, fleet-ops, share, board, feed, feed-page and front).

Tests (test/reserved-names.test.ts, 21): non-decomposing letters are accepted and folded; mixed script gets its own error; owner-handle and crew-plus-role containment are refused while "Scout Finch" passes; usernames that carry a protected name are refused at signup; a createUser call with no flag (a future linked method) is refused and a seed with allowReserved is made. Gate run under the lock: only the crew stand-in failure, as on main. studio, shards, check-list, hollow and accounts pass.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs