feat(sidecar): protocol 11 — four map forwards (phase 14)
All checks were successful
PR Checks / rust-gates (pull_request) Successful in 1m17s

GET /map, GET /map/chunk, POST /map/render and GET /map/live, stamped and
forwarded like the reward routes (PLAN.md §30.2). Nothing is stored: the
picture passes through in 512 KiB slices and positions are never filed
(D111). A test asserts a base64 slice plus its envelope fits the game
link's 1 MiB line cap on the way back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-09-25 00:11:19 -05:00
parent 06c3ed79b4
commit 9e2a83d7c9
2 changed files with 91 additions and 2 deletions

View File

@@ -153,10 +153,18 @@ use tracing_subscriber::EnvFilter;
/// passes through untouched like the rest of that body. The tally, the kit catalogue and the chat
/// memory all live in the plugin.
///
/// # Protocol 11 — the map
///
/// `GET /map`, `GET /map/chunk`, `POST /map/render` and `GET /map/live`: the picture of this
/// wipe's map, in slices, and everything that moves on it (the module's PLAN.md §30). Four more
/// thin forwards. **Nothing here is stored**: the picture passes through to the website, which
/// keeps it, and positions are asked for while somebody is looking and never touch the database
/// (D111). Which layer a viewer may see is decided on the website, never here.
///
/// `docs/rust-link/PROTOCOL.md` is the specification — §8 the read path, §9 identity, §10 the
/// mirror, §11 configuration, §12 clans, §13 the raid frame, §14 the leases, §15 the world verbs,
/// §16 the rewards; this constant is one of its four declaration sites.
pub const PROTOCOL_VERSION: u32 = 10;
/// §16 the rewards, §17 the map; this constant is one of its four declaration sites.
pub const PROTOCOL_VERSION: u32 = 11;
fn main() -> anyhow::Result<()> {
let args = match cli::parse(std::env::args().skip(1)) {