From cb0913388d7f94bbe1d69efbff9aa9cc0d16b9eb Mon Sep 17 00:00:00 2001 From: wtclaude Date: Wed, 23 Sep 2026 05:52:56 -0500 Subject: [PATCH] =?UTF-8?q?feat(sidecar):=20protocol=207=20=E2=80=94=20the?= =?UTF-8?q?=20raid=20frame,=20and=20again=20no=20new=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit entity.destroyed gains the cupboard's authorised list and covers doors, walls and the cupboard. The sidecar stores and serves events as they arrive, so only the number moves. The bump is what stops a website that alerts on `authorized` from pairing with a protocol-6 plugin that never sends it, which would read every raid as a base with no cupboard. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- sidecar/src/main.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sidecar/src/main.rs b/sidecar/src/main.rs index 779b18c..b6a9eeb 100644 --- a/sidecar/src/main.rs +++ b/sidecar/src/main.rs @@ -118,9 +118,21 @@ use tracing_subscriber::EnvFilter; /// `truncated` when it had to stop, because a board that never arrived would read as a server /// with no clans. /// +/// # Protocol 7 — a raid frame that names who lives there +/// +/// `entity.destroyed` widens to doors, external walls and the tool cupboard, and gains the +/// cupboard's `buildingId` and its `authorized` list, which is what lets the website send the +/// raid alert to the people whose base it was (the module's PLAN.md §25). +/// +/// **Again nothing here changed but this number.** The frame is an `event`, stored and served as +/// it arrived. The bump exists because a website that alerts on `authorized` must not pair with a +/// plugin that never sends it — against protocol 6 it would read every raid as a base with no +/// cupboard, and alert nobody while looking healthy. +/// /// `docs/rust-link/PROTOCOL.md` is the specification — §8 the read path, §9 identity, §10 the -/// mirror, §11 configuration, §12 clans; this constant is one of its four declaration sites. -pub const PROTOCOL_VERSION: u32 = 6; +/// mirror, §11 configuration, §12 clans, §13 the raid frame; this constant is one of its four +/// declaration sites. +pub const PROTOCOL_VERSION: u32 = 7; fn main() -> anyhow::Result<()> { let args = match cli::parse(std::env::args().skip(1)) {