research-document

ADR 0005 — Limen engine/kernel split, with a static HTML baseline

ADR 0005 — Limen engine/kernel split, with a static HTML baseline

Status: Accepted (constraint, §1.4)

Context

Limen enforces a lexical boundary: engine code must not name document, window, fetch(, localStorage, sessionStorage; neither side may eval. The current limen.config.json declares an empty boundary because no split exists yet.

Decision

F#→WASM is the engine and owns all research interpretation. A thin TypeScript kernel owns browser capabilities. Every artifact is also a static HTML page.

Evidence

OBSERVED: Limen 0.5.1 verified green against this repository only with an empty boundary; a realistic mapping produced three LIMEN009 false positives on the word "document" used as a domain noun. An F# engine cannot produce that class of false positive, because it never names the global.

Alternatives

A framework SPA — rejected by §1.6. A pure static site — rejected: relationship traversal and search need client interaction.

Consequences

Two rendering paths must agree on URLs. Mitigated by generating both from the same F# projections.

Reversibility

Moderate — the static baseline could stand alone if WASM proved unworkable.