diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-23 17:46:48 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-23 17:46:48 +0200 |
| commit | 5bce0acad6d10f9b952874f1359406b4eae3a8f9 (patch) | |
| tree | 7fefe593c03430c31f327c955fb25a703e463bf2 /packages | |
| parent | d30e95b2ce1ffe9dc4655855406f2784b5f7af34 (diff) | |
| download | meshbay-5bce0acad6d10f9b952874f1359406b4eae3a8f9.tar.gz | |
docs: drop the invitation-link plan from the tree
The plan was a working document; what it decided lives in
MESHBAY_DESIGN.md and MESHBAY_NODE_PROTOCOL.md. Code and tests now
cite those instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages')
6 files changed, 6 insertions, 6 deletions
diff --git a/packages/meshbay-common/src/meshbay_common/adminop.py b/packages/meshbay-common/src/meshbay_common/adminop.py index 23040be..c679718 100644 --- a/packages/meshbay-common/src/meshbay_common/adminop.py +++ b/packages/meshbay-common/src/meshbay_common/adminop.py @@ -36,7 +36,7 @@ ADMIN_TRANSCRIPT_PREFIX = b"meshbay:admin:v1" OP_FILE_DELETE = "file_delete" OP_DIR_DELETE = "dir_delete" OP_INVITE_CREATE = "invite_create" -# An invitation bound to no account (docs/invite-links.md). Its own op rather +# An invitation bound to no account (docs/MESHBAY_DESIGN.md §3.4). Its own op rather # than `invite_create` with an empty subject: that subject is the invitee, and # what the operator is shown before signing has to name the outcome (H5) — here # "a link into this group", `link:<group_id>`. diff --git a/packages/meshbay-node/src/meshbay_node/ops.py b/packages/meshbay-node/src/meshbay_node/ops.py index e6b2d1f..aae0a33 100644 --- a/packages/meshbay-node/src/meshbay_node/ops.py +++ b/packages/meshbay-node/src/meshbay_node/ops.py @@ -243,7 +243,7 @@ async def create_link_invite(state: dict, group_id: str, *, Nothing is registered on the hub here, unlike `create_invite`: there is no account to register yet. The hub half is a ticket the inviter's client asks - the hub for, bound to the invitee's address (docs/invite-links.md §3.5). + the hub for, bound to the invitee's address (docs/MESHBAY_DESIGN.md §7.3). """ roster = _roster(state) _group_ctx(state, group_id) diff --git a/packages/meshbay-node/src/meshbay_node/roster.py b/packages/meshbay-node/src/meshbay_node/roster.py index 8360df3..7bc2067 100644 --- a/packages/meshbay-node/src/meshbay_node/roster.py +++ b/packages/meshbay-node/src/meshbay_node/roster.py @@ -61,7 +61,7 @@ DEFAULT_DEVICE_REQUEST_TTL = 3600 # What an invitation is bound to. An `account` code names its user_id when it is # issued; a `link` code names nobody until it is redeemed, because a link goes to -# someone who may not have an account yet (docs/invite-links.md). The kind is a +# someone who may not have an account yet (docs/MESHBAY_DESIGN.md §3.4). The kind is a # column rather than an empty user_id so that "bound to nobody" can never be # read as "bound to anybody" — the mistake AV1 records, once per codebase. KIND_ACCOUNT = "account" diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py index 95b628f..b7c8c92 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py @@ -1242,7 +1242,7 @@ class WebRTCPeerSession: """ Issue a code bound to no account, for an invitation link — into the group this connection authenticated to, and no other: a link names its - group, so the operator signs for exactly that one (docs/invite-links.md). + group, so the operator signs for exactly that one (docs/MESHBAY_DESIGN.md §3.4). """ group_id = self._group_id or "" if not group_id: diff --git a/packages/meshbay-node/tests/test_link_invites.py b/packages/meshbay-node/tests/test_link_invites.py index f5081d2..10f9ca8 100644 --- a/packages/meshbay-node/tests/test_link_invites.py +++ b/packages/meshbay-node/tests/test_link_invites.py @@ -4,7 +4,7 @@ Invitation links: a code bound to no account until somebody redeems it. A link is sent to someone who may not have an account yet, so its code cannot name one. That makes it a bearer code at the node — the hub's ticket, bound to a verified address, is what decides who can reach the node at all -(docs/invite-links.md §3). Everything here is a way a bearer code could be made +(docs/MESHBAY_DESIGN.md §3.4). Everything here is a way a bearer code could be made to mean more than "one new member of this group, once", or a way an unbound row could leak into the code paths written for bound ones. The second family is the one to watch: `user_id = ''` must never read as "anyone" (AV1). diff --git a/packages/meshbay-node/tests/test_webrtc_transport.py b/packages/meshbay-node/tests/test_webrtc_transport.py index c0dc6d1..0245c4e 100644 --- a/packages/meshbay-node/tests/test_webrtc_transport.py +++ b/packages/meshbay-node/tests/test_webrtc_transport.py @@ -1449,7 +1449,7 @@ async def _bearer_join(transport, sk_hub, user_id, peer_id, code, x25519_keypair async def test_a_link_is_issued_signed_redeemed_once_and_cancellable( sk_node, sk_hub, gek, shared_dir, tmp_path, x25519_keypair): """ - Invitation links over a real DataChannel (docs/invite-links.md §3.4). + Invitation links over a real DataChannel (docs/MESHBAY_NODE_PROTOCOL.md §8.6). The operator signs `invite_link_create` naming the outcome, `link:<group>`; the first account to bring the code is admitted and handed the key; the |