Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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