Skip to main content

Module executor

Module executor 

Source
Expand description

The interpreted typed-IR executor (CMP-05, D-01): the SERVE-time topo-ordered driver that walks the per-cell Dag in dependency order, fills a CellEnv, and evaluates each CellExpr::Formula through a RECURSIVE eval_expr.

Phase 11 Plan 05 boundary: this is the RUNTIME run() path — it re-runs an ALREADY-built+expanded Dag (the server deserializes a pre-built IR + DAG). Leaf arithmetic routes through the PURE-RUST [super::scalar_eval] via eval_leaf (no SWC/JS kernel); function dispatch routes through semantics::apply; range member-keys + 2-D shape come from the public resolve::expand_range. This crate exports a silent-drop build_dag (reconstructs edges from an ALREADY-built IR at load time; a failed range expansion contributes no edge). The finding-pushing DAG-BUILD pipeline (rebase/loop unroll, run_with_loop) lives in the compiler crate (Phase 93), which calls THIS run() — extend that pipeline there rather than shadowing this build_dag.

Order comes from toposort ONLY — NEVER calcChain (RESEARCH Pitfall 3). A toposort cycle surfaces as ONE located dag/cycle LintFinding.

Structs§

EvalTrace
A per-cell evidence record the executor emits as it computes — the classifier consumes it as the deciding evidence for a mismatch. Owned and serde/schemars-clean.
RunResult
The result of an executor run: the computed cell map + the per-cell evidence traces. Owned, serde/schemars-clean.

Functions§

build_dag
Build the per-cell dependency Dag from a pre-built IR (the served binary deserializes a pre-built IR and reconstructs the DAG ONCE at load).
run
Walk the per-cell Dag in toposort order, filling env from seed, and compute every cell in ir. Returns the computed {cell_key -> CellValue} map together with per-cell EvalTrace evidence, or ONE located dag/cycle LintFinding when the DAG is cyclic.