From b88bb8a8bcdc27a092f902f7adbe90373f15732e Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Thu, 10 Sep 2026 18:44:53 +0200 Subject: docs(mnp): the protocol reference, brought to the cleanup push MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MESHBAY_NODE_PROTOCOL.md and playlists.md move into the repository, where a reader can follow them. The protocol reference was written against the tree before the cleanup landed and described three things that no longer exist. Corrected here rather than left to be discovered: * member_upload is gone from the handshake ack and from the message catalogue. Whether a member may write is a property of each root, and a summary field beside the authoritative one is a second source for one question — whichever the reader consults first decides it. * video_root, audio_root and photo_roots are gone from the ack, the signed-op table and the message reference. app_directories is not "the general form" of three narrower ops any more; it is the only one. What survives is their storage key on the node, because that is a key on an operator's disk rather than on the wire, and a node upgraded into this has to find its own configuration. * The sender-key implementation the chat section pointed at has been deleted, along with the ratchet. The argument for deriving a key per device stands on its own now instead of pointing at a module to compare against. playlists.md is added as written — a design for a feature that is not built, and the first one to need per-account state spanning several groups on several nodes. Its decided shape is summarised in MESHBAY_DESIGN.md section 9.10. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01YVoHVCcfBqud6ZjG4db3y7 --- docs/playlists.md | 516 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 516 insertions(+) create mode 100644 docs/playlists.md (limited to 'docs/playlists.md') diff --git a/docs/playlists.md b/docs/playlists.md new file mode 100644 index 0000000..aef2366 --- /dev/null +++ b/docs/playlists.md @@ -0,0 +1,516 @@ +# MeshBay — Playlists (design) + +> Status: **proposal**, not implemented. This is M4 in `docs/musicbay.md` §9, +> which deferred it for the right reason: *"a genuinely new category of +> per-account node state, not covered by anything E9 already enumerates — +> needs its own design pass (ownership, sync across devices, whether it's +> node-local or something else)"*. This document is that pass. +> +> Read `docs/musicbay.md` first — Music is built, and this adds nothing to +> its playback path. Read `docs/refactoring-search.md` second: the +> cross-group consolidation this feature needs already exists there, and +> most of the work is recognising that. +> +> **Scope, settled before writing this:** a playlist belongs to **one +> account** and is never shared with other group members. That answer is what +> keeps §5 small; see §10 for what changes if it is ever reversed. +> +> Follows the project convention: every claim names the adversary it holds +> against (§9). + +--- + +## 0. What was asked, in one paragraph + +Somewhere to keep a user's playlists, so that they survive a cache clear and +turn up on that person's other devices — and so that one playlist may hold +albums from **several different groups on several different nodes**, the way +the Search page already searches a consolidated view. With the constraint, +stated up front, that nodes go offline for an evening or for a month and that +this must not corrupt anything. + +--- + +## 1. What this design does not reopen + +- **Views over the index, never a catalogue** (`desktop-client-v1.md` §6.10, + draft-v6 §2.7). A playlist is a list of *references*; it creates no second + identity for a file and no server-side database of content. +- **Nothing about content reaches the hub** (H7, draft-v6 §2.5). §3.1. +- **No new streaming path.** `musicbay.md` §2.2 stands untouched: a track is + fetched through `pipelinedDownload` and handed to `