15.3 Generator, Analyzer, Rewriter
What each mod contract may change—and what happens when they disagree.
Generator, Analyzer, Rewriter
Three roles, one merged program. Order matters; host merge is bounded and fail-closed.
Generator
Section titled “Generator”- Emits typed AST fragments only.
- Host merges, re-parses, repeats up to
maxGeneratorRounds. - Incremental by default—don’t regenerate the universe per keystroke.
Spec: Typed emitter and transforms.
Analyzer
Section titled “Analyzer”- Runs on host + generated code after semantic snapshot exists.
- Emits diagnostics; may register rewrites as fixes.
- Must not assume generated code is “second class”—it’s all one program now.
Spec: Analysis, query, and diagnostics facades.
Rewriter
Section titled “Rewriter”// Conceptual shape — see SDK for exact signaturesResult<TTargetNode, FixError> Rewrite(TSourceNode sourceNode);Replaces any valid node with any other valid typed node—power with responsibility. Conflicts → diagnostics, not silent corruption.
Conflict policy
Section titled “Conflict policy”Scheduling and determinism: Incremental scheduling and determinism. When two mods fight over the same node, the host picks a documented winner or fails—read the ADRs before betting production on undocumented merge luck.