aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-common/src/meshbay_common
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-common/src/meshbay_common')
-rw-r--r--packages/meshbay-common/src/meshbay_common/__init__.py8
-rw-r--r--packages/meshbay-common/src/meshbay_common/adminop.py5
-rw-r--r--packages/meshbay-common/src/meshbay_common/protocol.py6
3 files changed, 18 insertions, 1 deletions
diff --git a/packages/meshbay-common/src/meshbay_common/__init__.py b/packages/meshbay-common/src/meshbay_common/__init__.py
index e8a9579..b86dec2 100644
--- a/packages/meshbay-common/src/meshbay_common/__init__.py
+++ b/packages/meshbay-common/src/meshbay_common/__init__.py
@@ -276,5 +276,11 @@ __version__ = "0.19.0"
# 6.1 (2026-10-08) adds the signed `chat_purge` / `chat_purge_ack`: the operator
# deletes a group's stored chat. Additive — a 6.0 node answers nothing, as for
# any unknown type, and nothing else changes. The floor stays at 4.0.
-MNP_VERSION = "6.1"
+#
+# 6.2 (2026-10-11) adds the signed `root_pause` / `root_resume` and their acks:
+# the operator stops a root's indexing and starts it again, and each root in
+# the roots table carries `paused`. Additive — a 6.1 node answers nothing to
+# either, and a client that ignores `paused` shows a paused root as an ordinary
+# one. The floor stays at 4.0.
+MNP_VERSION = "6.2"
MHP_VERSION = "0.1"
diff --git a/packages/meshbay-common/src/meshbay_common/adminop.py b/packages/meshbay-common/src/meshbay_common/adminop.py
index f59b420..43d2a7f 100644
--- a/packages/meshbay-common/src/meshbay_common/adminop.py
+++ b/packages/meshbay-common/src/meshbay_common/adminop.py
@@ -113,6 +113,11 @@ OP_CHAT_EPOCH = "chat_epoch"
OP_CHAT_PURGE = "chat_purge"
OP_ROOT_EJECT = "root_eject"
OP_ROOT_PLUG = "root_plug"
+# Stop and restart the indexing of one root (MNP 6.2). The subject is the root
+# name, like eject and plug. Pausing narrows what the node does and resuming
+# returns to what the operator already shared, so neither widens anything.
+OP_ROOT_PAUSE = "root_pause"
+OP_ROOT_RESUME = "root_resume"
# Also gone with 6.0, because no client ever sent them: `gek_rotate`,
# `member_unpin`, `transfer_limits` and `group_detach`. Rotating the group key,
# forgetting an identity, the per-member transfer caps and no longer hosting a
diff --git a/packages/meshbay-common/src/meshbay_common/protocol.py b/packages/meshbay-common/src/meshbay_common/protocol.py
index 5073b66..e5ceaa7 100644
--- a/packages/meshbay-common/src/meshbay_common/protocol.py
+++ b/packages/meshbay-common/src/meshbay_common/protocol.py
@@ -252,6 +252,12 @@ class MNP:
ROOT_EJECT_ACK = "root_eject_ack"
ROOT_PLUG = "root_plug" # operator → node: re-enable an ejected root
ROOT_PLUG_ACK = "root_plug_ack"
+ # Operator → node: stop / restart indexing one root (MNP 6.2). The acks are
+ # broadcast, like eject's, so every open table shows the new state.
+ ROOT_PAUSE = "root_pause"
+ ROOT_PAUSE_ACK = "root_pause_ack"
+ ROOT_RESUME = "root_resume"
+ ROOT_RESUME_ACK = "root_resume_ack"
# Member → node: who is in this group and which device keys they hold, with
# the countersignature that admitted each one. Scoped to one group and
# answers any member of it, because the point is that a member