v6.4.20

Wed Sep 02 2026

Bug Fixes

API

  • ship every event to the engine, and never store an empty task error query_event_data filtered events by the caller's date window, so an event whose dates all fall outside it vanished from the payload while the dataset's variable list still offered it - construct_all_graphs then died with "filters had no matches". Events are markers the engine places relative to the window, so the event frame now ships whole and the date arguments are gone. drun.job_log returns an empty stderr for some failed jobs, and it was stored verbatim and cascaded as Parent task 'GRAPHCONSTRUCT' failed with '' - a failed model with no reason on it. The cascade now substitutes the topic and drun job id. Backport of !1389; the live-model call sites do not exist on 3.57.10.
  • reference points from dataset min, and the event grouping filter Reference points for variables outside ATTR_BASELINE were the per-variable minimum of the job's own window. When the window is a single period - or a variable is constant across it - that minimum IS the value, so the variable decomposes to exactly zero and its contribution lands in the unexplained base; waterfalls showed only Base, Media and Total. Take the minimum over the dataset instead - full_stmt, already resolved in both submit paths - falling back to the window minimum for variables the dataset has no rows for. query_event_data also compared Grouping against the combination's region instead of its grouping, so a segmented combination silently got a different segment's events: (DEU, all, sme_retail) returned the all grouping's 60-event calendar rather than its own 3. Backport of !1388; the grouping typo is fixed on main by bc7dbc9f. 3.57.10's full_stmt carries Variable, not VarId, so the mins key on slug and fold straight into add_baseline rather than needing the MR's wrapper.