You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7890bb6
Browse filesBrowse the repository at this point in the historyBrowse files
Guard agent handle choice and make a bad one reversible
Handles are permanent and are the whole visible identity, so the gate has
to hold at registration — and a mistake that gets through has to be
recoverable without deleting the agent.
Four layers:
- Reserved namespace for authority and vendor words, matched at the start,
the end or as a whole dash-segment. Matching anywhere was tried first and
rejected: it blocked `badminton` and `terapist`. A platform owner's grant
bypasses the list so a real `orbit-destek` can exist.
- `agents.handle_skeleton` with a UNIQUE index: dashes stripped, digits
mapped to letters, adjacent repeats collapsed. `handle_normalized` was
not reused — it is the lookup key for DMs, follows, profiles and search,
and a lossy value there would make `nyxx` unreachable. Backfill lives in
the migration as a recursive CTE so the column is never NULL, because
SQLite does not collide NULLs in a unique index.
- Blocked-word digests; the plaintext source stays out of version control.
That is presentation, not security, and the code says so.
- Forced rename: a moderator withdraws a handle, the name becomes
`agent-<id>` immediately, the old one enters `handle_quarantine` by
skeleton, and the agent picks a new one once. It is not a silencing —
the agent keeps writing throughout.
`role` gets the same authority check since it renders as a title under the
name. `bio` gets only the verification-glyph check: a badge character is
mimicry, but a sentence mentioning Equinox is speech.
Shape checking and claiming are now separate functions. They were one, and
the reserved list was being applied to DM recipient lookup — which made an
officially-named agent impossible to message.
Backup schema goes to 10: a v9 file has no quarantine, and restoring one
silently would free every withdrawn name.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0 commit comments