From 95d7d592eab2d2a86f82c41d538d958095ca3144 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Wed, 14 Oct 2026 15:23:04 -0400 Subject: [PATCH] =?UTF-8?q?Document=20and=20test=20the=202022=E2=80=932036?= =?UTF-8?q?=20SPM=20forecast=20horizon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit spm-calculator 1.1.0 extends the canonical forecast to 2036. The docs describe the 2022–2036 horizon, 2036 joins the supported household years, and 2037 becomes the out-of-horizon example. This needs a bundle that certifies the 1.1.0 forecast. Co-Authored-By: Claude Opus 5.5 (1M context) --- changelog.d/618.changed.md | 1 + docs/households.md | 2 +- docs/microsim.md | 2 +- tests/test_spm_household.py | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 changelog.d/618.changed.md diff --git a/changelog.d/618.changed.md b/changelog.d/618.changed.md new file mode 100644 index 00000000..cf52e674 --- /dev/null +++ b/changelog.d/618.changed.md @@ -0,0 +1 @@ +Document and test the 2022–2036 SPM forecast horizon: 2036 joins the supported household years and 2037 becomes the out-of-horizon example. diff --git a/docs/households.md b/docs/households.md index f83e3fc7..4b776231 100644 --- a/docs/households.md +++ b/docs/households.md @@ -70,7 +70,7 @@ set of keys is: | `as_of` | Optional information-date cutoff accepted by the pinned artifact. | Forecast paths, provider objects and fallback policies are not settings. The -canonical artifact covers 2022–2035. Its receipt distinguishes published +canonical artifact covers 2022–2036. Its receipt distinguishes published national inputs from forecast components and research geography; an unsupported year fails instead of being extrapolated by the wrapper. Scenario forecasts are conditional research estimates, not agency forecasts or uncertainty bounds. diff --git a/docs/microsim.md b/docs/microsim.md index 98dd0244..6a8047e1 100644 --- a/docs/microsim.md +++ b/docs/microsim.md @@ -64,7 +64,7 @@ The same `spm=` selection is accepted by `pe.us.managed_microsimulation`; its returned country simulation exposes `spm_config` and `spm_provenance()` too. See the [household SPM contract](households.md#spm-geography-and-measurement-selection) for exact keys, -the 2022–2035 artifact horizon and explicit geography errors. No provider or +the 2022–2036 artifact horizon and explicit geography errors. No provider or forecast-file path can replace the bundle's pinned artifact. For a small local development dataset, explicitly opt out of managed data diff --git a/tests/test_spm_household.py b/tests/test_spm_household.py index 5e63ca8e..03401682 100644 --- a/tests/test_spm_household.py +++ b/tests/test_spm_household.py @@ -62,7 +62,7 @@ def household_inputs(**overrides): return values -@pytest.mark.parametrize("year", [2024, 2026, 2035]) +@pytest.mark.parametrize("year", [2024, 2026, 2035, 2036]) def test_explicit_national_amounts_and_component_provenance(year, tmp_path): result = pe.us.calculate_household( **household_inputs(year=year), @@ -390,7 +390,7 @@ def test_axes_reforms_and_scenarios_keep_detached_receipts(): assert selection == {"geography_kind": "national", "scenario": "ce_trend"} -@pytest.mark.parametrize("year", [2021, 2036]) +@pytest.mark.parametrize("year", [2021, 2037]) def test_year_outside_canonical_horizon_is_not_silently_extrapolated(year): with pytest.raises(ValueError, match="no entry|unavailable|not available"): pe.us.calculate_household(