Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion NOSTR.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ PGPASSWORD=buzz_dev psql -h localhost -U buzz -d buzz -c \
| **Add user (kind:9000)** | ✅ | Open: any user, subject to target's `channel_add_policy` (`owner_only`/`nobody` can block). Private: owner/admin only. Self-add bypasses agent policy but not private-channel auth. |
| **Remove user (kind:9001)** | ✅ | Self-remove allowed (with last-owner guard). Removing others: owner/admin only. |
| **Edit group metadata (kind:9002)** | ✅ | `name`/`about` tags: owner/admin. `topic`/`purpose` tags: any member. |
| **Admin delete event (kind:9005)** | ✅ | Event author can always delete own. Otherwise owner/admin required. Target must be in same channel. |
| **Admin delete event (kind:9005 - REVIEW)** | ✅ | Event author can always delete their own event. Otherwise owner/admin required. Target must be in same channel. |
| **Group deletion (kind:9008)** | ✅ | Owner only. |
| **Leave group (kind:9022)** | ✅ | Any member. Last-owner guard prevents orphaned groups. |
| **Group metadata (kind:39000)** | ✅ | Relay-signed; always `d`, `name`, `closed` tags; `about` only if description non-empty; `private` if applicable; `hidden` for DM channels |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ See [here](https://engineering.block.xyz/blog/run-your-own-buzz-relay) for detai

Don't build from source, and don't use the OSS release — use the internal build. It comes pre-wired to the Block relay and agent provider, so it works out of the box with nothing to configure.

Download the latest build from [`squareup/buzz-releases` releases](https://github.com/squareup/buzz-releases/releases/latest) and install it.
Download the latest build from the [`squareup/buzz-releases`](https://github.com/squareup/buzz-releases/releases/latest) releases page and install it.

### I want to build & run from source

Expand Down
6 changes: 3 additions & 3 deletions docs/multi-tenant-relay.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
This document specifies the data and authorization model that lets one shared
Postgres instance, served by N stateless relay processes, host M independent
**communities** without one community observing or acting on another, and gives
a formal proof of its safety properties. It proves two families of property:
a formal proof of its safety properties. It proves two families of properties:
**isolation** — a community is *non-interfering* with every other community
across the relay's logical interface (query results, authorization decisions,
emitted errors, and audit-chain contents) — and **authorization soundness** — no
Expand Down Expand Up @@ -443,7 +443,7 @@ predicate fail closed rather than leak (Theorem I4).
at `:84-86` references this obligation as "P3."

P-RESOLVE is the load-bearing *application* assumption for channel-bearing events
and P-RESOLVE-HOST is its channel-less counterpart — together the fence the
and P-RESOLVE-HOST is its channel-less counterpart — together they fence the
`h`-tag and claimed-community adversary cannot circumvent. A-RLS-1..5 are the
load-bearing *backstop*.

Expand Down Expand Up @@ -478,7 +478,7 @@ load-bearing *backstop*.
- **I5 (Admission fence).** Channel membership and channel-less read capability
exist only for actors admitted to *that* community. The NIP-43 allowlist is the
`admittedMembers` relation keyed on `(community, actor)`; `AddMembership` and
every channel-less read are gated on `IsAdmitted(c, a)`, and `Inv_AdmissionFence`
every channel-less read is gated on `IsAdmitted(c, a)`, and `Inv_AdmissionFence`
quantifies over every membership *and* every recorded channel-less read,
requiring same-community admission on both — the channel-less branch additionally
binding `HostCommunity[host] = community`, so the host axis is fenced here too.
Expand Down
Loading