Phase 12 — Second Country + Second Engine¶
Defined 2026-08-24 at the goal reset (plan.md). Serves Goal A (data end-to-end beyond Greece) and completes the scientist showcase moment.
Workstream 1 — Cyprus (owner-decided 2026-08-24)¶
Prove the ingest pipeline parameterizes by landing one comparable-size
country. This is a small code change, not a config knob (verified
2026-08-24): GREECE_BBOX is independently redeclared in ~7 pack scripts
(litpop_exposure.py:176, coastal_flood.py:158, earthquake_eshm20.py:192,
ghsl_exposure.py, eurostat_census_grid.py, heatwave_packs.py,
_wildfire_fwi_common.py) plus Greek naming/ISO defaults
(river_flood_aqueduct.py, dataset_identity.py, country_iso3='GRC').
Scope:
1. Hoist bbox/country/naming into per-country parameters (one shared
country-profile module; packs read it — no per-pack constants left).
2. Load Cyprus admin boundaries (load_admin_boundaries.py — mind the
region-vocabulary coupling noted in #890).
3. Run the packs for Cyprus (river flood, coastal, earthquake + indicator
perils where the source covers CY), seed per-org curves.
4. Walk the showcase script's citizen + insurer moments on a Cyprus pin and
portfolio.
Explicitly not pan-EU — #447 stays parked (continent-scale ingest is gated on out-of-core aggregation work, #446).
Workstream 2 — CLIMADA sidecar deploy (owner-decided: after engine#33 check)¶
The /agreement surface renders a one-engine degenerate case today. The
CLIMADA adapter already exists in-repo
(worker/models/climada_adapter.py — an unreachable sidecar surfaces as
divergence.failed_engines); the remaining work is deploying the sidecar
and validating the comparison.
Gate (first task): check engine#33 (MDD/PAA clip divergence vs CLIMADA) and resolve or explain it — the showcase must not display a known bug as "engine divergence".
Scope: sidecar image in compose (+ prod), engine roster config, a
side-by-side validation run on the reference dataset, divergence badges live
on /agreement.
Exit criteria¶
smoke_e2e.py(or a country-parameterized variant) passes for Cyprus.- The citizen and insurer moments walk on Cyprus data.
/agreementshows two live engines with explained divergence on the reference run.