All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Supervision tree —
conversation_supervisor(RestForOne) with@compilerandgardenfactory supervisor for domain server lifecycle - Boot orchestration — imperative and supervised boot paths via
boot.gleam - @compiler actor — compiles
.convgrammars, loads BEAM modules, returns traces; replaces previous stub - Loader + grammar modules — BEAM compilation pipeline from ETF to loaded modules
- Rustler NIF —
compile_grammar/1added;parse_convmigrated from C to Rust conv_module prefix — compiled grammar modules getconv_prefix to avoid BEAM sticky module collisions;lenses/0andextends/0introspection- BEAM infrastructure tracking —
domain_server.erl, supervisor, domain FFI, file FFI - Test module + CLI subcommand —
emit_test_modulefor property tests from---separator blocks - Cross-actor dispatch —
@domain.action(args)syntax in action bodies, emitted asgen_server:callto target domain - Action composition —
@domain.action(args)parsing and EAF compilation - FFI:
conv_compile_grammar— grammar source to actor module ETF via FFI - EAF emission —
emit_actor_modulecompiles grammar acts to BEAM dispatch stubs - Shannon property testing — grammar-derived property tests with Shannon equivalence
- Prism type —
Prism<V>enum (Shard, Fractal, Void, Root) withFragmentable,ContentAddressed, and trait impls; replacesTree<E> - Grammar keyword —
grammar @name { type = ... }vocabulary declaration - Action blocks —
actionkeyword in grammar blocks with type-ref validation viaTypeRegistry - Package discovery —
PackageRegistrydiscovers@nameandname.conv; namespace threading through CLI - Annotate blocks —
---separator producesannotate(@test)subtree - Kind structural reduction —
Kindenum reduced from 31 to 4 variants (Decl, Atom, Ref, Form) - Content addressing —
kind:name:valueformat with SHA-512 - Kernel module —
Oid,Trace,Vector,ContentAddressed,Latent<V>,Setting,Addressable - EAF compiler — transformation trees compile to Erlang Abstract Format
- Namespace imports —
use $t from @moduleresolution - Branch dispatch —
branch(.path) { "pattern" => action }parsing and compilation - NIF bridge — Rust parser to C wrapper to BEAM (
conv_parse,conv_compile_grammar) - Typed actors —
@beam,@mail,@compiler,@actordomain grammars - CLI —
conversationbinary with 11 CLI tests - Gleam BEAM runtime — protocol types, convergence engine, trace, oid, key, ref, prism, domain FFI
- Optics — Prism, Traversal, PrismAsTraversal (the fractal is the lens)
- Witness — Identity, Session, Witnessed (observability from day one)
- Supervision moved to Gleam —
conversation_sup.erldeprecated in favor ofsupervisor.gleam+garden.gleam - ROADMAP updated —
@compilerowns the root; bootstrap.conv introduced actrenamed toactionin grammar blocks;actretained as legacy alias- SHA-512 content addressing — replaces previous hash; Oid type + FFI refactor
- TypeRegistry — now
FragmentablewithNamespacebacked byStore - Parse keyword dispatch — extracted to
KEYWORD_TABLE - Prism naming —
Leafrenamed toShard,BranchtoFractal Storyrenamed toVector,CuttoTrace— domain language alignment- Domain refactoring —
Domaintrait renamed toContext,Resolvedrenamed toConversation
- GenStage topology —
pipeline.gleamremoved; topology dissolved beam.rsandgit.rs— domains moved to.convgrammar filestree.rs— inlined intoprism.rs
- Closure monomorphization coverage gaps in test helpers
domain_oid!macro coverage attribution to definition file