docs(link): protocol 7 — what an event owns, and the split that carries it #221

Merged
whitlocktech merged 1 commits from docs/events-p12a-world-verbs into edge 2026-09-07 06:57:46 +00:00
Member

Events Phase 12a, docs half. One of four: servuo-plugins, link, Module-uo, docs — all onto edge.

What lands

link/v7.md — the spec of record for protocol 7. One command family for five verbs; the persisted ownership registry and why it is forced rather than chosen; the oracle that reuses ServUO's own dialogue vocabulary without its command-scripting field; the decoration index.

website/EVENTS_PLAN.md — Phase 12 split into 12a and 12b (org lead, 2026-09-07), on the line §G already draws between what an event owns and what it borrows. Ten verbs, four repos and a protocol bump is one review and one walk too many, and the halves prove different things — 12a that a run can put things in the world and get all of them back, 12b that it can change something it did not create and give that back unchanged. One protocol version across both: 12a bumps to 7, 12b amends 7 in place. The 11a/11b shape, carrying the same hazard §7 of v6.md states, tolerable for the same single reason — nothing is released from edge.

Also recorded there: the four org-lead decisions of 12a (one command family; the caps are the module's, never core's; the oracle built on the native hooks; decoration from the shard's own .cfg files), and the three settled for 12b (the self-check ships anyway; property leases addressed by an allowlist of type+property pairs; the item grant stays in).

Three corrections the survey forced on EVENTS.md

The config lease catalog does not grow in 12b, and the plan's promise of "the rest of the allowlist" was written before anyone counted. Measured on ServUO 57.4: 156 non-Bridge Config.Get call sites in Scripts/; 82 sit outside a field declaration, but all but four of those are inside a Configure() or a static constructor and are cached at boot exactly as the field initialisers are. The genuinely live, event-useful reads are PlayerCaps.SkillCap — which 11b already shipped — and Vendors.BribeDecayMin/MaxTime, which no event would plausibly lease. So 12b's lease work is object-property leases, and the config half of the catalog is finished at one key.

§G describes the seasonal toggle wrongly. It calls SeasonalEventSystem.GetEntry(type).Status "a nine-value enum". EventStatus has three values — Inactive, Active, Seasonal — and it is EventType that has nine entries. A three-state toggle over nine named events is a different form to author and a different one to cap.

§G costed the reopening at one protocol bump. It is two. The idempotency guarantee had to land before the verbs that depend on it, which is v6.md §1's whole argument.

§G's five 12a rows are marked built, each carrying what the build settled.

One thing outside the phase

README.md gains rows for v6 and v7. v6's was missing — the protocol index has been one version behind since 11a. Flagging it because it is a fix I made rather than one that was asked for; it is a one-line index entry in the table this PR had to edit anyway.

Checks

docs has no CI. Every relative link in v7.md was resolved by hand; the files are CRLF in the working tree and the diffs are content-sized (--numstat matches the real change), so nothing carries the \r\r\n full-file rewrite.

🤖 Generated with Claude Code

https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4

Events Phase 12a, docs half. One of four: `servuo-plugins`, `link`, `Module-uo`, `docs` — all onto `edge`. ## What lands **`link/v7.md`** — the spec of record for protocol 7. One command family for five verbs; the persisted ownership registry and why it is *forced* rather than chosen; the oracle that reuses ServUO's own dialogue vocabulary without its command-scripting field; the decoration index. **`website/EVENTS_PLAN.md`** — Phase 12 split into **12a** and **12b** (org lead, 2026-09-07), on the line §G already draws between what an event **owns** and what it **borrows**. Ten verbs, four repos and a protocol bump is one review and one walk too many, and the halves prove different things — 12a that a run can put things in the world and get all of them back, 12b that it can change something it did not create and give that back unchanged. **One protocol version across both**: 12a bumps to 7, 12b amends 7 in place. The 11a/11b shape, carrying the same hazard §7 of `v6.md` states, tolerable for the same single reason — nothing is released from `edge`. Also recorded there: the four org-lead decisions of 12a (one command family; the caps are the module's, never core's; the oracle built on the native hooks; decoration from the shard's own `.cfg` files), and the three settled for 12b (the self-check ships anyway; property leases addressed by an allowlist of type+property pairs; the item grant stays in). ## Three corrections the survey forced on `EVENTS.md` **The config lease catalog does not grow in 12b**, and the plan's promise of *"the rest of the allowlist"* was written before anyone counted. Measured on ServUO 57.4: **156** non-Bridge `Config.Get` call sites in `Scripts/`; **82** sit outside a field declaration, but all but four of *those* are inside a `Configure()` or a static constructor and are cached at boot exactly as the field initialisers are. The genuinely live, event-useful reads are `PlayerCaps.SkillCap` — which 11b already shipped — and `Vendors.BribeDecayMin/MaxTime`, which no event would plausibly lease. So **12b's lease work is object-property leases**, and the config half of the catalog is finished at one key. **§G describes the seasonal toggle wrongly.** It calls `SeasonalEventSystem.GetEntry(type).Status` *"a nine-value enum"*. `EventStatus` has **three** values — `Inactive`, `Active`, `Seasonal` — and it is `EventType` that has nine entries. A three-state toggle over nine named events is a different form to author and a different one to cap. **§G costed the reopening at one protocol bump. It is two.** The idempotency guarantee had to land before the verbs that depend on it, which is `v6.md` §1's whole argument. §G's five 12a rows are marked built, each carrying what the build settled. ## One thing outside the phase `README.md` gains rows for **v6 and v7**. v6's was missing — the protocol index has been one version behind since 11a. Flagging it because it is a fix I made rather than one that was asked for; it is a one-line index entry in the table this PR had to edit anyway. ## Checks `docs` has no CI. Every relative link in `v7.md` was resolved by hand; the files are CRLF in the working tree and the diffs are content-sized (`--numstat` matches the real change), so nothing carries the `\r\r\n` full-file rewrite. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
wtclaude added 1 commit 2026-09-07 06:53:25 +00:00
`link/v7.md` is the spec of record: one command family for five verbs, the
persisted ownership registry and why it is forced rather than chosen, the oracle
that reuses ServUO's own dialogue vocabulary without its command-scripting
field, and the decoration index.

`EVENTS_PLAN.md` splits Phase 12 into 12a and 12b (org lead, 2026-09-07), on the
line section G already draws between what an event OWNS and what it BORROWS. Ten
verbs, four repos and a protocol bump is one review and one walk too many, and
the halves prove different things. One protocol version across both, the 11a/11b
shape.

Three corrections the survey forced on `EVENTS.md`:

The config lease catalog does NOT grow in 12b, and the plan's promise of "the
rest of the allowlist" was written before anyone counted. Measured on ServUO
57.4: 156 non-Bridge `Config.Get` call sites; 82 sit outside a field
declaration, but all but four of those are inside a `Configure()` or a static
constructor and are cached at boot exactly as the field initialisers are. The
live, event-useful reads are `PlayerCaps.SkillCap` (11b shipped it) and vendor
bribe decay. So 12b's lease work is object-property leases.

Section G calls the seasonal toggle "a nine-value enum". `EventStatus` has THREE
values; it is `EventType` that has nine entries. The verb is a three-state
toggle over nine named events, which is a different form to author and to cap.

Section G costed the reopening at one protocol bump. It is two: the idempotency
guarantee had to land before the verbs that depend on it, which is v6's own
argument.

`README.md` gains rows for v6 and v7. v6's was missing -- the index has been one
protocol behind since 11a.

Refs: EVENTS_PLAN.md Phase 12a

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
whitlocktech merged commit 8415581a72 into edge 2026-09-07 06:57:46 +00:00
whitlocktech deleted branch docs/events-p12a-world-verbs 2026-09-07 06:57:48 +00:00
Sign in to join this conversation.
No description provided.