docs(kpihistory): document hourly rollups + resolve deferred #22 (plan #22 T8)

Update Component-KpiHistory.md with the KpiRollupHourly schema, the third
recorder rollup tick + one-shot backfill, dual raw/rollup purge retention,
raw-vs-rollup query routing by RollupThresholdHours, per-metric gauge-vs-rate
aggregation (KpiMetricAggregationCatalog), the four new options + bounds, and
30d/90d trend windows. Append a Delivered-2026-07-10 note to the m6 design
plan, move register row #22 from Deferred to Resolved, and note rollups in the
CLAUDE.md KPI History bullet. Docs-only; no code changed.

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 12:18:46 -04:00
parent bbfc1b3278
commit c9fa3b07f4
4 changed files with 72 additions and 16 deletions
@@ -95,6 +95,13 @@ skips that source's samples for the tick — it never throws into or disrupts th
`RetentionDays` (default 90), reusing the existing purge-scheduler shape. Hourly downsampling
beyond N days is deferred (YAGNI).
> **Delivered 2026-07-10** (deferred-work register #22): the hourly-downsampling deferral is
> closed. A `KpiRollupHourly` table folded by a third recorder tick, per-metric gauge-vs-rate
> aggregation, raw-vs-rollup query routing by `RollupThresholdHours`, longer rollup retention,
> a one-shot backfill, and 30 d / 90 d trend windows shipped per
> `docs/plans/2026-07-10-kpi-history-hourly-rollups-plan.md`. See `Component-KpiHistory.md` for
> the shipped design.
### Sample sources
- **`NotificationOutboxKpiSampleSource`** (in NotificationOutbox) →