diff --git a/context/adr/009-incremental-evaluation.md b/context/adr/009-incremental-evaluation.md index 68135713..70d4b155 100644 --- a/context/adr/009-incremental-evaluation.md +++ b/context/adr/009-incremental-evaluation.md @@ -51,10 +51,12 @@ formula, so there is no second query language. ### 2. The plug -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`. +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`. 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 @@ -63,7 +65,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 moves behind the trait as `Eager`, unchanged. It +**`Eager` is temporary.** Today's code is wrapped 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