Vixen
caa30e12
csharp
public interface IGuildGrain

One guild's roster and ranks. Doc 27 § Grains, and doc 28 § Social.

Read the guide page for this →

Remarks

Left undeclared at L1 on purpose, and this is what was being waited for. Doc 27's reason was that "declaring an interface nobody implements is a promise rather than a contract" — the feature belonged to doc 28 and doc 28 had not built it. G4 did.

⚠ The grain decides ordering; the caller decides permission. A charter's permissions are tags on a compiled GuildCharter, so "may this officer kick" is a content question and the realm answers it with the same code the client greys the button with. What the realm cannot answer is whether the roster still looks that way by the time the write lands, because two officers demoting each other at once is a race no local check can win. So the grain re-checks the one part that is intrinsic — rank is an integer and you may not act on somebody at or above your own — and that needs no content at all.

That split is HousePlot's, one tier up: the ladder comparison is arithmetic and the permissions are tags.

⚠ Rank 0 is the leader and there is always exactly one. Removing the last member is how a guild ends; demoting the only rank-0 member is refused, because a guild with no leader is one nobody can ever administer again.

Methods (6)

Used by (1)

  • GuildGrainVixen.Live.Orchestrator