Reference
On Thu, 10 Sep 2026, by @lucasdicioccio, 232 words, 0 code snippets, 10 links, 1images.
Reference
These pages are generated straight from the specs in the tramaj repository — the repository is always the canonical source, and may be ahead of what’s published here.
How the documents relate: the language reference is the base, the Node JSON format encodes what it evaluates to, and v3 and v4 each extend it.

- Language reference — core AST, values, evaluation rules, surface syntax and its desugarings, imports, actions, builtins, and what’s implementation-defined. Start here.
- Node JSON representation — the normative
wire format for the evaluated
NodeAST. - v3 — Symbolic values and constraints —
?(key)allocation,!constraint(name, ...), and theSymbolicevaluation mode. - v4 — Types — the nominal type algebra, type parameters through imports, and typed annotations.
Some passages carry a mark. Those marked [§18] (integers and floats as
two types, and the arithmetic builtins) and those marked [§20] (round,
sorting, format-number) are implemented in all six implementations, on the
main branch and in no release yet. The marks are section
numbers of decisions.md. For what the number split changes in existing
templates, see
Migrating to integers and floats.
Two more documents exist only in the repository, not mirrored here since they’re development history rather than language reference:
laws.md— the design invariants, rewritten in prose on the Properties page.decisions.md— the resolved-conflicts log: which reading won wherever the design drafts disagreed, and why.
Earlier, superseded design drafts live under
specs/archive/,
kept for the reasoning in them rather than as current documentation.