feat(sidecar): protocol 10 — five reward forwards (phase 13b)
All checks were successful
PR Checks / rust-gates (pull_request) Successful in 1m13s

POST /tally/open, GET /tally/snapshot, POST /tally/close, GET /kits and
POST /chat: who took part in a run, the kits a reward can name, and one
line in the server's chat (the module's PLAN.md §29). Thin forwards like
protocol 9's; the tally, the kit catalogue and the chat memory all live
in the plugin. perm.sync's new `credits` field passes through untouched.

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-24 06:37:38 -05:00
parent 86205d6140
commit c80994ce87
2 changed files with 80 additions and 3 deletions

View File

@@ -145,10 +145,18 @@ use tracing_subscriber::EnvFilter;
/// (the module's PLAN.md §28). Five more thin forwards. The allowlist, the bounds, the monument
/// vocabulary and the registry of what each run owns all live in the plugin.
///
/// # Protocol 10 — the rewards
///
/// `POST /tally/open`, `GET /tally/snapshot`, `POST /tally/close`, `GET /kits` and `POST /chat`:
/// who took part in a run, the kits a reward can name, and one line in the server's chat (the
/// module's PLAN.md §29). Five more thin forwards. `perm.sync` also gains a `credits` field, which
/// passes through untouched like the rest of that body. The tally, the kit catalogue and the chat
/// memory all live in the plugin.
///
/// `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;
/// this constant is one of its four declaration sites.
pub const PROTOCOL_VERSION: u32 = 9;
/// 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;
fn main() -> anyhow::Result<()> {
let args = match cli::parse(std::env::args().skip(1)) {