All notable changes to jev_dsl are documented in this file.
[0.1.0] - 2026-10-26
Added
JevDSLCompile-Time Contract DSL:defnoul/1..3for single probability (0.0..1.0) Noul contracts, supporting prompt blocks,ask: "...", andtrue -> "..."/false -> "..."criteria stab clauses.defchoice/2..3for mutually exclusive multi-option classification contracts (option -> "criteria"), preserving stab-clause declaration order viaSystemOneSDK.Question.Choice.defscore/2..3for ordered rubric grading scale contracts (level -> "criteria") viaSystemOneSDK.Question.Score.defjev/2for multi-question contracts combiningnoul,choice, andscorequestions in a single request.defalias/2for zero-cost compile-time contract aliasing with duplicate/collision detection.- Atom-compiled choice stab clauses (
positive -> "..."compiles to:positive), plus atom/string interoperability across contract names, question names, and dual-key answer helpers (JevDSL.fetch_answer/2,JevDSL.fetch_answer!/2,JevDSL.choice?/2,JevDSL.probability/2). - Compile-time option validation via
NimbleOptionsandSystemOneSDK.prepare/1validation raisingCompileErrorwith caller file/line numbers, plus:persistent_termJason.Fragmentwire payload rehydration.
JevDSL.Cache&JevDSL.Cache.ETS:- Pluggable
@behaviour JevDSL.Cache(get/2,put/3, optionalget_many/2,put_many/2) withadapter_get_many/3andadapter_put_many/3. - Content-addressed SHA-256 cache key generation (
JevDSL.Cache.key/3) combining recursively canonicalized input state (structs, maps, lists, tuples) and the contract'sSystemOneSDK.Preparedfingerprint. - Confidence-gated TTL resolution (
>= 0.65full TTL,< 0.65short300sTTL forChoiceAnswer,NoulAnswer, andScoreAnswer, errors never cached). - Built-in concurrent ETS L1 cache (
JevDSL.Cache.ETS) withGenServersupervision (start_link/1,child_spec/1),:kernel_sup:heirprotection for unsupervised on-demand tables, andprune_expired/1.
- Pluggable
JevDSL.Runner&JevDSL.Error:- Single (
evaluate/3,evaluate!/3) and concurrent batch (evaluate_many/3) execution with batch L1/L2 lookup (get_many/2), L2 -> L1 warming, L1 -> L2 backfill, independent:use_tier2_cacheand:persist_tier2controls, offline cache-only replay (cache_only: true),SystemOneSDK.Testclient support, and:eval_fnmocking. Structured
JevDSL.Errorexception (defexception [:type, :message, :contract, :details]) and:telemetry.span/3instrumentation ([:jev_dsl, :evaluate, *],[:jev_dsl, :evaluate_many, *],[:jev_dsl, :cache, :hit | :miss | :write]).
- Single (
JevDSL.CUE&Mix.Tasks.JevDsl.Install:- Deterministic CUE schema exporter (
__export_cue__/0). - Optional Igniter installer task (
mix igniter.install jev_dsl).
- Deterministic CUE schema exporter (