diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index f2c7d51..112a725 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -1113,8 +1113,15 @@ transform thins the served page to ≤ ~2·`CHART_DECIMATE_BUCKETS` spine slots multi-year M1 family now renders a few-thousand-point page instead of 100s of MB; full recorded data stays on disk (view-only), and the walk-forward null-fill page collapses for free. Deterministic (C1): pure bucketing over the sorted-deduped spine, no-op under -budget. Deferred refinements (#110): a `--width` budget flag (the budget is a fixed -const) and true intra-bucket min/max ordering for the non-default continuous x-mode. +budget. **Refinement (#111, 2957561):** the per-bucket reduction is **tap-aware** — an +*envelope* series (equity) keeps min/max, but a *bounded level* series (the C10 +exposure, ∈[-1,+1]) reduces by per-bucket **mean** (a `ReduceKind` on each `Series`, +set by `reduce_for_tap`). Without it min/max made every multi-year exposure a solid +-1..+1 band (each bucket straddles many sign flips), reading as per-point oscillation; +the mean shows the net/duty-cycle level. Deferred refinements: rendering the min/max +envelope honestly as range bars / OHLC rather than a polyline (#112); a `--width` +budget flag and true intra-bucket min/max ordering for the non-default continuous +x-mode (#110). ### C23 — Graph compilation and behaviour-preserving optimisation **Guarantee.** The bootstrap (C19) is a **compilation**: it lowers a param-generic,