Reference

On Thu, 10 Sep 2026, by @lucasdicioccio, 177 words, 0 code snippets, 9 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.

Spec layers: Node JSON encodes the core’s output; v3 symbols (value realm) and v4 types (type realm) both extend the core

  • 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 Node AST.
  • v3 — Symbolic values and constraints — ?(key) allocation, !constraint(name, ...), and the Symbolic evaluation mode.
  • v4 — Types — the nominal type algebra, type parameters through imports, and typed annotations.

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.