Files
buzz/crates
fsola-sq 7d00c70805 feat(relay): publish NIP-FI verified profiles (BUZZ-433) (#8774)
## Summary

Publish historical verified names from valid human NIP-FI assertions as
relay-signed kind 30382 events. Keep profile publication optional and
separate from access decisions. Disconnects and access changes initiate
asynchronous cleanup without retracting profiles verified after the
original trigger time.

Publish `display_name` as the chosen short display handle and `username`
as the account handle. Carry optional `full_name` in the signed
assertion into a matching kind 30382 tag. Adding, changing, or removing
the full name updates the profile immediately; retractions remove every
name field. Older profiles without `full_name` remain valid.

Adds opt-in issuer labels, discovery, and schema migration 0079. Deploy
and drain all access writers before enabling publication; use a stable
relay key and a shared publication-policy revision. Update clients
before enabling assertions with `full_name`.

### Related issue

Implements the Relay portion of [the verified-profile
specification](https://github.com/block/buzz/pull/8745) at `500829a9`
(BUZZ-433). This is the closest existing PR found. Companion client:
https://github.com/block/buzz-app/pull/2005. Companion issuer:
[KGoose/bb-identity
#144773](https://github.com/squareup/cash-server/pull/144773), which
includes `nostr_public_profile` in valid human assertions.

### Testing

Passed the lifecycle test against a disposable local PostgreSQL
database, including full-name addition, change, and removal: `cargo test
-p buzz-db
store::verified_profiles::postgres_tests::profile_lifecycle_retains_assertion_ordering
--lib -- --ignored --exact` with `BUZZ_TEST_DATABASE_URL` set to that
database.

Independent agent review found no remaining blockers. No live Relay test
or human verification yet. This remains a draft and does not attest the
repository's human-testing checklist.

For end-to-end testing, enable publication for a test issuer, admit a
member with a signed profile claim, and query kind 30382. Verify short
display handles, optional full names, changed names, missing-claim
retraction, disconnect cleanup, and a later admission surviving delayed
cleanup. Check the companion app against the same relay.

Generated with Codex

---------

Signed-off-by: Franco Sola <fsola@squareup.com>
Signed-off-by: Bradley Axen <baxen@squareup.com>
Co-authored-by: Bradley Axen <baxen@squareup.com>
Co-authored-by: mbot <3754f8729004d95654c46dbab3129e4ab9ef05cc2534e2a3fbfc155983bd637b@buzz.block.builderlab.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Codex <noreply@openai.com>
2026-10-31 15:42:34 +00:00
..