This document is the project’s center of gravity, stated plainly so no later decision drifts from it:
Lume’s primary author is an AI model. Its primary human role is reviewer and director, not typist. Every design choice is made for the machine that writes the code first, and for the human who reads, audits and steers it second.
This is not a slogan; it inverts defaults that every prior language took for granted. Those languages assumed a human types the code and the machine only runs it. Both assumptions are now false for Lume.
Humans optimise a language for writing: terseness, few keystrokes, implicit behaviour, clever shortcuts. A model does not tire, does not mind redundancy, and fails in different ways: it invents plausible-but-wrong details, forgets a case, mishandles absence, calls an effect it shouldn’t. So Lume optimises for the opposite of human convenience:
match, mandatory contracts and tests — is a feature, because it
gives the compiler more of the author’s intent to verify. The compiler is the reviewer that never
gets tired; the more it can check, the fewer of the model’s mistakes reach the human.lume <tool> --json and lume agent are the real surface of the
language. Text is a projection for the human reviewer, not the primary medium.lume describe --json emits the keywords, operators, token kinds, AST
node kinds, the diagnostic protocol and the edit→check→fix workflow. Grounding is a built-in, not
a blog post. (Stage 0 already implements lume0 describe.)The deepest consequence, and Lume’s long-term bet: the source of truth is the typed AST graph, not
the .lume text. The model edits structure; the human sees a generated, perfectly-formatted
projection. Combined with content-addressing (each definition identified by the hash of its AST, as
in Unison), this gives properties a text-first language cannot:
The text syntax (docs/03-specification.md) remains the human-review projection and the on-ramp; it
is not abandoned. The roadmap and compiler-as-a-service (lume agent hashes, lume agent grammar,
lume agent project, lume fmt) expose per-definition content-addressed AST hashes (sha256: over
canonical S-expressions + cached proof status), a constrained-decoding grammar surface, and
round-trip projectional editing alongside the per-file SHA-256 lume.lock manifest.
Human readability still matters, because the human is the reviewer with veto power
(docs/04-roadmap.md, lume evolve governance). The point is the order of priority: when machine
checkability and human writing-convenience conflict, the machine wins, because the machine writes and
the human only needs to understand the result, not produce it. The human sets direction, reads the
projection, and approves or rejects — the highest-leverage thing a person can do when a tireless,
fast, but fallible author is doing the typing.
Everything else in the project serves this: the unambiguous grammar, the effect system, the contracts,
the lume agent compiler-as-a-service, the self-description, and the self-evolution loop in which AI
proposes language changes and automated gates plus a human decide. Lume is the language a machine
writes and a person governs.