From 52453ca785f2e570063bdbe6660a53a32de63d3a Mon Sep 17 00:00:00 2001 From: "Claude (adr009-zset-amend)" Date: Sat, 10 Oct 2026 11:14:46 -0700 Subject: [PATCH] docs(adr): ADR 009 is accepted; Z-set weights are checked i64 and the group is partial (improvise-felo.4) Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze --- context/adr/009-incremental-evaluation.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/context/adr/009-incremental-evaluation.md b/context/adr/009-incremental-evaluation.md index 68135713..f0506249 100644 --- a/context/adr/009-incremental-evaluation.md +++ b/context/adr/009-incremental-evaluation.md @@ -1,6 +1,6 @@ # ADR 009 — Incremental evaluation: an in-house DBSP core, plugged in behind a trait -**Status:** proposed. · +**Status:** accepted. · **Ticket:** improvise-felo.4 (the record of this ADR; implementation goes to its own epic) · **Relates to:** ADR 001 (the basis a write claims), ADR 002 (surrogates on the wire), @@ -29,7 +29,11 @@ mutation, it says so and names the incremental path that normally applies. A problem-agnostic workspace crate with no dependencies beyond `std` (so it is wasm32-clean and serde-free). It provides: -- `ZSet`, a map from `K: Ord` to a non-zero `i64` weight, which is an abelian group; +- `ZSet`, a map from `K: Ord` to a non-zero `i64` weight. Weight arithmetic is checked + and panics on overflow, in debug and in release. The group laws are exact wherever no + weight, intermediate ones included, leaves `i64`, so the structure is an abelian group + that is partial at the `i64` boundary. Weights are validated where deltas enter from + the wire (clause 9), so a hostile frame is rejected and never reaches the panic; - a synchronous, single-threaded `Circuit` per process, with `delay`, `integrate`, `differentiate`, `map`, `filter`, `flat_map`, `index_by`, the bilinear delta join `join_indexed`, `distinct` and `aggregate`;