v2.2.0
Highlights
- Opt-in API token authentication for the chap-core API, letting deployments require a token without breaking existing unauthenticated setups.
- Pluggable future-weather providers with a look-ahead flag, so forecasts can draw future climate data from different sources.
- Consolidated backtest endpoints with persisted backtest parameters, making evaluation runs reproducible and inspectable after the fact.
- Single consolidated Helm chart replacing the previous multi-chart layout, plus a self-contained
compose.ghcr.ymldeployment file. - Python 3.14 compatibility.
Features
- Opt-in API token for the chap-core API (#512)
- Pluggable future-weather providers with look-ahead flag (#568)
- Endpoint suggesting covariate names for model-independent datasets (#575)
- Persist backtest parameters and consolidate the backtest endpoints (#569)
- Ensemble stacking (#534)
optimization_directioninMetricSpecand extra search-space argument (#552)- Restart policies and container healthcheck gaps closed (#532)
- Chart: let the registration job be tracked (#516)
- Compose: make
compose.ghcr.ymla self-contained deployment file (#550)
Refactors and performance
- Consolidate CHAP Helm charts into a single chart (#489)
- Align prediction horizon fields with chapkit (CLIM-972) (#547)
- Move train-test-generator out of backtest into
Evaluation.create(#554) - Plotting: drop vegafusion and pyarrow, compile Vega with vl-convert (#469)
- Vectorise sample CRPS via order-statistic formula (#467)
- C4 architecture model with multi-renderer diagram export (CLIM-791) (#470)
Bug Fixes
- Make chap-core compatible with Python 3.14 (#540)
- Make service registry heartbeat atomic so pings cannot resurrect or overwrite registrations (CLIM-1073) (#576)
- Bound chapkit client requests, treat cancelled jobs as failures, keep error detail (CLIM-1074) (#577)
- Drain chapkit service output so local services do not block (CLIM-1072) (#574)
- Persist data sources when creating a dataset via make-dataset (#578)
- Fail backtests when a model skips org units or splits (#571)
- Preserve forecast locations for models without covariates (CLIM-1048) (#562)
- Preserve model template and configuration provenance (CLIM-886) (#527)
- Accept provenance fields from chapkit 2.0 services in the service info parser (#564)
- Populate dataset period metadata when loading evaluations (#443)
- Restrict all-locations dataset when
last_nis set for explain-lime (#549) - Report runner command output as text on failure (#536)
- Wait for DHIS2 before registering the chap route (#529)
- Stop service registration opening a second redis connection (#511)
- Stop forwarding
X-Service-Keyin the v2 service proxy (#513) - Keep the service proxy out of the OpenAPI schema (#530)
- Use
chap_coreas coverage target inmake test-all(#493)
Documentation
- DAC2026 series with configurable model tutorial (#442, #444, #446)
- Document compose overlays and running your own model (CLIM-504) (#541)
- Clean up
last_ndocs and fixsurrogate_nameoptions for LIME (#553) - Point local DHIS2 setup at docker-dhis2-core (#538)
- Correct
X-Service-Keyscope in the API authentication page (#514)
Full Changelog: v2.1.0...v2.2.0