The legacy test files (Definition/Evidence/Expression/Fact/Integration/
Measure) predate the DSL's validation rules: reserved built-in types
(User/Account/Device/AuthSession) and the boolean/predicate-call
requirements on evidence statements. Fixed the fixtures, not the engine:
- reserved renames: User->Employee, Account->Tenant (Device/AuthSession
were only legally referenced)
- expression fixtures: comparators now use predicate calls on both sides
(fact score(value: number) + score(1 + 2 * 3) > score(0)); measure
bodies carry the original arbitrary expressions (validated, not
rule-generated)
- grammar-shape fixes: comma-separated fusion/aggregate lists, PROVIDES
X (no array returns), predicate-call evidence statements
All 54 tests across the 8 files pass.
The Evidence DSL (ADR-000) is a thin declarative layer that compiles to
engine rule types. It has zero runtime coupling to the core engine
(DSLCompiler takes an arbiter as a duck-typed argument; the only shared
code was the ip-utils helpers, now local). Extracting it into its own
package keeps the core artifact free of the DSL surface.
- @arbiter/evidence-dsl depends on @arbiter/core (config formats are the
compilation target)
- deep-path exports for the compiler, parser, generator, validation,
and built-in functions (the surface the core's DSL tests consume)
- tests moved alongside; generate-parser script + peggy devDep local
- CI: test on push, publish on v* tags