Modeller
ArchitectureDecisions

Canonical rule expressions

Modeller owns typed expression meaning independently of runtimes and exchange formats.

Status: Accepted

Source: Wayfinder issue #14

Canonical terms

Decision · Rule

Decision

Modeller owns a small, versioned, statically typed expression representation and a readable authoring language.

  • Source expressions compile to the canonical representation.
  • A bounded, pure reference interpreter defines their semantics.
  • Generated C# and external decision formats are adapters.
  • JavaScript is a constrained, visibly foreign escape hatch rather than canonical meaning.
  • Imported expressions identify their dialect explicitly; dialect autodetection is not supported.
  • Readable unary tests and operators may be adopted only where their semantics exactly match Modeller's type, null, determinism, and versioning rules.

Consequences

No host language, runtime, code generator, or interchange format can silently change the meaning of a model. Authoring syntax, language-server affordances, generated-code strategy, and packaging remain later decisions built on this representation.

On this page