docs(link): protocol 4 — guild membership on the wire #153
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/teams-phase1-guild-roster"
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?
Teams Phase 1, docs half. Targets
edge;edge→mainis the v4 cutover.Pairs with servuo-plugins #12, link #31, Module-uo #8, installer #20.
New:
link/v4.mdThe spec of record for
guild.rosterandguild.leave. It documents what the phase found as well as what it built — the missing store migration and theuser_versiondecision, why the roster lives in its own column rather than inside theguild.updatesnapshot, why a split roster is reassembled in memory rather than appended, and whyguild.leavegets no board projection at all.§6 records that the reassembly bug was invisible to every unit test — they all exercised single-frame rosters — and only the live rig caught it. Kept because it is the argument for why Phase 0 existed.
Corrected:
PROTOCOL_2.md§10.1§10.1 already described this design in 2.0 — hold a member-serial set, diff it each sweep, emit join/leave — and 2.0 then shipped only the half needing no new state, folding membership into the board signature as a serial sum. The section has read ever since as though the whole thing were built.
It now says which half shipped, and carries the correction that building the rest produced: a sum is not a safe stand-in for a set, because one member joining and another leaving between two sweeps offset each other and the guild reads as unchanged.
Corrected:
INTEGRATION.mdBoth kinds in the event catalogue, the
rosterkey onGET /guilds, and the three things an integrator gets wrong otherwise:guild.leave'swhois a bare serial string, not an actor object — the mobile has already left, so there is nothing to attributeacctis genuinely optional on a member (a character can have no account at all)rosterkey is not the same as one with an empty rosterAmended:
website/TEAMS.mdTwo places where this phase disagreed with the design of record:
installerjoins, becausebackup.rsjustifies skipping the sidecar DB on reasoning the migration falsifies.user_versiondecision is recorded, since TEAMS.md did not contemplate a migration mechanism at all.The amendment is marked inline as an amendment with its date, rather than silently rewriting the plan.
AI-assisted: written with Claude Code. Commits carry
Co-Authored-By: Claude <noreply@anthropic.com>.