Skip to content

Releases: views-platform/views-reporting

v0.3.4 — co-resolution release for pipeline-core 3.3.0

Choose a tag to compare

@Polichinel Polichinel released this 19 Sep 02:45
73b077a

0.3.4 — co-resolution release for pipeline-core 3.3.0.

  • Requires views-pipeline-core>=3.3.0: the first pipeline-core whose reporting stage looks up each comparison model's metrics under that model's own data/generated (PerModelMetricFrameSource, vpc #485). With older pipeline-core, baseline and constituent rows were silently absent from every evaluation report that declared them — ensemble and single-model subjects alike (register C-215). Locked-layout paths are unchanged; only the root per model moved.
  • Requires views-evaluation>=2.0.0 (pandas-free); the MetricFrame surface this repo consumes is unchanged.
  • Seam contract test corrected to pin the per-model source (the old test locked the defective subject-rooted construction); a real two-root on-disk round-trip test added.
  • CM choropleth now refuses (loudly, ValueError) a frame carrying two country_ids under one ISO code instead of silently drawing one of them (C-227).
  • PosteriorDistributionAnalyzer.print_summary(file=None): the default stream is now resolved to the current sys.stdout at call time, so contextlib.redirect_stdout and pytest capture are respected. Passing file explicitly is unchanged (#260).
  • Inherited from views-evaluation 1.1.0 (their ADR-015 R9), not a change in this repo: AP on a group with no positive truth is now nan rather than 0.0. views-evaluation's MetricFrame mean row is a nanmean and excludes such groups, so AP means read from reports can shift for sparse targets.
  • Still on views-frames 1.x (<2.0.0). views-frames 2.0.0 is gated by two ceilings — ours and the views-frames<2 cap on views-evaluation 2.0.0's [frames] extra; a separate qualification follows.
  • views-transformation-library, stepshift and xarray leave the resolved dependency closure (pipeline-core 3.3.0 dropped the first; the other two arrived through it). views-reporting never imported any of them.

No new views-reporting features. Full changes: #280–#285, #291–#299.

views-reporting v0.3.3

Choose a tag to compare

@Polichinel Polichinel released this 02 Aug 13:44
2367fbc

Platform co-resolution fix (supersedes v0.3.2 as the install target; same feature content as v0.3.0).

  • views-evaluation[frames]>=1.0.0,<2.0.0 — views-evaluation 1.0.0 (released today) is the first PyPI release carrying the MetricFrame emit this package consumes; 0.3.2's <1.0.0 ceiling excluded it. The interim git-source is retired; the test suite runs green against the released 1.0.0.
  • Requires views-pipeline-core>=3.0.0,<4.0.0 (resolvable once vpc 3.x publishes, per the coordinated platform release) and views-frames>=1.10.2,<2.0.0.
  • Python envelope >=3.11,<3.15 (see v0.3.2 notes).

views-reporting v0.3.2

Choose a tag to compare

@Polichinel Polichinel released this 02 Aug 13:11
2f94f8f

Python envelope aligned with the platform (supersedes v0.3.1 as the install target; same feature content as v0.3.0).

  • requires-python = ">=3.11,<3.15" — the same envelope views-pipeline-core 3.0.0 and views-evaluation declare, so views-reporting no longer forces resolver exclusion in 3.12+ platform environments.
  • Tested on 3.11, which is also the only version the full stack installs on in practice today: the upstream views-pipeline-core → ingester3 → levenshtein 0.20.9 chain has no cp312+ wheel and its source build fails on 3.12/3.13 (re-verified 2026-08-02) — a 3.12–3.14 install resolves, then fails loudly at that build. The fix is upstream (ingester3's levenshtein pin); tracked as register C-36.
  • Requires views-pipeline-core>=3.0.0,<4.0.0 and views-frames>=1.10.2,<2.0.0 (coordinated platform release).

views-reporting v0.3.1

Choose a tag to compare

@Polichinel Polichinel released this 02 Aug 12:30
1a435c4

The install target for the coordinated platform release (supersedes v0.3.0 — same feature content, corrected dependency floors).

  • views-frames floor raised to >=1.10.2,<2.0.0 — the shipped floor now matches the tested substrate. views-frames v1.9.0 deliberately changed the tower-tip point estimate (tip_mass 0.5 → 0.25, their ADR-019 Amendment 3): report point estimates differ numerically from what a v0.3.0-era environment produced with an older views-frames; our characterization suite is re-baselined to the new values and the local ADR-019 records the amendment. v0.3.0's looser floor (>=1.0.0) allowed untested substrate resolution — fixed here.
  • CI now runs on pushes to main (previously development-only; platform pattern).
  • main and development are synced at the same commit.
  • Requires views-pipeline-core>=3.0.0,<4.0.0 (coordinated release — resolvable once vpc 3.x is on PyPI).

Full v0.3.x feature notes: see v0.3.0.

views-reporting v0.3.0

Choose a tag to compare

@Polichinel Polichinel released this 02 Aug 11:31

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).

v0.2.0

Choose a tag to compare

@Polichinel Polichinel released this 18 Jun 14:00
d5d0776

Release 0.2.0 — promotes all work since 0.1.0 to main and PyPI.

Highlights:

  • ReportingConfig in-package config primitive (ADR-016) + canonical evaluation-metrics standard (ADR-017).
  • HDI credible-level selector: legend-selectable multi-level HDI bands, config-sourced.
  • Reproducible offline evaluation reports (WandB doubles); C-40 fix (visible "samples unavailable").
  • Constituent resolution: degrade-and-announce + opt-in strict mode (#105), built on the pipeline-core #177 absent-vs-transient get_latest_run contract; characterization tests (#106).
  • CI hardened: fixture-dependent tests skip when their gitignored data is absent.

Known limitation (documented, not a blocker): risk C-48 — the evaluation report sources constituent metrics from the WandB cloud rather than the authoritative local eval files; in environments whose pipeline-core lacks #177 an absent constituent is labelled "degraded" rather than "absent". The package installs and runs correctly.