Workstream: Engine · Part of #89
Context
Tree-walking evaluator over the parser AST (#107 ), producing CEL values over our DynamicValue domain.
Scope
CEL value model bridged to DynamicValue, including CEL-internal types not yet in the DSL (uint, bytes, duration) — coordinate with type issues Type: duration (records retention / TTL / SLA) + timestamp arithmetic #96 /Type: bytes (inline binary — hashes, signatures, key material) #97 /Type: uint — distinct type vs unsigned constraint (decision) #98 /Type/semantics: CEL timestamp operations (tz-aware accessors, overflow rules) #101 .
Operator semantics: arithmetic, comparison, logical with short-circuit (&&, ||, ternary) and CEL error/absent propagation rules.
Macros / comprehensions: has, all, exists, exists_one, map, filter.
Deterministic, no I/O, guaranteed-terminating (bounded comprehension semantics) — these are the properties that justify the whole rules-engine thesis (Epic: Built-in declarative rules engine (reduce reliance on gRPC hooks) #89 ).
Acceptance
Dependencies: Blocked by #107 (parser). Blocks the stdlib and the capabilities (#92 /#93 /#94 ). Hard.
Workstream: Engine · Part of #89
Context
Tree-walking evaluator over the parser AST (#107), producing CEL values over our
DynamicValuedomain.Scope
DynamicValue, including CEL-internal types not yet in the DSL (uint, bytes, duration) — coordinate with type issues Type: duration (records retention / TTL / SLA) + timestamp arithmetic #96/Type: bytes (inline binary — hashes, signatures, key material) #97/Type: uint — distinct type vs unsigned constraint (decision) #98/Type/semantics: CEL timestamp operations (tz-aware accessors, overflow rules) #101.&&,||, ternary) and CEL error/absent propagation rules.has,all,exists,exists_one,map,filter.Acceptance
basic,logic,comparisons,lists,macros/macros2subset sections of Spike: measure pure-Rust CEL conformance against the official cel-spec suite #90.Dependencies: Blocked by #107 (parser). Blocks the stdlib and the capabilities (#92/#93/#94). Hard.