docs(rust): protocol 14 — kits.uses and reward notices (PROTOCOL §20, PLAN_REDESIGNS §2.9)

The wire half of PLAN_REDESIGNS §2 (D332, D333): PROTOCOL.md §2 says 14, and
§20 specifies kits.uses (counts only, bounded by the sync's bound, POST
/kits/uses) and perm.sync notices (the whole untold set, told once when the
player is awake, told keys kept on disk, noticesTold in the report).
PLAN_REDESIGNS §2.9 records the Rust half as built and its compile on both
rigs. Stacked on docs/event-step-editor (docs#335) for §2.8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-10-12 02:48:12 -05:00
parent a2dbce1f89
commit 756c13d47b
2 changed files with 90 additions and 1 deletions

View File

@@ -409,6 +409,32 @@ Everything in §2.1–§2.3 and §2.5's core half, with three things settled whi
registers its 12 actions), the server suite 723/723 and the client suite 45/45 — the same numbers as 1.11.0's.
The Module-Rust half (the kit weekend, `linked`, `kits.uses`, the reward message) follows on `edge`.
### 2.9 As built: the Rust half, protocol 14 (2026-10-12)
Branches `feat/protocol-14-step-editor` in Rust-Plugins, Rust-Link and Module-Rust, into `edge`; the wire is
`rust-link/PROTOCOL.md` §20.
- **The kit weekend** is `rust.template.kit_weekend`: inputs kit, minutes (a duration), message and delivery.
It reads the kit from its server when it is filled in, so the lease names the kit's real permission. A kit
with no permission is open to everyone already and gets step 2 alone; a kit with no use limit has no
"one more use" and gets step 1 alone. The phase is the weekend: `advance: { after }` equals the minutes.
Run through the real 1.13.0 core (website#212), it registers, and the plan it builds validates as a spec.
- **`linked`** is "every linked account that has played on this server" — a stats row there — because a link
is fleet-wide and the server is what narrows it. It reads no tally, and past the server's recipient bound it
is refused with the bound's name (`EventsMaxRecipients`), never trimmed.
- **The reward message** is checked with the kit's name in place of `{kit}`, against the chat bound, so a
long kit name cannot push past what the game will say. It is stored on each grant row
(`rust_perm_run_grants.notice`, `notice_delivery`, `notice_told_at`).
- **The kit warning** is the `note` on `rust.options.grouppermissions` rows. That source is searchable, so the
editor may not hold the chosen row; core asks for that one value when it needs its note (website#212).
- **Timed params:** `rust.zone.open` and `rust.participation.open` declare `minutes` a duration, and the
group-permission lease gives `true` as its value example.
- **Compiled on both rigs, 2026-10-12.** Carbon 2.0.262 on Rust 25823813 (the latest of both): the bridge
compiled and loaded in 3.8 s, protocol 14, its told-notices store read at load. Oxide 2.0.7820 on the same
Rust build (the rig was behind on both, and was updated first: its first restart's steamcmd update did not
finish, the second did): compiled in 5.3 s and loaded. Both rigs were put back on their protocol-13 bridge afterwards, to match their sidecars until
the end-of-plan walk sets up protocol 14 (D331).
---
## 3. Zones: ZoneManager's options, and a dome (§4.4; D166, D167)