Merge branch 'fix/username-resolve-floor'
Some checks failed
CI / Go tests (push) Has been cancelled
CI / Admin web build (push) Has been cancelled
CI / Grammy store bot (push) Has been cancelled
CI / Docker main topology smoke (push) Has been cancelled

This commit is contained in:
Astra 2026-09-17 15:51:18 +01:00
commit 86c1ebc5de

View file

@ -15,12 +15,18 @@ import (
// the same global registry, so occupancy checks and username resolution have a // the same global registry, so occupancy checks and username resolution have a
// single source of truth. // single source of truth.
// //
// The editable slot keeps the service-level 5..32 length rule. Collectible names // The editable slot keeps the service-level 5..32 length rule for
// are minted by the operator and may be shorter: short names are precisely what // self-service (account.updateUsername / channels.updateUsername); the admin
// a collectible market distributes. They still have to be syntactically // path can go as low as 3 (see users.minUsernameLenAdmin /
// resolvable by clients, so the character rules are identical. // channels.minChannelUsernameLenAdmin). Collectible names are minted by the
// operator and may be shorter: short names are precisely what a collectible
// market distributes. Every kind of username still has to be syntactically
// resolvable by clients (contacts.resolveUsername, the public web landing
// page), so this floor doubles as the resolvability floor for the whole
// registry -- it must stay <= the lowest floor any write path can produce,
// currently 3.
const ( const (
MinCollectibleUsernameLength = 4 MinCollectibleUsernameLength = 3
MaxCollectibleUsernameLength = 32 MaxCollectibleUsernameLength = 32
// MaxPeerCollectibleUsernames bounds the collectible rows a single peer can // MaxPeerCollectibleUsernames bounds the collectible rows a single peer can
// hold. The TL usernames vector is rendered in full by clients, so the bound // hold. The TL usernames vector is rendered in full by clients, so the bound