Commit History
Yesterday
-
[NOTICKET] feat(trend,forecast): row count per period and stub flag (P0-8)
- Each trend point and forecast history point now carries `n` (rows) and `stub` - A stub has fewer rows than half the median non-empty period (needs >= 3 periods); empty periods are not stubs - analyze_trend leaves stubs out of first/last, direction, slope and R^2, with a caveat naming them; it falls back to all periods if every one is a stub - analyze_forecast still fits every period but caveats a thin last actual period - IPR OB LOADER (Sep 9 rows vs 63-66): sum(mtbs) "down" -> "up" (R^2 0.01 -> 0.91); mean(pa) last 99.95 (Sep) -> 92.45 (Jul) - Reported by Rifqi (audit P0-8, decision D4) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>50cae40 -
[NOTICKET] fix(trend,forecast): a period with no rows stays empty (P0-8)
- resample().agg("sum") turned a month with no rows into 0: the trend read it as a collapse and the forecast fitted it as a real value - New temporal._resample(): sum uses min_count=1, so an empty period is None; count keeps 0 (zero events is the true count); other aggs were already None - analyze_forecast uses the same helper, so the empty month is interpolated for the fit - Example (April empty): trend R^2 0.06 -> 0.90, forecast no longer dips after "April 0" - Chart already draws None as a gap; the report table shows it as a dash - Reported by Rifqi (audit P0-8, decision D4) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f28898b
-
/feat ds tools (#22)
- feat(tools): analytical-tools foundation — spec_builder + ml executor (ee1a76a466c6ea6dc52f337d0fd9534ca0271a86) - feat(tools): shared chart kit + auto-chart builders (535f17340950e070556441140276c47d074606e2) - feat(tools,spine): wire tool auto-charts to chart persistence (522e582bab372b645577789cbbd59d5105a66632) - build(deps): add statsmodels + explicit scikit-learn pin (4d76bd0e57f5f7b1bbb0b77e49970063d1898a1b) - [NOTICKET] docs: analytical-tools foundation — conventions, DEV_PLAN 0.9, status sync (a7f0bca51ed8ff08784cca3fd4179dce56ef7622) - [NOTICKET] eval(planner): skip cases whose tool is withheld, don't fail them (845284b4a3b32df142565de23386dee739d0f733) - [NOTICKET] feat(tools): analyze_forecast (ETS) — first ML tool, DEFERRED (dae102f68fc36cf755e7d53df10affb4ec7edaa6) - [NOTICKET] planner: rebalance few-shot exemplars EN/ID, demo the reply-language rule (fb30aec99586daf12a4799087ae538e5e862451c) - [NOTICKET] feat(tools): analyze_anomaly (Isolation Forest) — second ML tool,…e201ae4