Organizations
Organizations replace the former universal profession record. A character may
hold any number of memberships, while organization_presentation records the
single organization (or none) whose identity and privileges the character is
currently asserting.
Content
content/organizations/*.yaml is compiled into adventuresim-core. Definitions
declare stable IDs, names, chapters, recognition, admission requirements and
fees, arbitrary ordered ranks, recurring dues, activity training and rewards,
and privileges such as bearing arms, wearing armor, or licensed foraging.
Organization-level privileges are inherited at every rank; rank-level
privileges are additive.
Chapters are explicit authored records, not settlement-ID flags. Every record
names its settlement, a bounded stable organization-* location ID, building
name and kind, and the title and profession of its representative. Each
chapter therefore becomes a distinct navigable building even when several
organizations share a settlement or an organization is also linked to an
ordinary settlement service.
An organization may also declare explicit starting_role metadata: one of the
ten authored start profession families plus distinct adult and old rank IDs.
Presence of this block makes an organization eligible for deterministic
first-character sampling. The catalog validator rejects unknown families,
missing ranks, identical adult/old mappings, chapterless eligibility, and a
full catalog that leaves any profession family uncovered. This metadata is
never inferred from an organization's name, service, requirements, or skills;
the catalog-only test organization is therefore not eligible.
For settlement-scoped recognition, at least one playable chapter must also be
recognized. Admission and selected starting-rank professions of faith must
agree; conflicting authored faith requirements are rejected.
Requirements and training targets are tagged data. No code path decides that an organization is a guild because it teaches Smithing, or a church because it requires a religion. Mixed requirements are intentional and supported.
content/settlement-policies.yaml declares settlement arms and armor
restrictions. Only the currently presented, recognized, active, dues-current
membership supplies an exemption. Ownership is unaffected: when a character
loses an exemption, prohibited equipment is unequipped.
Foraging licenses use a separate global presented-privilege evaluation. They still require persisted presentation plus a matching active, dues-current membership and its current rank, but do not require the current settlement to recognize the organization. A valid persisted presentation therefore survives travel and entry into an unrecognizing settlement. This does not weaken the locally recognized equipment privilege rules. The Lodge of the Hart King grants Low Game, Fish, and Plants throughout its ranks; its Forest-4.0 Master rank adds High Game.
The first catalog includes migrated trade and religious bodies plus three universal, denomination-neutral adventurer organizations: The Hunt of the Pale Lantern for witch hunters, The Order of St. George for knights, and The Lodge of the Hart King for foresters. Their chapters combine the playable footprints of the former denominational and regional variants. The catalog also retains a deliberately eccentric Catholic cooks test organization. These are historically informed fictional institutions rather than claims that each exact organization existed in every listed settlement.
The character sheet exposes the presented organization as a compact profession
picker; it is only a self-presentation control. Joining, dues, reactivation,
and promotion are conducted by speaking to the representative in the
organization's chapter building. Its large label combines the member's rank with the service profession
where one exists (for example, Apprentice Weaponsmith), while the smaller
label names the organization. Crests are stable heraldic marks derived from the
organization ID and service using the locally vendored Game Icons charges, so
every catalog organization has a stable heraldic identity without
presentation-only persistence fields.
Persistence and authority
SpacetimeDB owns membership, rank, dues, presentation, payment, promotion, and
equipment-law enforcement. Startup seeds exactly one deterministic persistent
representative per authored chapter. The NPC carries an explicit organization
binding, has an all-day authoritative presence at the exact chapter location,
and uses the compiled organization-representative conversation. Dialogue
effects carry no organization ID: authority resolves it from that live NPC and
revalidates the actor, session settlement, and exact chapter location before
reusing membership reducers. Joining is idempotent; the joining fee is charged once.
Crossing a paid-through boundary suspends membership and clears its
presentation. Paying at a chapter reactivates it without retroactive arrears.
Forester (ranger), witch-hunter, and knightly organizations explicitly author
public_threat_referrals; the capability is never inferred from names, skills,
or services. At any authored chapter, its representative may disclose public
hostile cases within that settlement's bounded rumor reach to an active,
dues-current member. Organization presentation is not required. The dialogue
uses the same canonical, observer-scoped disclosure path as an eligible
innkeeper.
Organization training and activity require a current membership and local chapter. Their skill mix is read from the catalog, including fixed skills, Bestiary and Terrain leaves, equipped weapon skills, and Religion only where an organization explicitly teaches a particular tradition. The Hunt of the Pale Lantern instead divides its training evenly between Spirit Bestiary and equipped weapon skills.
MVP privacy and uniqueness limitation
organization_membership rows remain public in the MVP because strategic-web
subscribes to them to render membership and schedule management. This is not an
authorization boundary: only the effective presented organization governs
privileges or public dialogue identity. An owner-scoped projection can replace
the raw subscription later. The join reducer enforces one procedural membership
per character and organization by checking the pair before insertion; the
pre-launch schema does not yet add a composite unique index.
Validation
Build validation rejects unknown fields and invalid or duplicate IDs, requirements, ranks, weights, organization- and rank-level privileges, religions, skill leaves, malformed chapter locations, duplicate chapter settlements, and settlement policies. A canonical check against a compiled Viabundus world is also required:
python scripts/validate_organization_world.py --world path\to\compiled-world.json
The cross-world check is separate because the catalog can be compiled without the large Viabundus dataset.