What this is
Internal documentation for Kassandra — the rules, and where they are enforced.
Internal documentation. Not a design pitch and not a README: this is where the rules are written down in the order a person would ask about them.
Why this is an application
Because a number written in prose starts lying the moment the code changes.
Pages here reach into the simulation. The table of spells is built from
SPELLS — the same record the server casts from — and a sentence that quotes a
figure asks for it by name rather than stating it. Prose carries the reasoning,
which is the part code cannot hold; figures come from the code, which is the
part prose cannot keep up with.
The practical rule: if you find yourself typing a number, add it to
src/figures.ts and ask for it instead. A player's health is not written on
this page; it is asked for, and the simulation answers.
What is authoritative
Nothing here. This documents the simulation; it never defines it.
The rules live in
libraries/domain/simulationand run on the server.The wire contract lives in
libraries/foundation/protocol.The decisions and their reasons live in the ADR ledger, in
.claude/skills/architectural-decisions. When a page explains why, it is usually restating an ADR — link to it rather than re-arguing it.
If a page and the code disagree, the code is right and the page is a bug.
Where to start
How damage is worked out — the whole path from a statistic to a health bar, in the order it actually happens.
Shields — absorption, and why the pools are spent in the order they are.
Statistics — the seven, and which of them answer each other.
Last updated Aug 3, 2026