mirror of
https://github.com/block/buzz.git
synced 2026-10-31 06:21:34 +00:00
The public builders could return relay-rejected events: build_persona_event
took any d-tag verbatim (the relay enforces ^[a-z0-9][a-z0-9_-]{0,63}$ on
persona slugs), and the delete builders interpolated an unvalidated owner
pubkey into the a-tag coordinate (the relay hex-decodes it).
build_persona_event now rejects a d-tag that is not a fixed point of
normalize_d_tag — validate, never rewrite, so an existing coordinate can't
silently move. The delete builders delegate to build_delete_addressable,
which enforces a 64-hex lowercase-normalized owner and a non-empty d-tag.
Team event d-tags stay verbatim: Desktop publishes raw UUIDs and ids like
builtin-team:welcome there.