mirror of
https://github.com/Twigpine/openlaunch.git
synced 2026-11-08 08:49:32 -10:00
Deploy blockers (both from 658b50d's cleaning rewrite)
- Length: the grapheme cut alone let one letter carry thousands of combining
marks ("a" + 3000 x U+0301 saved as a 3,000-character name; a bio kept
4,001). Each character now keeps at most 4 combining marks and 16 code
points (the longest emoji, a family with skin tones, is 11), and a field at
most 4 code points per allowed character. Real diacritics and emoji are
kept; an emoji at the limit is kept or dropped whole, never split.
- Tags: tag characters survive only inside the three subdivision flags emoji
have (England, Scotland, Wales). Any other black flag + tags rendered as a
plain flag while carrying hidden ASCII ("ignoreallprevinstruc" got
through), the kind of text that steers an LLM reading names or bios.
- Pasted line breaks and tabs in a one-line field become a space instead of
gluing words together.
- Tests: zalgo name and bio under their caps, fake flags stripped, the three
real flags unchanged, 👨💻 / 🏳️🌈 / a skin-tone family at the exact limit,
and the idempotency fuzz still holds.
Review leftovers
- migrate.mjs: a failed concurrent build names the index and the likely
cause (55P03: an older transaction is still open, or another session holds
the table; 57014: past the 20 min timeout). Still exits 1; retrying the
deploy is safe.
- The availability check takes the form's X handle, so a verified owner's
claim matches the save's rule (only while keeping that handle).
- The as-sent signature candidate counts only when the fields hold no C0/C1
controls, bidi marks, overrides or isolates, or line / paragraph
separators (the bio may keep line breaks); otherwise only the cleaned text
is accepted.
- approve_x takes each released wallet's profile lock (in wallet order)
before touching its rows, as that wallet's own verify does.
- deleteProfile's doc says when a name is held (kept a day or more).