Documentation.

Everything that ships with the engine — the canonical specification, per-package API references generated from the source on every build, the repository's audit trail, and a growing set of topic guides that explain the moving parts in narrative form.

Specification

The canonical source of truth.

SPEC.md is the document the engine, the static checker, and the bounded model checker all answer to. SPEC.async.md adds the composite statechart for fetched resources and conflicts.

SPEC.md

Core specification

The canonical engine spec — denotational semantics (Behavior a = GraphTime → a), the commit pipeline in §5, the worked end-to-end example in §10, and the race-class catalogue with the full enumerator/checker rules in §16.

Read SPEC.md
SPEC.async.md

Async resources & conflicts

The composite statechart that governs every async fetch — launch, version-stamp, abort, settle — together with the conflict-record registry, transaction-phase contract, and the rules that tie outcomes back to the graph.

Read SPEC.async.md
API reference

One page per published @causl/* package.

Generated from the source on every build via TypeDoc. The symbol pages link straight back to the relevant SPEC sections wherever a behavior is normative.

Generated from the source on every build via TypeDoc.

@causl/core

Engine — Behaviors, derivations, transactions, snapshot/hydrate, retention, explain.

View API
@causl/react

React bindings — useCausl, useDispatch, useCauslFamily, MVU runner, SSR.

View API
@causl/formula

Spreadsheet patterns on top of the core — formulas, ranges, cycles.

View API
@causl/sync

Async resources and the conflict registry, composed as statecharts.

View API
@causl/devtools

Inspection primitives — explain materialisation, liveDerivation, snapshot, statechart.

View API
@causl/devtools-bridge

Redux DevTools Extension protocol bridge (zero-cost when the extension is absent).

View API
@causl/persistence

Persisted-input adapter with structured PersistenceError reporting.

View API
@causl/checker

npm wrapper for causl-check — the Rust-backed static IR linter (twelve passes).

View API
@causl/bench

Benchmarks — Jotai / RTK / MobX comparisons across the canonical scenario taxonomy.

View API
@causl/migration-check

Migration drift detector — flags unmigrated Jotai/MobX/Redux patterns in adopters.

View API
Repository docs

Top-level files in causljs/causl-ts.

These four files travel with the source and are the right starting points for anyone evaluating, upgrading, or contributing to causl. Each causljs/* repo ships its own analogous trio (README, CHANGELOG, CONTRIBUTING) and the same pre-commit hook contract — see the cross-org topology section.

README.md

The why, what, and how

Why causl needs to exist, what it commits to, how it compares to the rest of the JavaScript state-management landscape, and the package map.

Read on GitHub
CHANGELOG.md

Per-wave shipped features

A wave-by-wave record of what has actually landed on main. Updated on every release; the source of truth for "what changed since I last upgraded".

Read on GitHub
CONTRIBUTING.md

How the eight commitments are enforced

The repo's contribution rules — branch model, PR template, how each of the eight commitments is enforced at the package boundary, in CI, and in code review, and the pre-commit hook setup that mirrors the full CI gate union locally (cargo-husky for Rust-side repos, plain Husky for the TS-side).

Read on GitHub
Topic guides

Narrative explanations for the moving parts.

Where the SPEC is normative and exhaustive, these guides walk through one concept at a time with diagrams and worked examples.

docs/semantics.md

Behavior denotational semantics walkthrough

A guided tour through Behavior a = GraphTime → a: why this shape makes glitch-freedom a theorem rather than a scheduler trick, and how derivations compose.

Read on GitHub
docs/lifecycle.md

Composite statechart with Mermaid diagrams

The single statechart that governs resource fetch, conflict status, transaction phases, and interaction modes — rendered inline so each transition has a name you can grep for.

Read on GitHub
docs/checker-coverage.md

What causl-check catches

A rule-by-rule mapping from each twelve-pass lint to the SPEC §16 race class it corresponds to — including which shapes are caught statically and which still require the enumerator.

Read on GitHub
docs/migration/RULE_CATALOGUE.md

Migration guide: Jotai / MobX / Redux → causl

The canonical mapping table from common patterns in the three most-migrated-from libraries to their causl equivalents, paired with the codemod rules in @causl/migration-check.

Read on GitHub
docs/apalache-diff-report.md

Latest TLA+ differential run

The most recent CI output from the Apalache differential runner against the EPIC-7 TLA+ corpus — regenerated on every run of the bounded model checker. The Tier-3 S-row corpus (spec_s1.tla / spec_s2.tla / spec_s3.tla) covers the SPEC.async §9.1.1 rows.

Read on GitHub
docs/rfcs/0001-adopter-race-classes.md

RFC 0001 — adopter-defined race classes

The extension surface by which an adopter declares a custom race class without violating the closed §9.1 catalogue. Phase 2 shipped the loader + SARIF integration in causljs/causl-check.

Read on GitHub
docs/rfcs/0002-federated-race-detection.md

RFC 0002 — federated race detection

Race detection across multiple causljs/* repos in a single SARIF stream — the per-push fast check, the nightly cross-repo sweep, and the federated finding wire format.

Read on GitHub
Cross-org topology

Seven repos, one engine.

Causl was split out of a single monorepo into seven repositories under the causljs GitHub organisation. Each repo owns one concern; the contribution flow, the CI gates, and the release cadences are independent.

causljs/causl-ts

TypeScript engine + adapters

@causl/core, @causl/react, @causl/formula, @causl/sync, @causl/devtools, @causl/devtools-bridge, @causl/persistence, @causl/checker, @causl/bench, @causl/migration-check.

View on GitHub
causljs/causl-wasm

Rust engine + consolidated bridge

engine-rs-core (pure-algorithm no_std + alloc) plus the single consolidated bridge cdylib that replaced the legacy engine-rs-bridge-serde + engine-rs-bridge-gc pair in PR #74. epic/1 migrated the hot path to &mut dyn CellAccess.

View on GitHub
causljs/causl-ts-wasm-engine

TS fork — WASM by default

Defaults loadWasmBackend() to the consolidated @causljs/causl-wasm bridge (DEFAULT_WASM_ENGINE_MODE=rust-ssot). Where causl-ts keeps the JS engine as the SSOT, this fork inverts the default.

View on GitHub
causljs/causl-bench

Cross-library bench suite

Compares causl-ts / causl-ts-wasm-engine / Jotai / RTK / MobX across the SPEC scenario taxonomy. The CAUSL_TS_SOURCE env var (upstream vs wasm-engine) lets a single run A/B the two TypeScript-side engines. Output feeds the dashboard at /benchmarks.

View on GitHub
causljs/causl-check

Static analysis

causl-check (twelve-pass IR linter), causl-enumerate (SPEC §16.4 bounded enumerator), the Apalache differential runner, the Tier-3 Apalache S-row corpus, RFC 0001 (adopter race classes), and RFC 0002 (federated race detection).

View on GitHub
causljs/causl-org-srv

Static dev server for this site

Small dev server used while iterating on the demos that ship with causljs/causl-org. Was previously vendored into causl-ts/tools/causl-org-srv/; lives standalone now.

View on GitHub
Tools

The Rust crates in causljs/causl-check.

All three crates are CI gates, not runtimes — they read the TypeScript source, lower it to the IR, and reject programs that violate SPEC §16 before they reach production.

tools/checker

causl-check

The static IR linter — twelve passes, one per race class, shipped as a Rust binary and wrapped by @causl/checker for npm consumers.

View on GitHub
tools/enumerator

causl-enumerate

The SPEC §16.4 bounded model checker — full type surface, phased transitions with per-step events, an oracle, and Tier-1/2/3 bound presets.

View on GitHub
tools/enumerator/diff

Apalache differential runner

Re-runs the EPIC-7 TLA+ corpus through Apalache and diffs its output against the bounded enumerator — the safety net for the safety net.

View on GitHub

The full source

Everything linked above is generated from, or lives in, the seven repos under the causljs organisation on GitHub. Issues, PRs, and the complete eight-commitment audit trail are there.

View on GitHub