Council data tables¶
Three committed JSON tables under .nerthus/data-tables/ at the repo root hold the lore data a Radny edits directly in a text editor: the denomination ladder (currency.json), the role capability bundles (roles.json), and the reputation town list (towns.json). This page is the lookup for their file locations, seeded contents, and shared lifecycle rules; what each table means is owned by its domain page and linked from each section.
Shared lifecycle rules¶
| Rule | Detail |
|---|---|
| Location | .nerthus/data-tables/ — committed, Council-owned |
| Read on use | The daemon reads each table on every use; an edit takes effect on the next request, no restart |
| Seed only when absent | The boot scaffold seeds a table only when its file is missing, so Council edits survive every boot and re-init |
| Fallback | A missing or malformed table falls back silently to the baked-in defaults — the exact constants the seed wrote, never a second copy to reconcile |
The public schema route serves the effective table contents — denominations, towns, and role names — but neither the PU constants nor the full capability bundles (route in API). The Council's tunable PU constants are not a data table: they live in the pu block of config.json (see Configuration).
currency.json — denomination table¶
The denomination ladder; the lowest tier is the base unit (multiplier 1). Base-unit arithmetic in Kogi, holdings, and transfers are owned by the currency model.
Canonical (@generyczne_nazwy) |
Short | Tier | Kogi multiplier | Stem |
|---|---|---|---|---|
| Korony Elanckie | Korony | Gold (złoto) | 10000 | kor |
| Talary Hirońskie | Talary | Silver (srebro) | 100 | tal |
| Kogi Skeltvorskie | Kogi | Copper (miedź) | 1 | kog |
Seeded shape:
{
"denominations": [
{ "name": "Korony Elanckie", "short": "Korony", "tier": "Gold", "multiplier": 10000, "stem": "kor" },
{ "name": "Talary Hirońskie", "short": "Talary", "tier": "Silver", "multiplier": 100, "stem": "tal" },
{ "name": "Kogi Skeltvorskie", "short": "Kogi", "tier": "Copper", "multiplier": 1, "stem": "kog" }
]
}
- Exchange: 100 Kogi = 1 Talar, 100 Talarów = 1 Korona (10 000 Kogi = 1 Korona).
- The canonical diacritical name (
Hirońskie,Skeltvorskie) is the identity; matching rules (short names, stems, declined forms) are in the currency model. - Adding a denomination is a row edit — a new row reshapes all Kogi arithmetic automatically. A row without a
stemsilently misses declined mentions.
roles.json — roles & capability bundles¶
One row per role (gracz, koordynator, namiestnik, narrator, radny), each an array of capability strings. The committed file is authoritative when present, so a Radny rebinds a role's capabilities with a reviewable commit. Capability ids and full/own/none grading are in Capabilities; tokens and the ACL model in Permissions.
Seeded shape (excerpt):
{
"roles": [
{ "role": "koordynator", "capabilities": ["admin.all"] },
{ "role": "namiestnik", "capabilities": ["admin.all"] }
]
}
The seeded bundle per role, and how bundles combine into a Person's effective set, are in Capabilities. Capabilities are recomputed on every request, so a roles.json edit takes effect on live tokens immediately.
towns.json — town / reputation list¶
The reputation-bearing settlements a character's sheet tracks (Pozytywna / Neutralna / Negatywna — see the player model). Seeded list:
Tuzmer, Ithan, Mythar, Mirvenis-Adur, Thuzal, Nithal, Werbin, KH, Torneg, Eder, Karka-han
Adding a settlement is a row edit, picked up on the next request.
Not a table: entity types¶
The seven-type set (NPC, Grupa, Lokacja, Mapa, Gracz, Postać, Przedmiot) is a closed design contract whose one authority is the baked in-code list — new-entity validation and the integrity report both check against it. The set is structural, not Council data: currency assumes Przedmiot, auth own-scoping assumes Gracz/Postać, and the importer's index sections assume the rest. A former data-tables/entity-types.json is retired — the boot scaffold no longer writes it and nothing reads it. The type contract is owned by the entity model.