docs(link): roster members carry guild rank #155
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/protocol4-guild-rank"
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?
Amends Protocol 4 in place — no bump. The protocol has not reached
main, and a bump is owed only once one has been released.Pairs with servuo-plugins #13 (the emitter) and Module-uo #10 (the ingest and the provider).
Why
The roster shipped as the standard actor object, which carries no rank. Teams phase 2 found the consequence: the website could learn leadership only from the board's single
leaderfield, so it could name exactly one leader — while a UO guild routinely has several, andTEAMS.md§2.5 treats multiple leaders as the normal case.v4.md§2.3The three new fields (
rank,rankCliloc,rankName), why rank is on roster members only, and why only the raw rank travels — ServUO ships no text for those clilocs, so resolving one is the consumer's job.Both files carry the trap
PlayerMobile.GuildRankreturns Leader for anyone at GameMaster or above, whatever their real rank. A gameplay convenience so staff can operate a guild stone; the true value has no accessor. The bridge therefore omits the rank entirely for a staff account rather than publishing a leadership claim it knows is false.So an absent rank means "not known", and a consumer must read it as neither 0 (which silently demotes them) nor leadership (which republishes the lie). Written into both the spec and the integrator guide because it is precisely the kind of thing that is got wrong silently and discovered on a public page.
INTEGRATION.mdalso states the other half plainly for an outside integrator:guild.update's singleleaderis the founder-leader, not the set of leaders, so "who leads this guild" is a read of the roster's ranks.Recorded for next time
The sidecar needs no change and no store migration — it treats roster members as opaque values and never reads a field inside one. Worth having written down before someone assumes a new member field implies sidecar work.
AI-assisted: written with Claude Code. Commits carry
Co-Authored-By: Claude <noreply@anthropic.com>.