Skip to content

views-reporting v0.3.0

Choose a tag to compare

@Polichinel Polichinel released this 02 Aug 11:31
· 36 commits to main since this release

views-reporting v0.3.0

160 commits since v0.2.0. Contains one breaking change (0.x convention: breaking-in-minor).

Breaking

  • EvaluationReportTemplate.generate(source=, target=) (#173, ADR-018/C-108): the evaluation report now renders from an injected EvaluationSource — pipeline-core's reporting stage constructs a MetricFrameFileSource over the persisted evaluation-of-record MetricFrame and passes it in. The render-time WandB scrape (get_latest_run and the wrong-run failure class it carried) is retired. Requires views-pipeline-core ≥ 3.0.0 (their reporting stage on the new API; a fail-loud preflight on their side names the needed upgrade). The on-disk frame layout root/<model>/<run_type>/metricframe_<target> is a locked cross-repo contract, pinned by executable tests on both sides.

Global-PGM forecast product (epic #230, ADR-021)

  • Global coverage: bundled offline entity metadata for the full PRIO-GRID (66,205 land cells in the forecast region, 99.50% crosswalked) via a declared-interim GAUL→ISO3→VIEWS crosswalk. The interim status, its unmapped sets (Western Sahara, Kashmir, Abyei…, 322 cells), and the Kosovo→Serbia absorption are declared per-artifact in the bundle's stamp.json — see register C-211; the platform coding decision is tracked cross-repo (views-datafactory#341 / views-postprocessing#123) and this release does not wait for it.
  • Four summary layers per sample target: MAP point estimate, P(any violence) (posterior share of draws above zero — the layer a zero-inflated posterior's mode hides), and upper 90%/95% HDI bounds. CM renders MAP (its line graph already carries HDI).
  • Horizon-step maps: steps +1/+6/+12/+24/+36 as PNGs plus an interactive hover heatmap at step +1; human-readable headings ("sb — MAP point estimate — Jun 2029 (step +1)").
  • Layer-typed colour scales (log for counts, linear unit-interval for probabilities), grey no-data rendering, SVG country borders above cells, no dead animation chrome, one shared plotly.js per report (~37 MB global reports).

Frames-native rendering (epics #137/#138/#204, ADR-019/020)

  • PredictionFrame in; posterior samples stay numpy-bound; pandas only at declared seams (S>1 frames are refused at the mapping/line seams). Point/interval summaries come from the views-frames tower.
  • Offline/air-gapped rendering: bundled entity metadata (no viewser at render time), vendored CSS + inlined plotly.js, machine-readable provenance block in every artifact (incl. bundle snapshot date and plotly/plotly.js versions).

Scale & robustness

  • S=1000 global feasible: streamed per-target loading and a float32-preserving collapse (measured collapse overhead ≈ 0 over the resident source; ~12 GB projected peak for a full global S=1000 target set).
  • Ingestion guards: structural conformance + NaN policy + coverage checks (an interior month gap fails loud; ragged entity coverage warns once, visibly).
  • Cross-repo assurance: executable contract tests against the real pipeline-core reporting stage (call shape, constructor contract, path layout); canonical vpc import surface with a permanent no-shim guard; plotly bump canary.
  • Label rendering −31% (one cell→country resolution per render, memoized lookup series).

Governance

ADR-016..021 added/updated; CICs current; technical risk register at 78 concerns (66 resolved) with full resolution trails. Suite: 429 tests.

Install note: views-reporting 0.3.0 requires views-pipeline-core >= 3.0.0 — resolvable from PyPI once vpc's 3.x is published (coordinated platform release).