v1.7.0 — views_frames_reconcile (forecast reconciliation)
Adds a third sibling package, views_frames_reconcile, to the views-frames mono-wheel (alongside views_frames + views_frames_summarize). CONFORMANCE_FLOOR stays 1.0.0 — additive over the frozen v1 surface.
views_frames_reconcile (ADR-023)
Forecast reconciliation — make grid (pgm) predictions sum, per posterior draw, to their country (cm) totals — as a numpy-only, views_frames-only frame operation (the same kind of thing as views_frames_summarize, ADR-017).
ReconciliationModule(map_keys, map_vals).reconcile(cm_frame, pgm_frame)→ a new pgmPredictionFrame. The(time, priogrid_gid) → country_idmapping is injected as arrays, never fetched (ADR-014/ADR-023).reconcile_proportional(grid, country)— the per-draw top-down proportional method (zeros preserved, country totals authoritative, non-negative).assert_reconcile_contract(...)— the conformance suite.
How it got here
Faithfully relocated WET from views-postprocessing (where it was mis-homed and stranded) — the ported modules differ from the originals by import lines only. Proven correct by the frozen views-reporting torch-oracle parity tests and a 136-case new-vs-old np.array_equal bit-identity head-to-head.
Notes
- Charter: frame-reconciliation only; no IO, scoring, plotting, fetched mapping, or foreign
views_*. Import-DAGviews_frames_reconcile → {views_frames}. - WET before DRY:
grouping.py↔cross_level_alignfold deferred; the probabilistic upgrade (C-37) is a future sibling module. - Consumer repoint (views-models) + views-postprocessing deletion are the cross-repo cutover, gated on this release.
- Full changelog: CHANGELOG.md.