Releases: views-platform/views-reporting
Release list
v0.3.4 — co-resolution release for pipeline-core 3.3.0
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 owndata/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 currentsys.stdoutat call time, socontextlib.redirect_stdoutand pytest capture are respected. Passingfileexplicitly 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
nanrather than0.0. views-evaluation's MetricFrame mean row is ananmeanand 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 theviews-frames<2cap on views-evaluation 2.0.0's[frames]extra; a separate qualification follows. views-transformation-library,stepshiftandxarrayleave 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
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.0ceiling 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) andviews-frames>=1.10.2,<2.0.0. - Python envelope
>=3.11,<3.15(see v0.3.2 notes).
views-reporting v0.3.2
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.9chain 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.0andviews-frames>=1.10.2,<2.0.0(coordinated platform release).
views-reporting v0.3.1
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). mainanddevelopmentare 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
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 injectedEvaluationSource— pipeline-core's reporting stage constructs aMetricFrameFileSourceover the persisted evaluation-of-record MetricFrame and passes it in. The render-time WandB scrape (get_latest_runand 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 layoutroot/<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)
PredictionFramein; 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
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.