feat(sidecar): protocol 4 — two routes, and no opinion about either #4
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/phase-7-permissions"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GET /permissions/catalogueandPOST /permissions/sync(R2) — the first pair that exists so the website can write to the game, and the smallest change in this repository that a protocol bump has ever needed.That is the dumb-forwarder property paying for itself a second time: protocol 4 adds the largest command on the bridge and touches neither the store nor the feed. This process does not know what a group is, which names are managed, or what the plugin will do with any of it.
What this side does own
The envelope.
cmdandreqIdare inserted after the caller's object is taken, so they overwrite anything a caller put there: no request can arrive claiming to be a different command, or aimed at a correlation id somebody else is waiting on.The line cap. A command larger than the game link's own 1 MiB limit is refused here, with the limit in the body. Forwarded, it would be discarded silently by both ends (§3.1 — an over-long line is dropped, not buffered) and reach the caller as a
504, which sends an operator to look at a game server that is working perfectly.Everything else is the existing shape
A refusal from the plugin (
perm.error, reasonbusyortoo-large) comes back as a200, exactly like a refused link code: the sidecar keeps its own status codes for the transport, because the website has to tell "the game said no" from "the game never answered" to say the right thing to an operator (§4.3).Checks
cargo fmt --check,cargo clippy --all-targets -- -D warnings,cargo test— 48 tests green, two of them new and both asserting a refusal rather than a happy path.Walked end to end against this binary: a real core with
module-rustinstalled, this sidecar, and a stand-in plugin speaking protocol 4 on the loopback. The catalogue route answered a live read through to the "game", and every sync in that walk travelled throughperm_sync.Base branch
edge, per D18.AI disclosure
🤖 Generated with Claude Code
https://claude.ai/code/session_01PMH6bw1jXMgbyF3ZWGEzSM