From 07be13a0911b8f16f9e92e7b7e02425575640108 Mon Sep 17 00:00:00 2001 From: Bradley Axen Date: Thu, 24 Sep 2026 14:15:43 -0700 Subject: [PATCH 1/3] docs(vision): add /buzz/v1 read endpoints to the protocol contract Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: Bradley Axen --- VISION.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/VISION.md b/VISION.md index 900e5a9475b..ef9baad17a0 100644 --- a/VISION.md +++ b/VISION.md @@ -74,6 +74,8 @@ Buzz extends the standard Nostr event format with custom kind numbers for enterp New message type? New kind integer. Zero breaking changes. +**Writes are Nostr; reads can be shaped for the client.** Every write is a signed Nostr event, and Nostr reads must cover all of that state, so a standards-leaning Buzz client stays possible. On top of that, the relay serves namespaced `/buzz/v1/...` endpoints: backend-for-frontend reads for specific use cases (thread catch-up, sync) over the same authoritative store. One expected exception: unread state is a pure side channel, not Nostr events. We start with this rule and refine it as more exceptions show up. + --- ## Architecture From 69b8ffef10b8f7d62c0df582e34df3bd8379a920 Mon Sep 17 00:00:00 2001 From: Bradley Axen Date: Thu, 24 Sep 2026 17:37:07 -0700 Subject: [PATCH 2/3] docs(vision): frame the protocol line as conversation-in-Nostr plus accessories Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: Bradley Axen --- VISION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VISION.md b/VISION.md index ef9baad17a0..36d386d3deb 100644 --- a/VISION.md +++ b/VISION.md @@ -74,7 +74,7 @@ Buzz extends the standard Nostr event format with custom kind numbers for enterp New message type? New kind integer. Zero breaking changes. -**Writes are Nostr; reads can be shaped for the client.** Every write is a signed Nostr event, and Nostr reads must cover all of that state, so a standards-leaning Buzz client stays possible. On top of that, the relay serves namespaced `/buzz/v1/...` endpoints: backend-for-frontend reads for specific use cases (thread catch-up, sync) over the same authoritative store. One expected exception: unread state is a pure side channel, not Nostr events. We start with this rule and refine it as more exceptions show up. +**The conversation is Nostr; Buzz adds accessories around it.** Messages, threads, reactions, and the rest of the conversation are signed Nostr events, and Nostr reads must cover all of that state, so a standards-leaning Buzz client stays possible. Around it, the relay serves accessories that don't fit that shape: Blossom media, git smart HTTP, workflow webhooks, derived unread counts (durable read state stays in NIP-RS events), and namespaced `/buzz/v1/...` endpoints for backend-for-frontend reads (thread catch-up, sync) over the same authoritative store. We start with this rule and refine it as more cases show up. --- From f8a04874cd025ca999b98d728bed6cd723964984 Mon Sep 17 00:00:00 2001 From: Bradley Axen Date: Thu, 24 Sep 2026 17:53:21 -0700 Subject: [PATCH 3/3] docs(vision): drop NIP-RS parenthetical Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: Bradley Axen --- VISION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VISION.md b/VISION.md index 36d386d3deb..96491c7c653 100644 --- a/VISION.md +++ b/VISION.md @@ -74,7 +74,7 @@ Buzz extends the standard Nostr event format with custom kind numbers for enterp New message type? New kind integer. Zero breaking changes. -**The conversation is Nostr; Buzz adds accessories around it.** Messages, threads, reactions, and the rest of the conversation are signed Nostr events, and Nostr reads must cover all of that state, so a standards-leaning Buzz client stays possible. Around it, the relay serves accessories that don't fit that shape: Blossom media, git smart HTTP, workflow webhooks, derived unread counts (durable read state stays in NIP-RS events), and namespaced `/buzz/v1/...` endpoints for backend-for-frontend reads (thread catch-up, sync) over the same authoritative store. We start with this rule and refine it as more cases show up. +**The conversation is Nostr; Buzz adds accessories around it.** Messages, threads, reactions, and the rest of the conversation are signed Nostr events, and Nostr reads must cover all of that state, so a standards-leaning Buzz client stays possible. Around it, the relay serves accessories that don't fit that shape: Blossom media, git smart HTTP, workflow webhooks, derived unread counts, and namespaced `/buzz/v1/...` endpoints for backend-for-frontend reads (thread catch-up, sync) over the same authoritative store. We start with this rule and refine it as more cases show up. ---