diff --git a/context/adr/009-incremental-evaluation.md b/context/adr/009-incremental-evaluation.md index 70d4b155..68135713 100644 --- a/context/adr/009-incremental-evaluation.md +++ b/context/adr/009-incremental-evaluation.md @@ -51,12 +51,10 @@ formula, so there is no second query language. ### 2. The plug -The seam crate `improvise-incremental` holds a trait, `Derived`, for the two things the -evaluator reads: the formula result at a key, and the raw fold of the cells that match a -partial key. `Eager` lives beside it in that crate. The incremental backend implements -`Derived` there too. `improvise-incremental` depends on improvise-core, and later on -`zset`. improvise-core defines no `Derived` and never depends on `zset` or on -`improvise-incremental`. +improvise-core gains a trait, `Derived`, for the two things the evaluator reads: the +formula result at a key, and the raw fold of the cells that match a partial key. The +incremental backend implements it in a seam crate, `improvise-incremental`, which +depends on `zset` and improvise-core. improvise-core never depends on `zset`. A live source (ADR 003) that reports its changes feeds cell deltas like `DataStore`. A source that answers aggregate queries but reports no changes implements the derived-value @@ -65,7 +63,7 @@ operator directly, by query pushdown, with no change feed. The circuit decides *which* formula cells to re-evaluate. The one existing evaluator computes each value, so formulas are never compiled into operators. -**`Eager` is temporary.** Today's code is wrapped behind the trait as `Eager`, unchanged. It +**`Eager` is temporary.** Today's code moves behind the trait as `Eager`, unchanged. It exists only to show discrepancies between the new evaluator and the old one: a differential property test applies one random edit sequence to both backends and compares every drawn cell, total and occupancy count. Eventually it is deleted, and