Architecture-as-Types — what stays load-bearing when models write the code
A diagram is a screenshot in time. The moment the team ships, the
diagram and the running system begin to drift apart. The
codebase becomes the only authoritative source — but the codebase
does not narrate why it is shaped the way it is. Reviewers
reconstruct intent from git blame, grep, and tribal memory. For
forty years that was an annoyance. In the era when an increasing
fraction of code is produced by language models, the absence of a
machine-checkable architectural contract becomes a structural
liability.
Verum's response is the Architectural Type System for Verum
(ATS-V): a discipline that promotes architectural intent — who
can do what, across which boundary, under which discipline — from
prose into the type system. A Shape is a compiler-checked
obligation that travels with the code; the eight primitives that
build it use existing Verum syntax (variants, records, attributes,
protocols), with no new grammar productions. The map collapses
into the territory; there is exactly one source of truth, and it
is the code.
This post walks through ATS-V end-to-end, grounded in the actual implementation: 1230 lines of canonical Verum-side type declarations in the Architecture module, mirrored by 8320 lines in the Architectural kernel surface on the Rust side. It closes with the question the language was built around: what changes in this stack when much of the code is written not by the engineer holding the keyboard but by a model they are prompting.
