docs(link): protocol 7 — what an event owns, and the split that carries it #221
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/events-p12a-world-verbs"
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?
Events Phase 12a, docs half. One of four:
servuo-plugins,link,Module-uo,docs— all ontoedge.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 ofv6.mdstates, tolerable for the same single reason — nothing is released fromedge.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
.cfgfiles), 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.mdThe 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.Getcall sites inScripts/; 82 sit outside a field declaration, but all but four of those are inside aConfigure()or a static constructor and are cached at boot exactly as the field initialisers are. The genuinely live, event-useful reads arePlayerCaps.SkillCap— which 11b already shipped — andVendors.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".EventStatushas three values —Inactive,Active,Seasonal— and it isEventTypethat 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.mdgains 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
docshas no CI. Every relative link inv7.mdwas resolved by hand; the files are CRLF in the working tree and the diffs are content-sized (--numstatmatches the real change), so nothing carries the\r\r\nfull-file rewrite.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4