From 3a332c6aee87db6c64addc7236b489ba00affd86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:45:03 +0200 Subject: [PATCH 01/12] Fan out the two-level UK targets over the region tier (#905) The 18 country+region contract targets (ONS population by age band, VOA council-tax stock by band) compiled to one country row each because the national generator pins every target to a single geography. They now fan out over the twelve-area region tier declared in geography_ladder (UK_REGION_TIER: the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level), one reference per cell named and measured target_id@geography_id, through a new shared authoring option (geography_fanout_by_target_id + geography_fanout_metadata on TargetReferenceAuthoringConfig). The VOA family fans over the English regions only, because its binding already pins country == ENGLAND. An unsigned absent cell refuses the run, as the area-grain authoring does. The 18 single country rows are retired: the twelve ONS cells of a band sum to the former UK row within the same publication (0-9: 7,553,013 at mid-2024). Register: 595 active (424 - 18 + 189); the 406 untouched references regenerate byte-identically; membership records the fan-out roster per target under geography_pins. Contract binding notes describe our mechanism instead of the incumbent's compute_regional_age. Co-Authored-By: Claude Fable 5.1 --- .../905-uk-region-grain-activation.added.md | 1 + .../build/target_reference_authoring.py | 123 +- .../build/uk/target_reference_membership.json | 9584 ++++++++++++----- .../microcosm/build/uk/target_references.json | 7897 ++++++++++++-- .../build/uk/uk_population_targets.json | 36 +- .../microcosm/build/uk_runtime/__init__.py | 6 + .../build/uk_runtime/geography_ladder.py | 66 +- .../tests/test_country_spec.py | 2 +- .../tests/test_target_reference_authoring.py | 158 + .../tests/test_uk_geography_ladder.py | 36 +- .../tests/test_uk_national_calibration.py | 2 +- .../tests/test_uk_target_references.py | 133 +- tools/generate_uk_target_references.py | 124 +- 13 files changed, 14270 insertions(+), 3898 deletions(-) create mode 100644 changelog.d/905-uk-region-grain-activation.added.md diff --git a/changelog.d/905-uk-region-grain-activation.added.md b/changelog.d/905-uk-region-grain-activation.added.md new file mode 100644 index 0000000000..67160e2997 --- /dev/null +++ b/changelog.d/905-uk-region-grain-activation.added.md @@ -0,0 +1 @@ +Activate UK region grain: the 18 two-level (country + region) contract targets — ONS population by age band and VOA council-tax stock by band — fan out over the twelve-area region tier (nine English regions, Wales, Scotland, Northern Ireland), one reference per area scoped on the spine by a household-region predicate, replacing the 18 single country rows; the cross-grain rule gains `region` between country and constituency with every tier code as its own leg, resolved for English areas through the crosswalk's ladder-derived region membership (microcosm#905). diff --git a/packages/microcosm-build/src/microcosm/build/target_reference_authoring.py b/packages/microcosm-build/src/microcosm/build/target_reference_authoring.py index fcc5cd100f..5a56ff095b 100644 --- a/packages/microcosm-build/src/microcosm/build/target_reference_authoring.py +++ b/packages/microcosm-build/src/microcosm/build/target_reference_authoring.py @@ -39,6 +39,15 @@ ["LedgerTargetReference", "TargetRegistry"], "TargetRegistry" ] GeographyPin = Mapping[str, str] +#: ``(target, geography_level, geography_id, entity) -> extra reference metadata`` +#: for one geography fan-out row. Values are strings (reference metadata is a +#: string mapping); a country encodes structured values, such as a predicate, +#: as JSON. +GeographyFanoutMetadata = Callable[ + [Mapping[str, Any], str, str, str], Mapping[str, str] +] +#: Ordered ``(geography_level, geography_id)`` pairs one target fans out over. +GeographyFanout = tuple[tuple[str, str], ...] @dataclass(frozen=True) @@ -71,6 +80,18 @@ class TargetReferenceAuthoringConfig: default_factory=dict ) signed_exclusions_by_target_id: Mapping[str, str] = field(default_factory=dict) + #: Targets that fan out over a declared geography roster instead of pinning + #: one geography: one reference per ``(geography_level, geography_id)``, + #: named ``target_id@geography_id`` with its own measure column, the same + #: way area-grain references are authored. A target listed here must not + #: also carry a geography pin. Every roster cell must compile; an absent + #: fact refuses the run rather than deferring silently. + geography_fanout_by_target_id: Mapping[str, GeographyFanout] = field( + default_factory=dict + ) + #: Optional per-row metadata for geography fan-out rows (for example the + #: predicate that scopes the measure to the row's geography). + geography_fanout_metadata: GeographyFanoutMetadata | None = None binding_vocabulary: frozenset[str] = frozenset() source_fact_feed: str = "" uprating_appliers: Mapping[str, UpratingApplier] = field(default_factory=dict) @@ -187,7 +208,22 @@ def author_target_references( for target in reference_targets: target_id = str(target["target_id"]) pin = config.geography_pins.get(target_id, {}) - geography_pin_report[target_id] = dict(pin) + geography_fanout = config.geography_fanout_by_target_id.get(target_id) + if geography_fanout: + if pin: + raise ValueError( + f"target {target_id!r} declares both a geography pin " + f"{dict(pin)!r} and a geography fan-out; a fanned-out " + "target takes its geography from the roster only." + ) + geography_pin_report[target_id] = { + "geography_fanout": [ + {"geography_level": str(level), "geography_id": str(area_id)} + for level, area_id in geography_fanout + ] + } + else: + geography_pin_report[target_id] = dict(pin) source_facts = _source_prefilter(fact_rows, facts_by_source, target) selector = _target_selector(target, pin, config) signed_exclusion = config.signed_exclusions_by_target_id.get(target_id) @@ -240,6 +276,10 @@ def author_target_references( "matched_fact_count_overall": len(matched), "matched_fact_count_at_or_before_period": len(eligible), } + row_geography_level = str(row["metadata"].get("geography_level") or "") + if row_geography_level: + entry["geography_level"] = row_geography_level + entry["geography_id"] = str(row["metadata"].get("geography_id") or "") if reference.period_match_policy == "source_window": entry["matched_fact_count_in_source_window"] = sum( _assertion_allowed(reference, fact) for fact in matched @@ -255,6 +295,15 @@ def author_target_references( except ValueError as error: entry["status"] = _classify_deferral(error, matched, eligible) entry["error"] = _compact_compile_error(entry["status"]) + if geography_fanout: + # A roster cell that does not compile is a hole in a + # declared partition, not a deferral: refuse, the way the + # area-grain authoring refuses an unsigned absence. + raise ValueError( + f"Unsigned geography fan-out absence for {target_id!r} " + f"at {entry.get('geography_level')!r}/" + f"{entry.get('geography_id')!r}: {entry['status']}." + ) from error else: spec = registry.specs[0] resolved_period = spec.metadata.get("ledger_fact_period", "") @@ -685,6 +734,14 @@ def _candidate_rows( config: TargetReferenceAuthoringConfig, hierarchy_catalog: Mapping[str, Any], ) -> Iterable[dict[str, Any]]: + geography_fanout = config.geography_fanout_by_target_id.get( + str(target["target_id"]) + ) + if geography_fanout: + yield from _geography_fanout_rows( + target, geography_fanout, config, hierarchy_catalog=hierarchy_catalog + ) + return selector = _target_selector(target, geography_pin, config) if "groupby_dimension" in selector: rows = _fanout_rows( @@ -705,6 +762,70 @@ def _candidate_rows( ) +def _geography_fanout_rows( + target: Mapping[str, Any], + areas: GeographyFanout, + config: TargetReferenceAuthoringConfig, + *, + hierarchy_catalog: Mapping[str, Any], +) -> Iterable[dict[str, Any]]: + """One reference per roster cell, named and measured ``target_id@area``. + + The selector is the contract selector plus the cell's geography, exactly + as a pinned reference is built, so every other declaration (value + operation, member count, period policy, uprating holds) follows the + contract unchanged. The row's metadata carries the cell's geography under + the same keys area-grain references use, plus whatever the country's + ``geography_fanout_metadata`` adds for the cell. + """ + + target_id = str(target["target_id"]) + seen: set[str] = set() + for geography_level, geography_id in areas: + level = str(geography_level) + area_id = str(geography_id) + if not level or not area_id: + raise ValueError( + f"target {target_id!r} geography fan-out has a blank cell " + f"({geography_level!r}, {geography_id!r})." + ) + if area_id in seen: + raise ValueError( + f"target {target_id!r} geography fan-out lists {area_id!r} twice." + ) + seen.add(area_id) + selector = _target_selector( + target, + {"geography_level": level, "geography_id": area_id}, + config, + ) + row = _reference_row( + target, + selector, + config, + name=f"{target_id}@{area_id}", + hierarchy_catalog=hierarchy_catalog, + ) + metadata: dict[str, str] = { + **row["metadata"], + "geography_level": level, + "geography_id": area_id, + } + if config.geography_fanout_metadata is not None: + extra = config.geography_fanout_metadata( + target, level, area_id, str(row["entity"]) + ) + for key, value in extra.items(): + if not isinstance(value, str): + raise ValueError( + f"target {target_id!r} geography fan-out metadata " + f"{key!r} must be a string, got {type(value).__name__}." + ) + metadata[str(key)] = value + row["metadata"] = metadata + yield row + + def _target_selector( target: Mapping[str, Any], geography_pin: GeographyPin, diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json b/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json index bb462b76a8..17cc9a2534 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_reference_membership.json @@ -1,11 +1,11 @@ { "source_fact_feed": "chronicle-uk-474a0ae1-consumer-facts", "target_period": 2025, - "candidate_count": 438, + "candidate_count": 609, "contract_target_count": 210, - "active_reference_count": 424, + "active_reference_count": 595, "status_counts": { - "active": 424, + "active": 595, "no_fact_at_or_before_period": 7, "signed_excluded": 7 }, @@ -363,40 +363,472 @@ "geography_id": "K02000001" }, "ons.population.age_0_9_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_10_19_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_20_29_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_30_39_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_40_49_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_50_59_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_60_69_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_70_79_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.age_80_89_by_region": { - "geography_level": "country", - "geography_id": "K02000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + }, + { + "geography_level": "country", + "geography_id": "W92000004" + }, + { + "geography_level": "country", + "geography_id": "S92000003" + }, + { + "geography_level": "country", + "geography_id": "N92000002" + } + ] }, "ons.population.female_0_4": { "geography_level": "country", @@ -603,72 +1035,396 @@ "geography_id": "K02000001" }, "voa.council_tax_stock.band_a": { - "geography_level": "country", - "geography_id": "E92000001" - }, - "scotgov.council_tax_stock.band_a": { - "geography_level": "country", - "geography_id": "S92000003" - }, - "voa.council_tax_stock.band_b": { - "geography_level": "country", - "geography_id": "E92000001" - }, - "scotgov.council_tax_stock.band_b": { - "geography_level": "country", + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] + }, + "scotgov.council_tax_stock.band_a": { + "geography_level": "country", "geography_id": "S92000003" }, - "voa.council_tax_stock.band_c": { + "voa.council_tax_stock.band_b": { + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] + }, + "scotgov.council_tax_stock.band_b": { "geography_level": "country", - "geography_id": "E92000001" + "geography_id": "S92000003" + }, + "voa.council_tax_stock.band_c": { + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_c": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.band_d": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_d": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.band_e": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_e": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.band_f": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_f": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.band_g": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_g": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.band_h": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.band_h": { "geography_level": "country", "geography_id": "S92000003" }, "voa.council_tax_stock.total": { - "geography_level": "country", - "geography_id": "E92000001" + "geography_fanout": [ + { + "geography_level": "region", + "geography_id": "E12000001" + }, + { + "geography_level": "region", + "geography_id": "E12000002" + }, + { + "geography_level": "region", + "geography_id": "E12000003" + }, + { + "geography_level": "region", + "geography_id": "E12000004" + }, + { + "geography_level": "region", + "geography_id": "E12000005" + }, + { + "geography_level": "region", + "geography_id": "E12000006" + }, + { + "geography_level": "region", + "geography_id": "E12000007" + }, + { + "geography_level": "region", + "geography_id": "E12000008" + }, + { + "geography_level": "region", + "geography_id": "E12000009" + } + ] }, "scotgov.council_tax_stock.total": { "geography_level": "country", @@ -856,15 +1612,114 @@ "dfi_ni.bus.passenger_receipts", "nithc.public_transport_support", "obr.esa", - "ons.population.age_0_9_by_region", - "ons.population.age_10_19_by_region", - "ons.population.age_20_29_by_region", - "ons.population.age_30_39_by_region", - "ons.population.age_40_49_by_region", - "ons.population.age_50_59_by_region", - "ons.population.age_60_69_by_region", - "ons.population.age_70_79_by_region", - "ons.population.age_80_89_by_region", + "ons.population.age_0_9_by_region@E12000001", + "ons.population.age_0_9_by_region@E12000002", + "ons.population.age_0_9_by_region@E12000003", + "ons.population.age_0_9_by_region@E12000004", + "ons.population.age_0_9_by_region@E12000005", + "ons.population.age_0_9_by_region@E12000006", + "ons.population.age_0_9_by_region@E12000007", + "ons.population.age_0_9_by_region@E12000008", + "ons.population.age_0_9_by_region@E12000009", + "ons.population.age_0_9_by_region@N92000002", + "ons.population.age_0_9_by_region@S92000003", + "ons.population.age_0_9_by_region@W92000004", + "ons.population.age_10_19_by_region@E12000001", + "ons.population.age_10_19_by_region@E12000002", + "ons.population.age_10_19_by_region@E12000003", + "ons.population.age_10_19_by_region@E12000004", + "ons.population.age_10_19_by_region@E12000005", + "ons.population.age_10_19_by_region@E12000006", + "ons.population.age_10_19_by_region@E12000007", + "ons.population.age_10_19_by_region@E12000008", + "ons.population.age_10_19_by_region@E12000009", + "ons.population.age_10_19_by_region@N92000002", + "ons.population.age_10_19_by_region@S92000003", + "ons.population.age_10_19_by_region@W92000004", + "ons.population.age_20_29_by_region@E12000001", + "ons.population.age_20_29_by_region@E12000002", + "ons.population.age_20_29_by_region@E12000003", + "ons.population.age_20_29_by_region@E12000004", + "ons.population.age_20_29_by_region@E12000005", + "ons.population.age_20_29_by_region@E12000006", + "ons.population.age_20_29_by_region@E12000007", + "ons.population.age_20_29_by_region@E12000008", + "ons.population.age_20_29_by_region@E12000009", + "ons.population.age_20_29_by_region@N92000002", + "ons.population.age_20_29_by_region@S92000003", + "ons.population.age_20_29_by_region@W92000004", + "ons.population.age_30_39_by_region@E12000001", + "ons.population.age_30_39_by_region@E12000002", + "ons.population.age_30_39_by_region@E12000003", + "ons.population.age_30_39_by_region@E12000004", + "ons.population.age_30_39_by_region@E12000005", + "ons.population.age_30_39_by_region@E12000006", + "ons.population.age_30_39_by_region@E12000007", + "ons.population.age_30_39_by_region@E12000008", + "ons.population.age_30_39_by_region@E12000009", + "ons.population.age_30_39_by_region@N92000002", + "ons.population.age_30_39_by_region@S92000003", + "ons.population.age_30_39_by_region@W92000004", + "ons.population.age_40_49_by_region@E12000001", + "ons.population.age_40_49_by_region@E12000002", + "ons.population.age_40_49_by_region@E12000003", + "ons.population.age_40_49_by_region@E12000004", + "ons.population.age_40_49_by_region@E12000005", + "ons.population.age_40_49_by_region@E12000006", + "ons.population.age_40_49_by_region@E12000007", + "ons.population.age_40_49_by_region@E12000008", + "ons.population.age_40_49_by_region@E12000009", + "ons.population.age_40_49_by_region@N92000002", + "ons.population.age_40_49_by_region@S92000003", + "ons.population.age_40_49_by_region@W92000004", + "ons.population.age_50_59_by_region@E12000001", + "ons.population.age_50_59_by_region@E12000002", + "ons.population.age_50_59_by_region@E12000003", + "ons.population.age_50_59_by_region@E12000004", + "ons.population.age_50_59_by_region@E12000005", + "ons.population.age_50_59_by_region@E12000006", + "ons.population.age_50_59_by_region@E12000007", + "ons.population.age_50_59_by_region@E12000008", + "ons.population.age_50_59_by_region@E12000009", + "ons.population.age_50_59_by_region@N92000002", + "ons.population.age_50_59_by_region@S92000003", + "ons.population.age_50_59_by_region@W92000004", + "ons.population.age_60_69_by_region@E12000001", + "ons.population.age_60_69_by_region@E12000002", + "ons.population.age_60_69_by_region@E12000003", + "ons.population.age_60_69_by_region@E12000004", + "ons.population.age_60_69_by_region@E12000005", + "ons.population.age_60_69_by_region@E12000006", + "ons.population.age_60_69_by_region@E12000007", + "ons.population.age_60_69_by_region@E12000008", + "ons.population.age_60_69_by_region@E12000009", + "ons.population.age_60_69_by_region@N92000002", + "ons.population.age_60_69_by_region@S92000003", + "ons.population.age_60_69_by_region@W92000004", + "ons.population.age_70_79_by_region@E12000001", + "ons.population.age_70_79_by_region@E12000002", + "ons.population.age_70_79_by_region@E12000003", + "ons.population.age_70_79_by_region@E12000004", + "ons.population.age_70_79_by_region@E12000005", + "ons.population.age_70_79_by_region@E12000006", + "ons.population.age_70_79_by_region@E12000007", + "ons.population.age_70_79_by_region@E12000008", + "ons.population.age_70_79_by_region@E12000009", + "ons.population.age_70_79_by_region@N92000002", + "ons.population.age_70_79_by_region@S92000003", + "ons.population.age_70_79_by_region@W92000004", + "ons.population.age_80_89_by_region@E12000001", + "ons.population.age_80_89_by_region@E12000002", + "ons.population.age_80_89_by_region@E12000003", + "ons.population.age_80_89_by_region@E12000004", + "ons.population.age_80_89_by_region@E12000005", + "ons.population.age_80_89_by_region@E12000006", + "ons.population.age_80_89_by_region@E12000007", + "ons.population.age_80_89_by_region@E12000008", + "ons.population.age_80_89_by_region@E12000009", + "ons.population.age_80_89_by_region@N92000002", + "ons.population.age_80_89_by_region@S92000003", + "ons.population.age_80_89_by_region@W92000004", "ons.population.female_0_4", "ons.population.female_10_14", "ons.population.female_15_19", @@ -2285,5137 +3140,7786 @@ "to": "2025" }, { - "name": "ons.population.age_0_9_by_region", + "name": "ons.population.age_0_9_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_10_19_by_region", + "name": "ons.population.age_0_9_by_region@E12000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_20_29_by_region", + "name": "ons.population.age_0_9_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_30_39_by_region", + "name": "ons.population.age_0_9_by_region@E12000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_40_49_by_region", + "name": "ons.population.age_0_9_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_50_59_by_region", + "name": "ons.population.age_0_9_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_60_69_by_region", + "name": "ons.population.age_0_9_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_70_79_by_region", + "name": "ons.population.age_0_9_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "ons.population.age_80_89_by_region", + "name": "ons.population.age_0_9_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_0_4", + "name": "ons.population.age_0_9_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_10_14", + "name": "ons.population.age_0_9_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_15_19", + "name": "ons.population.age_0_9_by_region@N92000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_20_24", + "name": "ons.population.age_10_19_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_25_29", + "name": "ons.population.age_10_19_by_region@E12000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_30_34", + "name": "ons.population.age_10_19_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_35_39", + "name": "ons.population.age_10_19_by_region@E12000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_40_44", + "name": "ons.population.age_10_19_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_45_49", + "name": "ons.population.age_10_19_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_50_54", + "name": "ons.population.age_10_19_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_55_59", + "name": "ons.population.age_10_19_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_5_9", + "name": "ons.population.age_10_19_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_60_64", + "name": "ons.population.age_10_19_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_65_69", + "name": "ons.population.age_10_19_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_70_74", + "name": "ons.population.age_10_19_by_region@N92000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_75_79", + "name": "ons.population.age_20_29_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_80_84", + "name": "ons.population.age_20_29_by_region@E12000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_85_89", + "name": "ons.population.age_20_29_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.female_90_plus", + "name": "ons.population.age_20_29_by_region@E12000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_0_4", + "name": "ons.population.age_20_29_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_10_14", + "name": "ons.population.age_20_29_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_15_19", + "name": "ons.population.age_20_29_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_20_24", + "name": "ons.population.age_20_29_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_25_29", + "name": "ons.population.age_20_29_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_30_34", + "name": "ons.population.age_20_29_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_35_39", + "name": "ons.population.age_20_29_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_40_44", + "name": "ons.population.age_20_29_by_region@N92000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_45_49", + "name": "ons.population.age_30_39_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_50_54", + "name": "ons.population.age_30_39_by_region@E12000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_55_59", + "name": "ons.population.age_30_39_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_5_9", + "name": "ons.population.age_30_39_by_region@E12000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_60_64", + "name": "ons.population.age_30_39_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_65_69", + "name": "ons.population.age_30_39_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_70_74", + "name": "ons.population.age_30_39_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_75_79", + "name": "ons.population.age_30_39_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_80_84", + "name": "ons.population.age_30_39_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_85_89", + "name": "ons.population.age_30_39_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "ons.population.male_90_plus", + "name": "ons.population.age_30_39_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "ons.population.scotland_children_under_16", + "name": "ons.population.age_30_39_by_region@N92000002", "from": "2024", "to": "2025" }, { - "name": "ons.population.scotland_babies_under_1", + "name": "ons.population.age_40_49_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_a", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@E12000002", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_a", - "from": "2025-09", + "name": "ons.population.age_40_49_by_region@E12000003", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_b", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@E12000004", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_b", - "from": "2025-09", + "name": "ons.population.age_40_49_by_region@E12000005", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_c", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@E12000006", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_c", - "from": "2025-09", + "name": "ons.population.age_40_49_by_region@E12000007", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_d", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@E12000008", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_d", - "from": "2025-09", + "name": "ons.population.age_40_49_by_region@E12000009", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_e", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@W92000004", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_e", - "from": "2025-09", + "name": "ons.population.age_40_49_by_region@S92000003", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_f", - "from": "2025-03", + "name": "ons.population.age_40_49_by_region@N92000002", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_f", - "from": "2025-09", + "name": "ons.population.age_50_59_by_region@E12000001", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_g", - "from": "2025-03", + "name": "ons.population.age_50_59_by_region@E12000002", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_g", - "from": "2025-09", + "name": "ons.population.age_50_59_by_region@E12000003", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.band_h", - "from": "2025-03", + "name": "ons.population.age_50_59_by_region@E12000004", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.band_h", - "from": "2025-09", + "name": "ons.population.age_50_59_by_region@E12000005", + "from": "2024", "to": "2025" }, { - "name": "voa.council_tax_stock.total", - "from": "2025-03", + "name": "ons.population.age_50_59_by_region@E12000006", + "from": "2024", "to": "2025" }, { - "name": "scotgov.council_tax_stock.total", - "from": "2025-09", + "name": "ons.population.age_50_59_by_region@E12000007", + "from": "2024", "to": "2025" }, { - "name": "ons.public_sector_employment", - "from": "2024-12", + "name": "ons.population.age_50_59_by_region@E12000008", + "from": "2024", "to": "2025" }, { - "name": "ons.land.land_value", + "name": "ons.population.age_50_59_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "ons.land.household_land_value", + "name": "ons.population.age_50_59_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "ons.land.corporate_land_value", + "name": "ons.population.age_50_59_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "slc.repayments.england_total_higher_education", + "name": "ons.population.age_50_59_by_region@N92000002", "from": "2024", "to": "2025" }, { - "name": "slc.repayments.england_plan_1", + "name": "ons.population.age_60_69_by_region@E12000001", "from": "2024", "to": "2025" }, { - "name": "slc.repayments.england_plan_2", + "name": "ons.population.age_60_69_by_region@E12000002", "from": "2024", "to": "2025" }, { - "name": "slc.repayments.england_postgraduate", + "name": "ons.population.age_60_69_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "slc.repayments.england_plan_5", + "name": "ons.population.age_60_69_by_region@E12000004", "from": "2024", "to": "2025" }, { - "name": "slc.support.maintenance_loan_recipients", + "name": "ons.population.age_60_69_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "slc.support.maintenance_loan_spend", + "name": "ons.population.age_60_69_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "slc.support.parents_learning_allowance_recipients", + "name": "ons.population.age_60_69_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "slc.support.parents_learning_allowance_spend", + "name": "ons.population.age_60_69_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "slc.support.adult_dependants_grant_recipients", + "name": "ons.population.age_60_69_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "slc.support.adult_dependants_grant_spend", + "name": "ons.population.age_60_69_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "dfe.funded_childcare.working_parent_children_2_to_4", - "from": "2025-01", + "name": "ons.population.age_60_69_by_region@S92000003", + "from": "2024", "to": "2025" }, { - "name": "dfe.funded_childcare.early_learning_2_year_olds", - "from": "2025-01", + "name": "ons.population.age_60_69_by_region@N92000002", + "from": "2024", "to": "2025" }, { - "name": "dfe.funded_childcare.universal_only_children", - "from": "2025-01", + "name": "ons.population.age_70_79_by_region@E12000001", + "from": "2024", "to": "2025" }, { - "name": "dft.bus_fare_receipts.england", + "name": "ons.population.age_70_79_by_region@E12000002", "from": "2024", - "to": "2025", - "index": "dft.local_bus_fares_index", - "factor": "1.05695792880259", - "value_before_uprating": "3417388656.43538" + "to": "2025" }, { - "name": "dft.bus_net_support.england", + "name": "ons.population.age_70_79_by_region@E12000003", "from": "2024", "to": "2025" }, { - "name": "dft.bus_fare_receipts.london", + "name": "ons.population.age_70_79_by_region@E12000004", "from": "2024", - "to": "2025", - "index": "dft.local_bus_fares_index", - "factor": "1", - "value_before_uprating": "1347434943.01459" + "to": "2025" }, { - "name": "dft.bus_net_support.london", + "name": "ons.population.age_70_79_by_region@E12000005", "from": "2024", "to": "2025" }, { - "name": "obr.fuel_duties_cars", + "name": "ons.population.age_70_79_by_region@E12000006", "from": "2024", "to": "2025" }, { - "name": "orr.rail_government_support", + "name": "ons.population.age_70_79_by_region@E12000007", "from": "2024", "to": "2025" }, { - "name": "scotgov.bus.passenger_revenue", + "name": "ons.population.age_70_79_by_region@E12000008", "from": "2024", "to": "2025" }, { - "name": "scotgov.bus.government_support", + "name": "ons.population.age_70_79_by_region@E12000009", "from": "2024", "to": "2025" }, { - "name": "welshgov.bus.public_support", + "name": "ons.population.age_70_79_by_region@W92000004", "from": "2024", "to": "2025" }, { - "name": "dfi_ni.bus.passenger_receipts", + "name": "ons.population.age_70_79_by_region@S92000003", "from": "2024", "to": "2025" }, { - "name": "nithc.public_transport_support", + "name": "ons.population.age_70_79_by_region@N92000002", "from": "2024", "to": "2025" - } - ], - "targets": { - "obr.income_tax": { - "status": "active", - "candidates": [ - { - "name": "obr.income_tax", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 331437583074.4429, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_d928e7da0fbfe088ca1a30d7" - } - ] }, - "obr.ni": { - "status": "active", - "candidates": [ - { - "name": "obr.ni", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 200081395082.7125, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_eccab3ee763d68bb782276a7" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000001", + "from": "2024", + "to": "2025" }, - "obr.ni_employee": { - "status": "active", - "candidates": [ - { - "name": "obr.ni_employee", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 49544363784.26465, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_7e3e3e637a9134760a0a530a" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000002", + "from": "2024", + "to": "2025" }, - "obr.ni_employer": { - "status": "active", - "candidates": [ - { - "name": "obr.ni_employer", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 145324007512.71753, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_c8719021c501d9757e0e0814" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000003", + "from": "2024", + "to": "2025" }, - "obr.ni_self_employed": { - "status": "active", - "candidates": [ - { - "name": "obr.ni_self_employed", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 2902816090.4147716, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_b94b7d74d7df7ff5f9309f3b" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000004", + "from": "2024", + "to": "2025" }, - "obr.vat": { - "status": "active", - "candidates": [ - { - "name": "obr.vat", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 180168938685.41794, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_3c534c3e6313150f8081b777" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000005", + "from": "2024", + "to": "2025" }, - "obr.fuel_duties": { - "status": "signed_excluded", - "candidates": [ - { - "name": "obr.fuel_duties", - "status": "signed_excluded", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "signed_rationale": "The OBR fuel duties fact is all-road-users receipts (freight, vans, business mileage) against a household frame; obr.fuel_duties_cars binds the cars receipts from the OBR vehicle-type release instead (ruling 2026-09-10). The all-road-users row is retained in the contract for registry parity and signed out here rather than carried as a calibration measure exclusion." - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000006", + "from": "2024", + "to": "2025" }, - "hmrc.cgt.liability_total": { - "status": "active", - "candidates": [ - { - "name": "hmrc.cgt.liability_total", - "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, - "resolved_period": 2025, - "resolved_value": 22503000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_222c397017de7bff0a6583a7" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000007", + "from": "2024", + "to": "2025" }, - "obr.sdlt": { - "status": "active", - "candidates": [ - { - "name": "obr.sdlt", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 15406516698.785578, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_1b6d55fc4ccd78bd0ae457e9" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000008", + "from": "2024", + "to": "2025" }, - "obr.attendance_allowance": { - "status": "active", - "candidates": [ - { - "name": "obr.attendance_allowance", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 8492497075.074617, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_4fe1b1966eeb22c0c5ca464c" - } - ] + { + "name": "ons.population.age_80_89_by_region@E12000009", + "from": "2024", + "to": "2025" }, - "obr.carers_allowance": { - "status": "active", - "candidates": [ - { - "name": "obr.carers_allowance", - "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, - "resolved_period": 2025, - "resolved_value": 4569403813.760573, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_ca7be49d51152bcc4c6662f2" - } - ] + { + "name": "ons.population.age_80_89_by_region@W92000004", + "from": "2024", + "to": "2025" }, - "obr.child_benefit": { - "status": "active", + { + "name": "ons.population.age_80_89_by_region@S92000003", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.age_80_89_by_region@N92000002", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_0_4", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_10_14", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_15_19", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_20_24", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_25_29", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_30_34", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_35_39", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_40_44", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_45_49", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_50_54", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_55_59", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_5_9", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_60_64", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_65_69", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_70_74", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_75_79", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_80_84", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_85_89", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.female_90_plus", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_0_4", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_10_14", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_15_19", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_20_24", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_25_29", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_30_34", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_35_39", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_40_44", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_45_49", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_50_54", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_55_59", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_5_9", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_60_64", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_65_69", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_70_74", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_75_79", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_80_84", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_85_89", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.male_90_plus", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.scotland_children_under_16", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.population.scotland_babies_under_1", + "from": "2024", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_a@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_a", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_b@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_b", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_c@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_c", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_d@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_d", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_e@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_e", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_f@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_f", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_g@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_g", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.band_h@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.band_h", + "from": "2025-09", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000001", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000002", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000003", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000004", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000005", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000006", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000007", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000008", + "from": "2025-03", + "to": "2025" + }, + { + "name": "voa.council_tax_stock.total@E12000009", + "from": "2025-03", + "to": "2025" + }, + { + "name": "scotgov.council_tax_stock.total", + "from": "2025-09", + "to": "2025" + }, + { + "name": "ons.public_sector_employment", + "from": "2024-12", + "to": "2025" + }, + { + "name": "ons.land.land_value", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.land.household_land_value", + "from": "2024", + "to": "2025" + }, + { + "name": "ons.land.corporate_land_value", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.repayments.england_total_higher_education", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.repayments.england_plan_1", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.repayments.england_plan_2", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.repayments.england_postgraduate", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.repayments.england_plan_5", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.maintenance_loan_recipients", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.maintenance_loan_spend", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.parents_learning_allowance_recipients", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.parents_learning_allowance_spend", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.adult_dependants_grant_recipients", + "from": "2024", + "to": "2025" + }, + { + "name": "slc.support.adult_dependants_grant_spend", + "from": "2024", + "to": "2025" + }, + { + "name": "dfe.funded_childcare.working_parent_children_2_to_4", + "from": "2025-01", + "to": "2025" + }, + { + "name": "dfe.funded_childcare.early_learning_2_year_olds", + "from": "2025-01", + "to": "2025" + }, + { + "name": "dfe.funded_childcare.universal_only_children", + "from": "2025-01", + "to": "2025" + }, + { + "name": "dft.bus_fare_receipts.england", + "from": "2024", + "to": "2025", + "index": "dft.local_bus_fares_index", + "factor": "1.05695792880259", + "value_before_uprating": "3417388656.43538" + }, + { + "name": "dft.bus_net_support.england", + "from": "2024", + "to": "2025" + }, + { + "name": "dft.bus_fare_receipts.london", + "from": "2024", + "to": "2025", + "index": "dft.local_bus_fares_index", + "factor": "1", + "value_before_uprating": "1347434943.01459" + }, + { + "name": "dft.bus_net_support.london", + "from": "2024", + "to": "2025" + }, + { + "name": "obr.fuel_duties_cars", + "from": "2024", + "to": "2025" + }, + { + "name": "orr.rail_government_support", + "from": "2024", + "to": "2025" + }, + { + "name": "scotgov.bus.passenger_revenue", + "from": "2024", + "to": "2025" + }, + { + "name": "scotgov.bus.government_support", + "from": "2024", + "to": "2025" + }, + { + "name": "welshgov.bus.public_support", + "from": "2024", + "to": "2025" + }, + { + "name": "dfi_ni.bus.passenger_receipts", + "from": "2024", + "to": "2025" + }, + { + "name": "nithc.public_transport_support", + "from": "2024", + "to": "2025" + } + ], + "targets": { + "obr.income_tax": { + "status": "active", + "candidates": [ + { + "name": "obr.income_tax", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 331437583074.4429, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_d928e7da0fbfe088ca1a30d7" + } + ] + }, + "obr.ni": { + "status": "active", + "candidates": [ + { + "name": "obr.ni", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 200081395082.7125, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_eccab3ee763d68bb782276a7" + } + ] + }, + "obr.ni_employee": { + "status": "active", + "candidates": [ + { + "name": "obr.ni_employee", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 49544363784.26465, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_7e3e3e637a9134760a0a530a" + } + ] + }, + "obr.ni_employer": { + "status": "active", + "candidates": [ + { + "name": "obr.ni_employer", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 145324007512.71753, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_c8719021c501d9757e0e0814" + } + ] + }, + "obr.ni_self_employed": { + "status": "active", + "candidates": [ + { + "name": "obr.ni_self_employed", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 2902816090.4147716, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_b94b7d74d7df7ff5f9309f3b" + } + ] + }, + "obr.vat": { + "status": "active", + "candidates": [ + { + "name": "obr.vat", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 180168938685.41794, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_3c534c3e6313150f8081b777" + } + ] + }, + "obr.fuel_duties": { + "status": "signed_excluded", + "candidates": [ + { + "name": "obr.fuel_duties", + "status": "signed_excluded", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "signed_rationale": "The OBR fuel duties fact is all-road-users receipts (freight, vans, business mileage) against a household frame; obr.fuel_duties_cars binds the cars receipts from the OBR vehicle-type release instead (ruling 2026-09-10). The all-road-users row is retained in the contract for registry parity and signed out here rather than carried as a calibration measure exclusion." + } + ] + }, + "hmrc.cgt.liability_total": { + "status": "active", + "candidates": [ + { + "name": "hmrc.cgt.liability_total", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 22503000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_222c397017de7bff0a6583a7" + } + ] + }, + "obr.sdlt": { + "status": "active", + "candidates": [ + { + "name": "obr.sdlt", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 15406516698.785578, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_1b6d55fc4ccd78bd0ae457e9" + } + ] + }, + "obr.attendance_allowance": { + "status": "active", + "candidates": [ + { + "name": "obr.attendance_allowance", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 8492497075.074617, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_4fe1b1966eeb22c0c5ca464c" + } + ] + }, + "obr.carers_allowance": { + "status": "active", + "candidates": [ + { + "name": "obr.carers_allowance", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 4569403813.760573, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_ca7be49d51152bcc4c6662f2" + } + ] + }, + "obr.child_benefit": { + "status": "active", + "candidates": [ + { + "name": "obr.child_benefit", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 13389272724.45089, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_d3ab2c54ce0c4c6a46a7a36b" + } + ] + }, + "obr.council_tax": { + "status": "active", + "candidates": [ + { + "name": "obr.council_tax", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 50925163826.30539, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_16bcd3e2a16bfa44c0b1ea74" + } + ] + }, + "obr.council_tax_england": { + "status": "no_fact_at_or_before_period", + "candidates": [ + { + "name": "obr.council_tax_england", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "obr.council_tax_scotland": { + "status": "no_fact_at_or_before_period", + "candidates": [ + { + "name": "obr.council_tax_scotland", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "obr.council_tax_wales": { + "status": "no_fact_at_or_before_period", + "candidates": [ + { + "name": "obr.council_tax_wales", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "obr.domestic_rates": { + "status": "no_fact_at_or_before_period", + "candidates": [ + { + "name": "obr.domestic_rates", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "obr.esa": { + "status": "active", + "candidates": [ + { + "name": "obr.esa", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 7206287181.538654, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_632a67850494984d9b35e639" + } + ] + }, + "obr.housing_benefit": { + "status": "active", + "candidates": [ + { + "name": "obr.housing_benefit", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 12103254163.788864, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_984cc88cfc4242bd80c679f3" + } + ] + }, + "obr.jobseekers_allowance": { + "status": "active", + "candidates": [ + { + "name": "obr.jobseekers_allowance", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 280558748.04472804, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_d505f8a08a29411dcf69287b" + } + ] + }, + "obr.pension_credit": { + "status": "active", + "candidates": [ + { + "name": "obr.pension_credit", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 6146422389.476461, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_95ea9bc008361c26f90591d4" + } + ] + }, + "obr.pip": { + "status": "active", + "candidates": [ + { + "name": "obr.pip", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 36910059270.5278, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_548ebadeb7d774b32fa6f4ff" + } + ] + }, + "obr.state_pension": { + "status": "active", + "candidates": [ + { + "name": "obr.state_pension", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 146185954351.57382, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_567e55f9f73df2808c1c4be8" + } + ] + }, + "obr.statutory_maternity_pay": { + "status": "active", + "candidates": [ + { + "name": "obr.statutory_maternity_pay", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 3194800881.520547, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_0c45b526e2b233b22d955cc6" + } + ] + }, + "obr.tv_licence_fee": { + "status": "active", + "candidates": [ + { + "name": "obr.tv_licence_fee", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 3872000000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_b0f0afcd44c93532837c9f2a" + } + ] + }, + "obr.universal_credit_in_cap": { + "status": "active", + "candidates": [ + { + "name": "obr.universal_credit_in_cap", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 66410800011.47837, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_e680fe36115d1372d12072e1" + } + ] + }, + "obr.universal_credit_outside_cap": { + "status": "active", + "candidates": [ + { + "name": "obr.universal_credit_outside_cap", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 12875549128.065746, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_4c927d7b33d1eee2455bdbd0" + } + ] + }, + "obr.winter_fuel_allowance": { + "status": "active", + "candidates": [ + { + "name": "obr.winter_fuel_allowance", + "status": "active", + "matched_fact_count_overall": 7, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 1911040880.4619167, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_575778670363b5890c8de847" + } + ] + }, + "isc.private_school_students": { + "status": "active", + "candidates": [ + { + "name": "isc.private_school_students", + "status": "active", + "matched_fact_count_overall": 2, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 556551.0, + "resolved_fact_period": "2024-01", + "resolved_fact_key": "ledger_aggregate_fact_v2_67bd24e7f9158af756625865" + } + ] + }, + "hmrc.salary_sacrifice.it_relief_basic_rate": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.it_relief_basic_rate", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1600000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_7320889e57785e6997224191" + } + ] + }, + "hmrc.salary_sacrifice.it_relief_higher_rate": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.it_relief_higher_rate", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 5500000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_7d9ff26814151157071301e9" + } + ] + }, + "hmrc.salary_sacrifice.it_relief_additional_rate": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.it_relief_additional_rate", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1800000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_49a712ba4b22f0b4b2925ef9" + } + ] + }, + "hmrc.salary_sacrifice.nics_relief_employee": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.nics_relief_employee", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1000000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_341767859ef6030c06c7a153" + } + ] + }, + "hmrc.salary_sacrifice.nics_relief_employer": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.nics_relief_employer", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3400000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_026ae1169f5f0f997bb06479" + } + ] + }, + "hmrc.salary_sacrifice.users_total": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.users_total", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 7700000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_06d585b8684b5fe0ce25f6ec" + } + ] + }, + "hmrc.salary_sacrifice.users_below_cap": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.users_below_cap", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4300000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_a48e584180a6f33d07112d3c" + } + ] + }, + "hmrc.salary_sacrifice.users_above_cap": { + "status": "active", + "candidates": [ + { + "name": "hmrc.salary_sacrifice.users_above_cap", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3300000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_0331d77688891a3c3c3307b6" + } + ] + }, + "hmrc.spi.employment_income.amount_by_total_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc/employment_income_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 82300000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_b1c634a871c843888ab00545" + }, + { + "name": "hmrc/employment_income_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 35500000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_16019afa59e224b690877826" + }, + { + "name": "hmrc/employment_income_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 16900000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_a82c84f67b40867564d2c847" + }, + { + "name": "hmrc/employment_income_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 48600000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_42eb325b6a29afb3e6d157fa" + }, + { + "name": "hmrc/employment_income_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 39200000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1f93702eb88f381f0701c4f8" + }, + { + "name": "hmrc/employment_income_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 172000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_794fd9633d6a2018fee633e7" + }, + { + "name": "hmrc/employment_income_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 36600000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_d85ad655daaa164b1ab33231" + }, + { + "name": "hmrc/employment_income_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 170000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3607635c72d16b4059b6a3f6" + }, + { + "name": "hmrc/employment_income_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 29000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5c3674b48269ffe3c7b28a1b" + }, + { + "name": "hmrc/employment_income_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 139000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_525aeb02ab9a831608756200" + }, + { + "name": "hmrc/employment_income_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 174000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_9f1a70b4e0995af34d7dbbfb" + }, + { + "name": "hmrc/employment_income_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 23100000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1944a2f33309b41b2d5f348d" + }, + { + "name": "hmrc/employment_income_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 118000000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_6178d003a4c1a6198294f174" + } + ] + }, + "hmrc.spi.employment_income.count_by_total_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc/employment_income_count_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 791000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_b83fec2e722ef22cbe28ee76" + }, + { + "name": "hmrc/employment_income_count_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 21000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_618b4f84a2b10fdf0d901df6" + }, + { + "name": "hmrc/employment_income_count_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1360000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5a2e006ccd94f8754760661c" + }, + { + "name": "hmrc/employment_income_count_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3100000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_a4ecaa65aa113092a1c8fcf7" + }, + { + "name": "hmrc/employment_income_count_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 264000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_ffcb46afae1c469de75ee9b3" + }, + { + "name": "hmrc/employment_income_count_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 7470000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1bbafa142b4bfc426ce5bdac" + }, + { + "name": "hmrc/employment_income_count_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 180000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_dd00b1e66c3254ddc0e108a6" + }, + { + "name": "hmrc/employment_income_count_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 5370000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3bd51396d03aee4164d7c1d6" + }, + { + "name": "hmrc/employment_income_count_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 93000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_d1f4ceb7f4e676d9ff044d80" + }, + { + "name": "hmrc/employment_income_count_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3500000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_874b13ae1da1064e73055c39" + }, + { + "name": "hmrc/employment_income_count_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3430000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_572104f32689df4a2dc4c334" + }, + { + "name": "hmrc/employment_income_count_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 44000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3b99d6944753bf5696bdc8f9" + }, + { + "name": "hmrc/employment_income_count_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1640000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8eec35d25c57e9c2e2c7962b" + } + ] + }, + "hmrc.spi.self_employment_income.amount_by_total_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc/self_employment_income_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4980000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5b616c7ebeb21ef5305b8beb" + }, + { + "name": "hmrc/self_employment_income_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 19500000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_761827852b6a2fccb3d15132" + }, + { + "name": "hmrc/self_employment_income_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4810000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1a69068db718770de7df525e" + }, + { + "name": "hmrc/self_employment_income_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 8030000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c1df7ca022a9c007f122de6d" + }, + { + "name": "hmrc/self_employment_income_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3650000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_7183b7c143f8e897552ad685" + }, + { + "name": "hmrc/self_employment_income_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 15700000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_33c4f0779c40ec91ff6761da" + }, + { + "name": "hmrc/self_employment_income_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4390000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_90652f32ebe0ff36c569998d" + }, + { + "name": "hmrc/self_employment_income_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 12600000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1b9ad3f39e949b92a26ec28c" + }, + { + "name": "hmrc/self_employment_income_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4840000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_96f921ffdb56a575057076f8" + }, + { + "name": "hmrc/self_employment_income_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 8730000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_645090db5db62f7c47a34f60" + }, + { + "name": "hmrc/self_employment_income_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 8220000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_f0d7af3458463a645af3cb76" + }, + { + "name": "hmrc/self_employment_income_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 6670000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_fc7a985c6a2a3d69e2c9ae75" + }, + { + "name": "hmrc/self_employment_income_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 5360000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c588886840e4e7e4a141ac75" + } + ] + }, + "hmrc.spi.self_employment_income.count_by_total_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc/self_employment_income_count_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 85000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_db16ef55b3b0f60d292b745b" + }, + { + "name": "hmrc/self_employment_income_count_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 11000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_315a063dab8497ed5b8837b6" + }, + { + "name": "hmrc/self_employment_income_count_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 444000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_498ad10a35b58ff55819bc8b" + }, + { + "name": "hmrc/self_employment_income_count_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 651000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_eb849a98f57c60bd507d621b" + }, + { + "name": "hmrc/self_employment_income_count_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 40000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_cfb6ca3c4eff6a83bd5c10ac" + }, + { + "name": "hmrc/self_employment_income_count_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 961000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_72bd71f362434b2260a4b407" + }, + { + "name": "hmrc/self_employment_income_count_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 34000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_fe86d957cb9590b3292e1757" + }, + { + "name": "hmrc/self_employment_income_count_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 595000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_84b75f0a77e11de0182b9d87" + }, + { + "name": "hmrc/self_employment_income_count_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 21000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5c668fd92047d28d73d7c36d" + }, + { + "name": "hmrc/self_employment_income_count_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 359000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_876b5e55461ed15a7456d8b3" + }, + { + "name": "hmrc/self_employment_income_count_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 311000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_09e5a5c61ccf990f6104a903" + }, + { + "name": "hmrc/self_employment_income_count_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 15000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_73031eb82b28c872e4371fae" + }, + { + "name": "hmrc/self_employment_income_count_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 143000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c35c3f72e5f7901457970c8d" + } + ] + }, + "hmrc.spi.dividend_income.amount_by_total_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc/dividend_income_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 6870000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_6fd01f132dc6b218c02326b1" + }, + { + "name": "hmrc/dividend_income_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 11100000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3c0cd54a0f0609d8ebc58a25" + }, + { + "name": "hmrc/dividend_income_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 175000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_b63a84056f85bed14b8ab8fd" + }, + { + "name": "hmrc/dividend_income_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 855000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3c4f22fc63944665033b18b3" + }, + { + "name": "hmrc/dividend_income_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3450000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_ced1a5840ced099b471d4e84" + }, + { + "name": "hmrc/dividend_income_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3330000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8a115e840b38a6603d618bc0" + }, + { + "name": "hmrc/dividend_income_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3700000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0394e55216df7f3dcab84fb5" + }, + { + "name": "hmrc/dividend_income_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4700000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_ea93d59adaf66ef73e9dddbf" + }, + { + "name": "hmrc/dividend_income_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3430000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8d09d2287cbdb2e4f4004521" + }, + { + "name": "hmrc/dividend_income_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 8400000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0a4329a3eb027a530c6f02ec" + }, + { + "name": "hmrc/dividend_income_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 12500000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c11497ffe45250b909593f1d" + }, + { + "name": "hmrc/dividend_income_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 3820000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_dafc8ca1cd03e5d461b11d4e" + }, + { + "name": "hmrc/dividend_income_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 9440000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_940e6ce9db10080ed5613faa" + } + ] + }, + "hmrc.spi.dividend_income.count_by_total_income_band": { + "status": "active", "candidates": [ { - "name": "obr.child_benefit", + "name": "hmrc/dividend_income_count_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 222000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_35b535ef60b7e9e8ddad45af" + }, + { + "name": "hmrc/dividend_income_count_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 19000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_fbe097b0ffbcc0e7a301478d" + }, + { + "name": "hmrc/dividend_income_count_income_band_12_570_to_15_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 13389272724.45089, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_d3ab2c54ce0c4c6a46a7a36b" - } - ] - }, - "obr.council_tax": { - "status": "active", - "candidates": [ + "resolved_value": 115000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3a657db84b033007853ec14b" + }, { - "name": "obr.council_tax", + "name": "hmrc/dividend_income_count_income_band_15_000_to_20_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 50925163826.30539, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_16bcd3e2a16bfa44c0b1ea74" - } - ] - }, - "obr.council_tax_england": { - "status": "no_fact_at_or_before_period", - "candidates": [ + "resolved_value": 372000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_418541677821ff087753a7b4" + }, { - "name": "obr.council_tax_england", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + "name": "hmrc/dividend_income_count_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 92000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_426db10645b611899a770dbd" + }, + { + "name": "hmrc/dividend_income_count_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 843000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_937f405149e37c0c900a62ee" + }, + { + "name": "hmrc/dividend_income_count_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 75000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_6c0e32c82b968ba545457cab" + }, + { + "name": "hmrc/dividend_income_count_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 667000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c8fc2a8e3993c51b68cc6f8a" + }, + { + "name": "hmrc/dividend_income_count_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 49000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_439d9908bf6880e33103ea7d" + }, + { + "name": "hmrc/dividend_income_count_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 627000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_60bb54980a6ca69ff77d07f0" + }, + { + "name": "hmrc/dividend_income_count_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 643000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_56b8b1dd7aec08c3abddc3a0" + }, + { + "name": "hmrc/dividend_income_count_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 32000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c9f024b8595617fc8dd8e416" + }, + { + "name": "hmrc/dividend_income_count_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 336000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_2ed13533e012fdd1fec68a67" } ] }, - "obr.council_tax_scotland": { - "status": "no_fact_at_or_before_period", + "hmrc.spi.property_income.amount_by_total_income_band": { + "status": "signed_excluded", "candidates": [ { - "name": "obr.council_tax_scotland", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + "name": "hmrc.spi.property_income.amount_by_total_income_band", + "status": "signed_excluded", + "matched_fact_count_overall": 13, + "matched_fact_count_at_or_before_period": 13, + "signed_rationale": "Signed out pending a first-class value-scaling operation or a Chronicle package for HMRC Property Rental Income Statistics with declared reconciliation: the Ledger facts are official HMRC SPI Table 3.7 net property-income amounts, while the incumbent calibration target applies the populace-side x1.9 property-income undercount adjustment. The x1.9 trace is uk-data PR #311 / issue uk-data#230: SPI covers only taxpayers with liability, and HMRC Property Rental Income Statistics show GBP 46.68bn versus SPI about GBP 24.5bn for 2020-21. Binding the raw SPI facts would knowingly calibrate to 10/19 of the incumbent surface." } ] }, - "obr.council_tax_wales": { - "status": "no_fact_at_or_before_period", + "hmrc.spi.property_income.count_by_total_income_band": { + "status": "active", "candidates": [ { - "name": "obr.council_tax_wales", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" - } - ] - }, - "obr.domestic_rates": { - "status": "no_fact_at_or_before_period", - "candidates": [ + "name": "hmrc/property_income_count_income_band_100_000_to_150_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 137000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_50e02eb85969a4773af5cade" + }, + { + "name": "hmrc/property_income_count_income_band_1_000_000_to_inf", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 7000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_d286366fea43c9f897936709" + }, + { + "name": "hmrc/property_income_count_income_band_12_570_to_15_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 101000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_80d817cee2f3592809f3a194" + }, + { + "name": "hmrc/property_income_count_income_band_15_000_to_20_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 232000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_2c0d78b9f9dff4e5fdfa250c" + }, + { + "name": "hmrc/property_income_count_income_band_150_000_to_200_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 54000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5ec672db73bb4f35958a409e" + }, + { + "name": "hmrc/property_income_count_income_band_20_000_to_30_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 431000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_3eb40c70c3de0d0c29253566" + }, + { + "name": "hmrc/property_income_count_income_band_200_000_to_300_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 41000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0394669c5734865fda5f0541" + }, + { + "name": "hmrc/property_income_count_income_band_30_000_to_40_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 364000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_6564bb4b662365729676a9e1" + }, + { + "name": "hmrc/property_income_count_income_band_300_000_to_500_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 23000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_87c457b7ee2392ee8360893b" + }, + { + "name": "hmrc/property_income_count_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 325000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_7187a98d8342886b08e3f9e2" + }, + { + "name": "hmrc/property_income_count_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 397000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c44a33c3bc4454de20132027" + }, + { + "name": "hmrc/property_income_count_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 13000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_831e0c70ca80d37c785d4122" + }, { - "name": "obr.domestic_rates", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + "name": "hmrc/property_income_count_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 226000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_f93d04a399cee892e5ec86b6" } ] }, - "obr.esa": { + "hmrc.spi.private_pension_income.amount_by_total_income_band": { "status": "active", "candidates": [ { - "name": "obr.esa", + "name": "hmrc/private_pension_income_income_band_100_000_to_150_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 7206287181.538654, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_632a67850494984d9b35e639" - } - ] - }, - "obr.housing_benefit": { - "status": "active", - "candidates": [ + "resolved_value": 5430000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_cb943439ee9edfb445bc3fa5" + }, { - "name": "obr.housing_benefit", + "name": "hmrc/private_pension_income_income_band_1_000_000_to_inf", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 12103254163.788864, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_984cc88cfc4242bd80c679f3" - } - ] - }, - "obr.jobseekers_allowance": { - "status": "active", - "candidates": [ + "resolved_value": 370000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_7dcf8568040de10d9b3765da" + }, { - "name": "obr.jobseekers_allowance", + "name": "hmrc/private_pension_income_income_band_12_570_to_15_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 280558748.04472804, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_d505f8a08a29411dcf69287b" - } - ] - }, - "obr.pension_credit": { - "status": "active", - "candidates": [ + "resolved_value": 4350000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_699889c2fb48479e27e44a4a" + }, { - "name": "obr.pension_credit", + "name": "hmrc/private_pension_income_income_band_15_000_to_20_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 6146422389.476461, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_95ea9bc008361c26f90591d4" - } - ] - }, - "obr.pip": { - "status": "active", - "candidates": [ + "resolved_value": 13600000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0f977d0b50c1d0f1d1364e88" + }, { - "name": "obr.pip", + "name": "hmrc/private_pension_income_income_band_150_000_to_200_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 36910059270.5278, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_548ebadeb7d774b32fa6f4ff" - } - ] - }, - "obr.state_pension": { - "status": "active", - "candidates": [ + "resolved_value": 1810000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_d29aac0680380c80bd842bae" + }, { - "name": "obr.state_pension", + "name": "hmrc/private_pension_income_income_band_20_000_to_30_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 146185954351.57382, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_567e55f9f73df2808c1c4be8" - } - ] - }, - "obr.statutory_maternity_pay": { - "status": "active", - "candidates": [ + "resolved_value": 30200000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_bafcebe21a05cb0ca19d5e4f" + }, { - "name": "obr.statutory_maternity_pay", + "name": "hmrc/private_pension_income_income_band_200_000_to_300_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3194800881.520547, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_0c45b526e2b233b22d955cc6" - } - ] - }, - "obr.tv_licence_fee": { - "status": "active", - "candidates": [ + "resolved_value": 1570000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_de0ed091681463c4ddec5b85" + }, { - "name": "obr.tv_licence_fee", + "name": "hmrc/private_pension_income_income_band_30_000_to_40_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3872000000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_b0f0afcd44c93532837c9f2a" - } - ] - }, - "obr.universal_credit_in_cap": { - "status": "active", - "candidates": [ + "resolved_value": 24900000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_2884a006a8d7c144a8570a7d" + }, { - "name": "obr.universal_credit_in_cap", + "name": "hmrc/private_pension_income_income_band_300_000_to_500_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 66410800011.47837, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_e680fe36115d1372d12072e1" - } - ] - }, - "obr.universal_credit_outside_cap": { - "status": "active", - "candidates": [ + "resolved_value": 1120000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_73e8de3b1ac198cc75c2b696" + }, { - "name": "obr.universal_credit_outside_cap", + "name": "hmrc/private_pension_income_income_band_40_000_to_50_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 12875549128.065746, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_4c927d7b33d1eee2455bdbd0" - } - ] - }, - "obr.winter_fuel_allowance": { - "status": "active", - "candidates": [ + "resolved_value": 16900000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_6b29cd5a1d665a00bb3e8046" + }, { - "name": "obr.winter_fuel_allowance", + "name": "hmrc/private_pension_income_income_band_50_000_to_70_000", "status": "active", - "matched_fact_count_overall": 7, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 17400000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8f911d955de4f80e87dc69d8" + }, + { + "name": "hmrc/private_pension_income_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 640000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_a13e6165bec82537c5c2883c" + }, + { + "name": "hmrc/private_pension_income_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1911040880.4619167, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_575778670363b5890c8de847" + "resolved_value": 9470000000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0a1db235b87cad00eeddbfd8" } ] }, - "isc.private_school_students": { + "hmrc.spi.private_pension_income.count_by_total_income_band": { "status": "active", "candidates": [ { - "name": "isc.private_school_students", + "name": "hmrc/private_pension_income_count_income_band_100_000_to_150_000", "status": "active", - "matched_fact_count_overall": 2, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 556551.0, - "resolved_fact_period": "2024-01", - "resolved_fact_key": "ledger_aggregate_fact_v2_67bd24e7f9158af756625865" - } - ] - }, - "hmrc.salary_sacrifice.it_relief_basic_rate": { - "status": "active", - "candidates": [ + "resolved_value": 109000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1fa1ba97628c6c2c315f0e15" + }, { - "name": "hmrc.salary_sacrifice.it_relief_basic_rate", + "name": "hmrc/private_pension_income_count_income_band_1_000_000_to_inf", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1600000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_7320889e57785e6997224191" - } - ] - }, - "hmrc.salary_sacrifice.it_relief_higher_rate": { - "status": "active", - "candidates": [ + "resolved_value": 2000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_188f8f1a0535263e4db7c9a8" + }, { - "name": "hmrc.salary_sacrifice.it_relief_higher_rate", + "name": "hmrc/private_pension_income_count_income_band_12_570_to_15_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 5500000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_7d9ff26814151157071301e9" - } - ] - }, - "hmrc.salary_sacrifice.it_relief_additional_rate": { - "status": "active", - "candidates": [ + "resolved_value": 1070000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_853f104082cf479b98952c1a" + }, { - "name": "hmrc.salary_sacrifice.it_relief_additional_rate", + "name": "hmrc/private_pension_income_count_income_band_15_000_to_20_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1800000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_49a712ba4b22f0b4b2925ef9" - } - ] - }, - "hmrc.salary_sacrifice.nics_relief_employee": { - "status": "active", - "candidates": [ + "resolved_value": 2140000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_c785199ee1d08fabfe927ff0" + }, { - "name": "hmrc.salary_sacrifice.nics_relief_employee", + "name": "hmrc/private_pension_income_count_income_band_150_000_to_200_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1000000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_341767859ef6030c06c7a153" - } - ] - }, - "hmrc.salary_sacrifice.nics_relief_employer": { - "status": "active", - "candidates": [ + "resolved_value": 29000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_a98ec830dee0eceb16b452e7" + }, { - "name": "hmrc.salary_sacrifice.nics_relief_employer", + "name": "hmrc/private_pension_income_count_income_band_20_000_to_30_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3400000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_026ae1169f5f0f997bb06479" - } - ] - }, - "hmrc.salary_sacrifice.users_total": { - "status": "active", - "candidates": [ + "resolved_value": 2660000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1df6f17a33011c1c026dbc09" + }, { - "name": "hmrc.salary_sacrifice.users_total", + "name": "hmrc/private_pension_income_count_income_band_200_000_to_300_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 7700000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_06d585b8684b5fe0ce25f6ec" - } - ] - }, - "hmrc.salary_sacrifice.users_below_cap": { - "status": "active", - "candidates": [ + "resolved_value": 20000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_042ab8896eb0214e7bbad477" + }, { - "name": "hmrc.salary_sacrifice.users_below_cap", + "name": "hmrc/private_pension_income_count_income_band_30_000_to_40_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 4300000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_a48e584180a6f33d07112d3c" - } - ] - }, - "hmrc.salary_sacrifice.users_above_cap": { - "status": "active", - "candidates": [ + "resolved_value": 1450000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0a28fd76533fc93cf8dbfe4a" + }, { - "name": "hmrc.salary_sacrifice.users_above_cap", + "name": "hmrc/private_pension_income_count_income_band_300_000_to_500_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3300000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_0331d77688891a3c3c3307b6" + "resolved_value": 10000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_7fccfc3ee4246841b3ed391b" + }, + { + "name": "hmrc/private_pension_income_count_income_band_40_000_to_50_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 779000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0f808aa135a13e5aa4668d22" + }, + { + "name": "hmrc/private_pension_income_count_income_band_50_000_to_70_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 643000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_097efdacf2adf0f90f90d1de" + }, + { + "name": "hmrc/private_pension_income_count_income_band_500_000_to_1_000_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 4000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8abdd0aa368c3d693e6d0989" + }, + { + "name": "hmrc/private_pension_income_count_income_band_70_000_to_100_000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 259000.0, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_f75fc4c3e2cb06bbdb7543f8" } ] }, - "hmrc.spi.employment_income.amount_by_total_income_band": { + "hmrc.spi.state_pension.amount_by_total_income_band": { "status": "active", "candidates": [ { - "name": "hmrc/employment_income_income_band_100_000_to_150_000", + "name": "hmrc/state_pension_income_band_100_000_to_150_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 82300000000.0, + "resolved_value": 847000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_b1c634a871c843888ab00545" + "resolved_fact_key": "ledger_aggregate_fact_v2_d63e1a96cab57582f482b8c2" }, { - "name": "hmrc/employment_income_income_band_1_000_000_to_inf", + "name": "hmrc/state_pension_income_band_1_000_000_to_inf", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 35500000000.0, + "resolved_value": 20000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_16019afa59e224b690877826" + "resolved_fact_key": "ledger_aggregate_fact_v2_9a20bd62d4d5984865242929" }, { - "name": "hmrc/employment_income_income_band_12_570_to_15_000", + "name": "hmrc/state_pension_income_band_12_570_to_15_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 16900000000.0, + "resolved_value": 11800000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_a82c84f67b40867564d2c847" + "resolved_fact_key": "ledger_aggregate_fact_v2_45083c1383ea711226aebd1b" }, { - "name": "hmrc/employment_income_income_band_15_000_to_20_000", + "name": "hmrc/state_pension_income_band_15_000_to_20_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 48600000000.0, + "resolved_value": 22200000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_42eb325b6a29afb3e6d157fa" + "resolved_fact_key": "ledger_aggregate_fact_v2_310febb949c686fad2b71a94" }, { - "name": "hmrc/employment_income_income_band_150_000_to_200_000", + "name": "hmrc/state_pension_income_band_150_000_to_200_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 39200000000.0, + "resolved_value": 265000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1f93702eb88f381f0701c4f8" + "resolved_fact_key": "ledger_aggregate_fact_v2_e79668076aadc063559585e9" }, { - "name": "hmrc/employment_income_income_band_20_000_to_30_000", + "name": "hmrc/state_pension_income_band_20_000_to_30_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 172000000000.0, + "resolved_value": 24900000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_794fd9633d6a2018fee633e7" + "resolved_fact_key": "ledger_aggregate_fact_v2_3d18e138c32f6581d6dafdd7" }, { - "name": "hmrc/employment_income_income_band_200_000_to_300_000", + "name": "hmrc/state_pension_income_band_200_000_to_300_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 36600000000.0, + "resolved_value": 179000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d85ad655daaa164b1ab33231" + "resolved_fact_key": "ledger_aggregate_fact_v2_e1dda799099ac0f4f439700d" }, { - "name": "hmrc/employment_income_income_band_30_000_to_40_000", + "name": "hmrc/state_pension_income_band_30_000_to_40_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 170000000000.0, + "resolved_value": 12300000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3607635c72d16b4059b6a3f6" + "resolved_fact_key": "ledger_aggregate_fact_v2_151045b793ac454ab29260fc" }, { - "name": "hmrc/employment_income_income_band_300_000_to_500_000", + "name": "hmrc/state_pension_income_band_300_000_to_500_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 29000000000.0, + "resolved_value": 96000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_5c3674b48269ffe3c7b28a1b" + "resolved_fact_key": "ledger_aggregate_fact_v2_c95154893499181b7f3a8903" }, { - "name": "hmrc/employment_income_income_band_40_000_to_50_000", + "name": "hmrc/state_pension_income_band_40_000_to_50_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 139000000000.0, + "resolved_value": 6020000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_525aeb02ab9a831608756200" + "resolved_fact_key": "ledger_aggregate_fact_v2_bc4cee7d39f5e1c311464a55" }, { - "name": "hmrc/employment_income_income_band_50_000_to_70_000", + "name": "hmrc/state_pension_income_band_50_000_to_70_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 174000000000.0, + "resolved_value": 4660000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_9f1a70b4e0995af34d7dbbfb" + "resolved_fact_key": "ledger_aggregate_fact_v2_7f09c940c0fbc3cc42b9e510" }, { - "name": "hmrc/employment_income_income_band_500_000_to_1_000_000", + "name": "hmrc/state_pension_income_band_500_000_to_1_000_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 23100000000.0, + "resolved_value": 43000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1944a2f33309b41b2d5f348d" + "resolved_fact_key": "ledger_aggregate_fact_v2_d265dfcd4ba09d10053a78a4" }, { - "name": "hmrc/employment_income_income_band_70_000_to_100_000", + "name": "hmrc/state_pension_income_band_70_000_to_100_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 118000000000.0, + "resolved_value": 1890000000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_6178d003a4c1a6198294f174" + "resolved_fact_key": "ledger_aggregate_fact_v2_41c1df25454fdf413d5765d7" } ] }, - "hmrc.spi.employment_income.count_by_total_income_band": { + "hmrc.spi.state_pension.count_by_total_income_band": { "status": "active", "candidates": [ { - "name": "hmrc/employment_income_count_income_band_100_000_to_150_000", + "name": "hmrc/state_pension_count_income_band_100_000_to_150_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 791000.0, + "resolved_value": 74000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_b83fec2e722ef22cbe28ee76" + "resolved_fact_key": "ledger_aggregate_fact_v2_01b8f391c006c09d3ed51865" }, { - "name": "hmrc/employment_income_count_income_band_1_000_000_to_inf", + "name": "hmrc/state_pension_count_income_band_1_000_000_to_inf", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 21000.0, + "resolved_value": 2000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_618b4f84a2b10fdf0d901df6" + "resolved_fact_key": "ledger_aggregate_fact_v2_b8c359bb976d919bedb9076a" }, { - "name": "hmrc/employment_income_count_income_band_12_570_to_15_000", + "name": "hmrc/state_pension_count_income_band_12_570_to_15_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1360000.0, + "resolved_value": 1140000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_5a2e006ccd94f8754760661c" + "resolved_fact_key": "ledger_aggregate_fact_v2_05f2cd00648c7f8225723a9c" }, { - "name": "hmrc/employment_income_count_income_band_15_000_to_20_000", + "name": "hmrc/state_pension_count_income_band_15_000_to_20_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3100000.0, + "resolved_value": 2050000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_a4ecaa65aa113092a1c8fcf7" + "resolved_fact_key": "ledger_aggregate_fact_v2_ced75bd10fbfa56ef2eabeae" }, { - "name": "hmrc/employment_income_count_income_band_150_000_to_200_000", + "name": "hmrc/state_pension_count_income_band_150_000_to_200_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 264000.0, + "resolved_value": 21000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_ffcb46afae1c469de75ee9b3" + "resolved_fact_key": "ledger_aggregate_fact_v2_73d438db1a168d794e290b0e" }, { - "name": "hmrc/employment_income_count_income_band_20_000_to_30_000", + "name": "hmrc/state_pension_count_income_band_20_000_to_30_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 7470000.0, + "resolved_value": 2320000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1bbafa142b4bfc426ce5bdac" + "resolved_fact_key": "ledger_aggregate_fact_v2_69b521bf537da156d2afa48e" }, { - "name": "hmrc/employment_income_count_income_band_200_000_to_300_000", + "name": "hmrc/state_pension_count_income_band_200_000_to_300_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 180000.0, + "resolved_value": 14000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_dd00b1e66c3254ddc0e108a6" + "resolved_fact_key": "ledger_aggregate_fact_v2_3edcf70605856bb8b906ea19" }, { - "name": "hmrc/employment_income_count_income_band_30_000_to_40_000", + "name": "hmrc/state_pension_count_income_band_30_000_to_40_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 5370000.0, + "resolved_value": 1160000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3bd51396d03aee4164d7c1d6" + "resolved_fact_key": "ledger_aggregate_fact_v2_1cafb0f484a7d8191b7fb989" }, { - "name": "hmrc/employment_income_count_income_band_300_000_to_500_000", + "name": "hmrc/state_pension_count_income_band_300_000_to_500_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 93000.0, + "resolved_value": 8000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d1f4ceb7f4e676d9ff044d80" + "resolved_fact_key": "ledger_aggregate_fact_v2_7f510c873457703c57c16983" }, { - "name": "hmrc/employment_income_count_income_band_40_000_to_50_000", + "name": "hmrc/state_pension_count_income_band_40_000_to_50_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3500000.0, + "resolved_value": 568000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_874b13ae1da1064e73055c39" + "resolved_fact_key": "ledger_aggregate_fact_v2_d4ff6839b2d936396ae33f67" }, { - "name": "hmrc/employment_income_count_income_band_50_000_to_70_000", + "name": "hmrc/state_pension_count_income_band_50_000_to_70_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3430000.0, + "resolved_value": 441000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_572104f32689df4a2dc4c334" + "resolved_fact_key": "ledger_aggregate_fact_v2_2b5023baae0b6814c07afbe9" }, { - "name": "hmrc/employment_income_count_income_band_500_000_to_1_000_000", + "name": "hmrc/state_pension_count_income_band_500_000_to_1_000_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 44000.0, + "resolved_value": 3000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3b99d6944753bf5696bdc8f9" + "resolved_fact_key": "ledger_aggregate_fact_v2_f9a834c26fa7c215c052f4f5" }, { - "name": "hmrc/employment_income_count_income_band_70_000_to_100_000", + "name": "hmrc/state_pension_count_income_band_70_000_to_100_000", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1640000.0, + "resolved_value": 176000.0, "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_8eec35d25c57e9c2e2c7962b" + "resolved_fact_key": "ledger_aggregate_fact_v2_7514fbdbf5f909008b617d06" } ] }, - "hmrc.spi.self_employment_income.amount_by_total_income_band": { + "hmrc.cgt.taxpayers_total": { "status": "active", "candidates": [ { - "name": "hmrc/self_employment_income_income_band_100_000_to_150_000", + "name": "hmrc.cgt.taxpayers_total", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 4980000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_5b616c7ebeb21ef5305b8beb" - }, + "resolved_value": 551000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_31d709fc393c2bf4d04efca5" + } + ] + }, + "hmrc.cgt.gains_total": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_1_000_000_to_inf", + "name": "hmrc.cgt.gains_total", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 19500000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_761827852b6a2fccb3d15132" - }, + "resolved_value": 119258000000.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_12060d20a417d85d67cf24e8" + } + ] + }, + "dwp.benefit_cap.capped_households": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_12_570_to_15_000", + "name": "dwp.benefit_cap.capped_households", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 4810000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1a69068db718770de7df525e" - }, + "resolved_value": 110637.0, + "resolved_fact_period": "2025-11", + "resolved_fact_key": "ledger_aggregate_fact_v2_b698397897ed849f096cdd94" + } + ] + }, + "dwp.pip.daily_living_standard_claimants": { + "status": "no_fact_at_or_before_period", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_15_000_to_20_000", + "name": "dwp.pip.daily_living_standard_claimants", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "dwp.pip.daily_living_enhanced_claimants": { + "status": "no_fact_at_or_before_period", + "candidates": [ + { + "name": "dwp.pip.daily_living_enhanced_claimants", + "status": "no_fact_at_or_before_period", + "matched_fact_count_overall": 0, + "matched_fact_count_at_or_before_period": 0, + "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + } + ] + }, + "dwp.esa_claimants": { + "status": "active", + "candidates": [ + { + "name": "dwp.esa_claimants", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 8030000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c1df7ca022a9c007f122de6d" - }, + "resolved_value": 1000000.0, + "resolved_fact_period": "2025-08", + "resolved_fact_key": "ledger_aggregate_fact_v2_16ef67af9274891abd5e4fdc" + } + ] + }, + "dwp.esa_contrib_claimants": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_150_000_to_200_000", + "name": "dwp.esa_contrib_claimants", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 3650000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7183b7c143f8e897552ad685" - }, + "resolved_value": 620000.0, + "resolved_fact_period": "2025-08", + "resolved_fact_key": "ledger_aggregate_fact_v2_bf22883b03cf631864b2ae1d" + } + ] + }, + "dwp.esa_income_claimants": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_20_000_to_30_000", + "name": "dwp.esa_income_claimants", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 15700000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_33c4f0779c40ec91ff6761da" - }, + "resolved_value": 180000.0, + "resolved_fact_period": "2025-08", + "resolved_fact_key": "ledger_aggregate_fact_v2_8684f0c35a1d71a291e61c81" + } + ] + }, + "dwp.jsa_claimants": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_200_000_to_300_000", + "name": "dwp.jsa_claimants", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 4390000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_90652f32ebe0ff36c569998d" - }, + "resolved_value": 71000.0, + "resolved_fact_period": "2025-08", + "resolved_fact_key": "ledger_aggregate_fact_v2_b5d92ff094ad2c534847291a" + } + ] + }, + "dwp.uc.households_children_1": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_30_000_to_40_000", + "name": "dwp.uc.households_children_1", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 12, + "matched_fact_count_at_or_before_period": 12, + "matched_fact_count_in_source_window": 12, "resolved_period": 2025, - "resolved_value": 12600000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1b9ad3f39e949b92a26ec28c" - }, + "resolved_value": 1190123.8333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_c1533879baf52aaa88758083" + } + ] + }, + "dwp.uc.households_children_2": { + "status": "active", + "candidates": [ + { + "name": "dwp.uc.households_children_2", + "status": "active", + "matched_fact_count_overall": 12, + "matched_fact_count_at_or_before_period": 12, + "matched_fact_count_in_source_window": 12, + "resolved_period": 2025, + "resolved_value": 1049895.5, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_46fca4f9d4e0519f0c190824" + } + ] + }, + "dwp.uc.households_children_3": { + "status": "active", + "candidates": [ + { + "name": "dwp.uc.households_children_3", + "status": "active", + "matched_fact_count_overall": 12, + "matched_fact_count_at_or_before_period": 12, + "matched_fact_count_in_source_window": 12, + "resolved_period": 2025, + "resolved_value": 477887.6666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ba5bce203605d4e16037d311" + } + ] + }, + "dwp.uc.households_children_4": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_300_000_to_500_000", + "name": "dwp.uc.households_children_4", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 12, + "matched_fact_count_at_or_before_period": 12, + "matched_fact_count_in_source_window": 12, "resolved_period": 2025, - "resolved_value": 4840000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_96f921ffdb56a575057076f8" - }, + "resolved_value": 170713.66666666666, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_33541aafa05a63dcae4fc144" + } + ] + }, + "dwp.uc.households_children_5_or_more": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_40_000_to_50_000", + "name": "dwp.uc.households_children_5_or_more", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 12, + "matched_fact_count_at_or_before_period": 12, + "matched_fact_count_in_source_window": 12, "resolved_period": 2025, - "resolved_value": 8730000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_645090db5db62f7c47a34f60" - }, + "resolved_value": 76320.08333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_33d99593d166153ca2d0adec" + } + ] + }, + "dwp.uc.households_single_no_children": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_50_000_to_70_000", + "name": "dwp.uc.households_single_no_children", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 24, + "matched_fact_count_at_or_before_period": 24, + "matched_fact_count_in_source_window": 24, "resolved_period": 2025, - "resolved_value": 8220000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_f0d7af3458463a645af3cb76" - }, + "resolved_value": 2990070.1666666665, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_c013630f1154eb7252466457" + } + ] + }, + "dwp.uc.households_single_with_children": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_500_000_to_1_000_000", + "name": "dwp.uc.households_single_with_children", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 24, + "matched_fact_count_at_or_before_period": 24, + "matched_fact_count_in_source_window": 24, "resolved_period": 2025, - "resolved_value": 6670000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_fc7a985c6a2a3d69e2c9ae75" - }, + "resolved_value": 2138780.1666666665, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_4e21ff5e364647d7c75589d2" + } + ] + }, + "dwp.uc.households_couple_no_children": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_income_band_70_000_to_100_000", + "name": "dwp.uc.households_couple_no_children", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 24, + "matched_fact_count_at_or_before_period": 24, + "matched_fact_count_in_source_window": 24, "resolved_period": 2025, - "resolved_value": 5360000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c588886840e4e7e4a141ac75" + "resolved_value": 241130.91666666666, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ad46a5483afd6bad20dc50fe" } ] }, - "hmrc.spi.self_employment_income.count_by_total_income_band": { + "dwp.uc.households_couple_with_children": { "status": "active", "candidates": [ { - "name": "hmrc/self_employment_income_count_income_band_100_000_to_150_000", + "name": "dwp.uc.households_couple_with_children", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 24, + "matched_fact_count_at_or_before_period": 24, + "matched_fact_count_in_source_window": 24, "resolved_period": 2025, - "resolved_value": 85000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_db16ef55b3b0f60d292b745b" - }, + "resolved_value": 826160.8333333334, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_1a76243d3f616b19eaed3e0a" + } + ] + }, + "dwp.uc.payment_distribution_single": { + "status": "active", + "candidates": [ { - "name": "hmrc/self_employment_income_count_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_0_to_1_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 11000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_315a063dab8497ed5b8837b6" + "resolved_value": 89479.33333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_2ab0a2ad4fff5a73eb430af0" }, { - "name": "hmrc/self_employment_income_count_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_1_200_to_2_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 444000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_498ad10a35b58ff55819bc8b" + "resolved_value": 127403.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_4da96f3f87204e3b63a7197e" }, { - "name": "hmrc/self_employment_income_count_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_12_000_to_13_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 651000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_eb849a98f57c60bd507d621b" + "resolved_value": 122035.55555555556, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_100f173ee4233f5ed3616bbc" }, { - "name": "hmrc/self_employment_income_count_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_13_200_to_14_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 40000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_cfb6ca3c4eff6a83bd5c10ac" + "resolved_value": 197163.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_263205affbfb94c0a87b7834" }, { - "name": "hmrc/self_employment_income_count_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_14_400_to_15_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 961000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_72bd71f362434b2260a4b407" + "resolved_value": 209497.33333333334, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_f4e51bd6399c4a72f10e625f" }, { - "name": "hmrc/self_employment_income_count_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_15_600_to_16_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 34000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_fe86d957cb9590b3292e1757" + "resolved_value": 149963.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_746aa1e8d116c4543251b137" }, { - "name": "hmrc/self_employment_income_count_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_16_800_to_18_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 595000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_84b75f0a77e11de0182b9d87" + "resolved_value": 108689.66666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_0dc82a9ba1ce7a8ea1855991" }, { - "name": "hmrc/self_employment_income_count_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_18_000_to_19_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 21000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_5c668fd92047d28d73d7c36d" + "resolved_value": 61718.666666666664, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_4399ab26a944d2d46a12311d" }, { - "name": "hmrc/self_employment_income_count_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_19_200_to_20_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 359000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_876b5e55461ed15a7456d8b3" + "resolved_value": 34050.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b8ab0a63fbef46e02aa34d37" }, { - "name": "hmrc/self_employment_income_count_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_20_400_to_21_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 311000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_09e5a5c61ccf990f6104a903" + "resolved_value": 22338.333333333332, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_d22d996cd3edb838030ab0dc" }, { - "name": "hmrc/self_employment_income_count_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_21_600_to_22_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, - "resolved_period": 2025, - "resolved_value": 15000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_73031eb82b28c872e4371fae" + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, + "resolved_period": 2025, + "resolved_value": 14685.777777777777, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_404ce9f1ea3e17ec602a1de9" }, { - "name": "hmrc/self_employment_income_count_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_22_800_to_24_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 143000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c35c3f72e5f7901457970c8d" - } - ] - }, - "hmrc.spi.dividend_income.amount_by_total_income_band": { - "status": "active", - "candidates": [ + "resolved_value": 11133.666666666666, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_d2268373d3e5894e10f3f004" + }, { - "name": "hmrc/dividend_income_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_2_400_to_3_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 6870000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_6fd01f132dc6b218c02326b1" + "resolved_value": 197136.66666666666, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_37e9e071fb187dab220f3876" }, { - "name": "hmrc/dividend_income_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_24_000_to_25_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 11100000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3c0cd54a0f0609d8ebc58a25" + "resolved_value": 6951.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8af773c191130cd03d9de884" }, { - "name": "hmrc/dividend_income_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_25_200_to_26_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 175000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_b63a84056f85bed14b8ab8fd" + "resolved_value": 6508.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_f46b09c321cf98f8e0d12b89" }, { - "name": "hmrc/dividend_income_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_26_400_to_27_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 855000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3c4f22fc63944665033b18b3" + "resolved_value": 5913.444444444444, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_a763ca2d87febd61de26d8b0" }, { - "name": "hmrc/dividend_income_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_27_600_to_28_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3450000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_ced1a5840ced099b471d4e84" + "resolved_value": 1884.111111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8b6d8894debcbda5e38c0923" }, { - "name": "hmrc/dividend_income_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_28_800_to_30_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3330000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_8a115e840b38a6603d618bc0" + "resolved_value": 1653.7777777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_aa3077a36f37ae73562e57fc" }, { - "name": "hmrc/dividend_income_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_3_600_to_4_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3700000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0394e55216df7f3dcab84fb5" + "resolved_value": 377063.1111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_988e854b9584a36b1b62810f" }, { - "name": "hmrc/dividend_income_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_4_800_to_6_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 4700000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_ea93d59adaf66ef73e9dddbf" + "resolved_value": 195983.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_7a3e7c9563c15ba28ffd3c3e" }, { - "name": "hmrc/dividend_income_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_6_000_to_7_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3430000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_8d09d2287cbdb2e4f4004521" + "resolved_value": 114033.33333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_294fdb23cc02a98334267137" }, { - "name": "hmrc/dividend_income_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_7_200_to_8_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 8400000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0a4329a3eb027a530c6f02ec" + "resolved_value": 149043.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_5d4a92d292c96a2f440dee5a" }, { - "name": "hmrc/dividend_income_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_8_400_to_9_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 12500000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c11497ffe45250b909593f1d" + "resolved_value": 399750.22222222225, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ad92f85c0ac85ea7bb6e8ca3" }, { - "name": "hmrc/dividend_income_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_9_600_to_10_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3820000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_dafc8ca1cd03e5d461b11d4e" + "resolved_value": 386411.6666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e2bbf1fe386cfcd8db712026" }, { - "name": "hmrc/dividend_income_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_10_800_to_12_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 9440000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_940e6ce9db10080ed5613faa" + "resolved_value": 104891.11111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_de2719af6e4d5f9ffe65aaee" } ] }, - "hmrc.spi.dividend_income.count_by_total_income_band": { + "dwp.uc.payment_distribution_lone_parent": { "status": "active", "candidates": [ { - "name": "hmrc/dividend_income_count_income_band_100_000_to_150_000", - "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, - "resolved_period": 2025, - "resolved_value": 222000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_35b535ef60b7e9e8ddad45af" - }, - { - "name": "hmrc/dividend_income_count_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_0_to_1_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 19000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_fbe097b0ffbcc0e7a301478d" + "resolved_value": 26670.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_7b17c88cf49645b2d3ef44a6" }, { - "name": "hmrc/dividend_income_count_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_1_200_to_2_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 115000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3a657db84b033007853ec14b" + "resolved_value": 36208.11111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_765ace417ceafd524ffda4c0" }, { - "name": "hmrc/dividend_income_count_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_12_000_to_13_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 372000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_418541677821ff087753a7b4" + "resolved_value": 125798.44444444444, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_eaddee052a3861f259b93272" }, { - "name": "hmrc/dividend_income_count_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_13_200_to_14_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 92000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_426db10645b611899a770dbd" + "resolved_value": 129133.66666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b8d66013c8a68e423f507be8" }, { - "name": "hmrc/dividend_income_count_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_14_400_to_15_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 843000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_937f405149e37c0c900a62ee" + "resolved_value": 115856.66666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_1bc84efe74c485d143caab7b" }, { - "name": "hmrc/dividend_income_count_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_15_600_to_16_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 75000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_6c0e32c82b968ba545457cab" + "resolved_value": 125660.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e26d2d7e425a94fd9fde3d17" }, { - "name": "hmrc/dividend_income_count_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_16_800_to_18_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 667000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c8fc2a8e3993c51b68cc6f8a" + "resolved_value": 135836.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8fa2e062c33297530d458054" }, { - "name": "hmrc/dividend_income_count_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_18_000_to_19_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 49000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_439d9908bf6880e33103ea7d" + "resolved_value": 135444.88888888888, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_77cb72042ffb9b2b1af769e3" }, { - "name": "hmrc/dividend_income_count_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_19_200_to_20_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 627000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_60bb54980a6ca69ff77d07f0" + "resolved_value": 106341.88888888889, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_acb89a96425fd7af119e0c3b" }, { - "name": "hmrc/dividend_income_count_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 643000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_56b8b1dd7aec08c3abddc3a0" + "resolved_value": 85490.44444444444, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3aa5825f5e5e8dbc570c0af1" }, { - "name": "hmrc/dividend_income_count_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_21_600_to_22_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 32000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c9f024b8595617fc8dd8e416" + "resolved_value": 80226.88888888889, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_c5a0ee450c3ad7f882dfb167" }, { - "name": "hmrc/dividend_income_count_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_22_800_to_24_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 336000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_2ed13533e012fdd1fec68a67" - } - ] - }, - "hmrc.spi.property_income.amount_by_total_income_band": { - "status": "signed_excluded", - "candidates": [ - { - "name": "hmrc.spi.property_income.amount_by_total_income_band", - "status": "signed_excluded", - "matched_fact_count_overall": 13, - "matched_fact_count_at_or_before_period": 13, - "signed_rationale": "Signed out pending a first-class value-scaling operation or a Chronicle package for HMRC Property Rental Income Statistics with declared reconciliation: the Ledger facts are official HMRC SPI Table 3.7 net property-income amounts, while the incumbent calibration target applies the populace-side x1.9 property-income undercount adjustment. The x1.9 trace is uk-data PR #311 / issue uk-data#230: SPI covers only taxpayers with liability, and HMRC Property Rental Income Statistics show GBP 46.68bn versus SPI about GBP 24.5bn for 2020-21. Binding the raw SPI facts would knowingly calibrate to 10/19 of the incumbent surface." - } - ] - }, - "hmrc.spi.property_income.count_by_total_income_band": { - "status": "active", - "candidates": [ + "resolved_value": 71259.55555555556, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_13ffca0d11c038fc7d096ec9" + }, { - "name": "hmrc/property_income_count_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_2_400_to_3_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 137000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_50e02eb85969a4773af5cade" + "resolved_value": 46312.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6619e26753d01d76247e1759" }, { - "name": "hmrc/property_income_count_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_24_000_to_25_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 7000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d286366fea43c9f897936709" + "resolved_value": 51301.666666666664, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_4a935006e5c346bfe0009055" }, { - "name": "hmrc/property_income_count_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_25_200_to_26_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 101000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_80d817cee2f3592809f3a194" + "resolved_value": 43305.22222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e64560bd9c14d083cd03c985" }, { - "name": "hmrc/property_income_count_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_26_400_to_27_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 232000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_2c0d78b9f9dff4e5fdfa250c" + "resolved_value": 34910.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8e16d0c97924701eb074c25d" }, { - "name": "hmrc/property_income_count_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_27_600_to_28_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 54000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_5ec672db73bb4f35958a409e" + "resolved_value": 28513.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_cf9757018b0d313f20342b59" }, { - "name": "hmrc/property_income_count_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_28_800_to_30_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 431000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3eb40c70c3de0d0c29253566" + "resolved_value": 22593.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6bede883f015e48e86c0a2de" }, { - "name": "hmrc/property_income_count_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_3_600_to_4_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 41000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0394669c5734865fda5f0541" + "resolved_value": 60310.11111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b0710535c8b6006db118eb3b" }, { - "name": "hmrc/property_income_count_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_4_800_to_6_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 364000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_6564bb4b662365729676a9e1" + "resolved_value": 67858.66666666667, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b4008c8b22190b4ee185d4f6" }, { - "name": "hmrc/property_income_count_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_6_000_to_7_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 23000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_87c457b7ee2392ee8360893b" + "resolved_value": 89577.44444444444, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_1d1fadffae053bf60d7fcd7e" }, { - "name": "hmrc/property_income_count_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_7_200_to_8_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 325000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7187a98d8342886b08e3f9e2" + "resolved_value": 116076.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_fae65610a14d6c22f475d757" }, { - "name": "hmrc/property_income_count_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_8_400_to_9_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 397000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c44a33c3bc4454de20132027" + "resolved_value": 97511.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_540c0869e23edc4a402166bf" }, { - "name": "hmrc/property_income_count_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_9_600_to_10_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 13000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_831e0c70ca80d37c785d4122" + "resolved_value": 102343.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_a170bf444a17ae88a80766b0" }, { - "name": "hmrc/property_income_count_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_10_800_to_12_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 226000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_f93d04a399cee892e5ec86b6" + "resolved_value": 123718.11111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b7d0d6add859217e797a66ea" } ] }, - "hmrc.spi.private_pension_income.amount_by_total_income_band": { + "dwp.uc.payment_distribution_couple_no_children": { "status": "active", "candidates": [ { - "name": "hmrc/private_pension_income_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_0_to_1_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 5430000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_cb943439ee9edfb445bc3fa5" + "resolved_value": 7506.333333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e8af6f4ef9d70ded4a4bf6b5" }, { - "name": "hmrc/private_pension_income_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_1_200_to_2_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 370000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7dcf8568040de10d9b3765da" + "resolved_value": 8797.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_28514ff922f7b00a4706e74b" }, { - "name": "hmrc/private_pension_income_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_12_000_to_13_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 4350000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_699889c2fb48479e27e44a4a" + "resolved_value": 16121.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8b8e20276b7af9f670009f64" }, { - "name": "hmrc/private_pension_income_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_13_200_to_14_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 13600000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0f977d0b50c1d0f1d1364e88" + "resolved_value": 13317.333333333334, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_22e83b92481a8b2267a15309" }, { - "name": "hmrc/private_pension_income_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_14_400_to_15_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1810000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d29aac0680380c80bd842bae" + "resolved_value": 19657.333333333332, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_42f1cbfe9fee5eb33f69088d" }, { - "name": "hmrc/private_pension_income_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_15_600_to_16_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 30200000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_bafcebe21a05cb0ca19d5e4f" + "resolved_value": 16443.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_aed9bf66bdbc046ee991fcf5" }, { - "name": "hmrc/private_pension_income_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_16_800_to_18_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1570000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_de0ed091681463c4ddec5b85" + "resolved_value": 13441.111111111111, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_7ccb1420b8ca3e26048291b9" }, { - "name": "hmrc/private_pension_income_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_18_000_to_19_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 24900000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_2884a006a8d7c144a8570a7d" + "resolved_value": 10728.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_a7057ddde3cd2ffaed246687" }, { - "name": "hmrc/private_pension_income_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_19_200_to_20_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1120000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_73e8de3b1ac198cc75c2b696" + "resolved_value": 9653.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3e228ab480713f15af6e847c" }, { - "name": "hmrc/private_pension_income_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_20_400_to_21_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 16900000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_6b29cd5a1d665a00bb3e8046" + "resolved_value": 6486.888888888889, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ecfd0dfe25ebc098ade1e902" }, { - "name": "hmrc/private_pension_income_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_21_600_to_22_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 17400000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_8f911d955de4f80e87dc69d8" + "resolved_value": 3981.8888888888887, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_2bbf9ab64d9fde9025452375" }, { - "name": "hmrc/private_pension_income_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_22_800_to_24_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 640000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_a13e6165bec82537c5c2883c" + "resolved_value": 2761.4444444444443, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_f19a927835e2aa12a94f6279" }, { - "name": "hmrc/private_pension_income_income_band_70_000_to_100_000", - "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, - "resolved_period": 2025, - "resolved_value": 9470000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0a1db235b87cad00eeddbfd8" - } - ] - }, - "hmrc.spi.private_pension_income.count_by_total_income_band": { - "status": "active", - "candidates": [ - { - "name": "hmrc/private_pension_income_count_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_2_400_to_3_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 109000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1fa1ba97628c6c2c315f0e15" + "resolved_value": 12256.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_46ba331006269a96f7aee844" }, { - "name": "hmrc/private_pension_income_count_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_24_000_to_25_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_188f8f1a0535263e4db7c9a8" + "resolved_value": 2131.222222222222, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_dd2ddbef54fc0ec48f61d7b0" }, { - "name": "hmrc/private_pension_income_count_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_25_200_to_26_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1070000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_853f104082cf479b98952c1a" + "resolved_value": 1475.3333333333333, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3ea2b4312343be8d41a37265" }, { - "name": "hmrc/private_pension_income_count_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_26_400_to_27_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2140000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c785199ee1d08fabfe927ff0" + "resolved_value": 1073.7777777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_55cf1a8742443b096e81b33e" }, { - "name": "hmrc/private_pension_income_count_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_27_600_to_28_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 29000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_a98ec830dee0eceb16b452e7" + "resolved_value": 746.3333333333334, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6cd7a2f97a5e43ba25481719" }, { - "name": "hmrc/private_pension_income_count_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_28_800_to_30_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2660000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1df6f17a33011c1c026dbc09" + "resolved_value": 605.7777777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3f50c2d6d58a3a45681f0c5d" }, { - "name": "hmrc/private_pension_income_count_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_3_600_to_4_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 20000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_042ab8896eb0214e7bbad477" + "resolved_value": 10945.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_0ead4e96f4e609a16cf1e53e" }, { - "name": "hmrc/private_pension_income_count_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1450000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0a28fd76533fc93cf8dbfe4a" + "resolved_value": 12492.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6823b2987ba44d1b85428d2b" }, { - "name": "hmrc/private_pension_income_count_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_6_000_to_7_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 10000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7fccfc3ee4246841b3ed391b" + "resolved_value": 12979.666666666666, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3a3fc258bd18da8c60177380" }, { - "name": "hmrc/private_pension_income_count_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_7_200_to_8_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 779000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_0f808aa135a13e5aa4668d22" + "resolved_value": 16484.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_b75ef335d484f8dd9ae13a70" }, { - "name": "hmrc/private_pension_income_count_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_8_400_to_9_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 643000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_097efdacf2adf0f90f90d1de" + "resolved_value": 15272.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_fcd000da1af753b61c9ac5df" }, { - "name": "hmrc/private_pension_income_count_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_9_600_to_10_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 4000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_8abdd0aa368c3d693e6d0989" + "resolved_value": 19142.333333333332, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3d38fa50aa9bf0e85549ec9a" }, { - "name": "hmrc/private_pension_income_count_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_10_800_to_12_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 259000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_f75fc4c3e2cb06bbdb7543f8" + "resolved_value": 13313.333333333334, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6697a9dc6c88a1a0b0472a1e" } ] }, - "hmrc.spi.state_pension.amount_by_total_income_band": { + "dwp.uc.payment_distribution_couple_with_children": { "status": "active", "candidates": [ { - "name": "hmrc/state_pension_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_0_to_1_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 847000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d63e1a96cab57582f482b8c2" + "resolved_value": 19073.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_8c1548028e499fa8399d1246" }, { - "name": "hmrc/state_pension_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_1_200_to_2_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 20000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_9a20bd62d4d5984865242929" + "resolved_value": 22775.777777777777, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ff2fef9bd96e583203e111d6" }, { - "name": "hmrc/state_pension_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_12_000_to_13_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 11800000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_45083c1383ea711226aebd1b" + "resolved_value": 40009.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_fee1fd2227a87871edfe2bfa" }, { - "name": "hmrc/state_pension_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_13_200_to_14_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 22200000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_310febb949c686fad2b71a94" + "resolved_value": 39972.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3b0427c86dc3df13761ab5b0" }, { - "name": "hmrc/state_pension_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_14_400_to_15_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 265000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_e79668076aadc063559585e9" + "resolved_value": 40518.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_bfd9a57597b46f356ef9cfc9" }, { - "name": "hmrc/state_pension_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_15_600_to_16_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 24900000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3d18e138c32f6581d6dafdd7" + "resolved_value": 37118.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_328ed88b561971d4ee47d852" }, { - "name": "hmrc/state_pension_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_16_800_to_18_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 179000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_e1dda799099ac0f4f439700d" + "resolved_value": 37177.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_c50c761ddfaab3cbfba62bfd" }, { - "name": "hmrc/state_pension_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_18_000_to_19_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 12300000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_151045b793ac454ab29260fc" + "resolved_value": 37164.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_74d32efc9f1984f60cbd9397" }, { - "name": "hmrc/state_pension_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_19_200_to_20_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 96000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_c95154893499181b7f3a8903" + "resolved_value": 33309.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_90b7e15c6554b1c74e7055f3" }, { - "name": "hmrc/state_pension_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_20_400_to_21_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 6020000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_bc4cee7d39f5e1c311464a55" + "resolved_value": 29102.555555555555, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_96f9b06f2d2afb65af9a224a" }, { - "name": "hmrc/state_pension_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_21_600_to_22_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 4660000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7f09c940c0fbc3cc42b9e510" + "resolved_value": 27534.666666666668, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e65a50de282324e8c188863a" }, { - "name": "hmrc/state_pension_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_22_800_to_24_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 43000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d265dfcd4ba09d10053a78a4" + "resolved_value": 25584.777777777777, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_16f48d435925ffa44f4d6871" }, { - "name": "hmrc/state_pension_income_band_70_000_to_100_000", - "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, - "resolved_period": 2025, - "resolved_value": 1890000000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_41c1df25454fdf413d5765d7" - } - ] - }, - "hmrc.spi.state_pension.count_by_total_income_band": { - "status": "active", - "candidates": [ - { - "name": "hmrc/state_pension_count_income_band_100_000_to_150_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_2_400_to_3_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 74000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_01b8f391c006c09d3ed51865" + "resolved_value": 26502.666666666668, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_93fd0534df01d1dade53397e" }, { - "name": "hmrc/state_pension_count_income_band_1_000_000_to_inf", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_24_000_to_25_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_b8c359bb976d919bedb9076a" + "resolved_value": 22927.777777777777, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_ffb787487a36c86f94d25a25" }, { - "name": "hmrc/state_pension_count_income_band_12_570_to_15_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_25_200_to_26_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1140000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_05f2cd00648c7f8225723a9c" + "resolved_value": 20334.666666666668, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_2f4d504be6f184b7834f2687" }, { - "name": "hmrc/state_pension_count_income_band_15_000_to_20_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_26_400_to_27_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2050000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_ced75bd10fbfa56ef2eabeae" + "resolved_value": 17535.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_719022eef2836c069c4b02d0" }, { - "name": "hmrc/state_pension_count_income_band_150_000_to_200_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_27_600_to_28_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 21000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_73d438db1a168d794e290b0e" + "resolved_value": 15399.888888888889, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_3b1d8f6516b32e39ecad3873" }, { - "name": "hmrc/state_pension_count_income_band_20_000_to_30_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_28_800_to_30_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 2320000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_69b521bf537da156d2afa48e" + "resolved_value": 12836.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_115a9ea1e35d76db13756149" }, { - "name": "hmrc/state_pension_count_income_band_200_000_to_300_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_3_600_to_4_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 14000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_3edcf70605856bb8b906ea19" + "resolved_value": 29027.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_255e8c862df5351282c29809" }, { - "name": "hmrc/state_pension_count_income_band_30_000_to_40_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_4_800_to_6_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 1160000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_1cafb0f484a7d8191b7fb989" + "resolved_value": 32427.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_32261034f242507c0a7337b3" }, { - "name": "hmrc/state_pension_count_income_band_300_000_to_500_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_6_000_to_7_200", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 8000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7f510c873457703c57c16983" + "resolved_value": 34956.88888888889, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_6f40664df124c4dca50524b8" }, { - "name": "hmrc/state_pension_count_income_band_40_000_to_50_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_7_200_to_8_400", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 568000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_d4ff6839b2d936396ae33f67" + "resolved_value": 37410.77777777778, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_27b091b1a00bc33ab68139f8" }, { - "name": "hmrc/state_pension_count_income_band_50_000_to_70_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_8_400_to_9_600", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 441000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_2b5023baae0b6814c07afbe9" + "resolved_value": 39910.333333333336, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_22b16b470c0b51499fb2f042" }, { - "name": "hmrc/state_pension_count_income_band_500_000_to_1_000_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_9_600_to_10_800", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 3000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_f9a834c26fa7c215c052f4f5" + "resolved_value": 39368.0, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_7dbca9e2f8508f1066399b73" }, { - "name": "hmrc/state_pension_count_income_band_70_000_to_100_000", + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_10_800_to_12_000", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 176000.0, - "resolved_fact_period": "2023", - "resolved_fact_key": "ledger_aggregate_fact_v2_7514fbdbf5f909008b617d06" + "resolved_value": 40805.444444444445, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_23cf62e7e58211e783c52d2e" } ] }, - "hmrc.cgt.taxpayers_total": { + "dwp.uc.scotland_households_child_under_1": { "status": "active", "candidates": [ { - "name": "hmrc.cgt.taxpayers_total", + "name": "dwp.uc.scotland_households_child_under_1", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 9, + "matched_fact_count_at_or_before_period": 9, "resolved_period": 2025, - "resolved_value": 551000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_31d709fc393c2bf4d04efca5" + "resolved_value": 14333.222222222223, + "resolved_fact_period": "2025-12", + "resolved_fact_key": "ledger_aggregate_fact_v2_e88b27e010e08ac8d36d0d30" } ] }, - "hmrc.cgt.gains_total": { + "dwp.uc.two_child_limit.households_affected": { "status": "active", "candidates": [ { - "name": "hmrc.cgt.gains_total", + "name": "dwp.uc.two_child_limit.households_affected", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 119258000000.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_12060d20a417d85d67cf24e8" + "resolved_value": 469780.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_860a48172c62298ceb00c20b" } ] }, - "dwp.benefit_cap.capped_households": { + "dwp.uc.two_child_limit.children_affected": { "status": "active", "candidates": [ { - "name": "dwp.benefit_cap.capped_households", + "name": "dwp.uc.two_child_limit.children_affected", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 110637.0, - "resolved_fact_period": "2025-11", - "resolved_fact_key": "ledger_aggregate_fact_v2_b698397897ed849f096cdd94" + "resolved_value": 597920.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_4378e45ac129e036b4a6ca03" } ] }, - "dwp.pip.daily_living_standard_claimants": { - "status": "no_fact_at_or_before_period", + "dwp.uc.two_child_limit.children_in_affected_households": { + "status": "active", "candidates": [ { - "name": "dwp.pip.daily_living_standard_claimants", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + "name": "dwp.uc.two_child_limit.children_in_affected_households", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 1665540.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_05774e34488c474df7f84742" } ] }, - "dwp.pip.daily_living_enhanced_claimants": { - "status": "no_fact_at_or_before_period", + "dwp.uc.two_child_limit.households_3_children": { + "status": "active", "candidates": [ { - "name": "dwp.pip.daily_living_enhanced_claimants", - "status": "no_fact_at_or_before_period", - "matched_fact_count_overall": 0, - "matched_fact_count_at_or_before_period": 0, - "error": "ledger_reference_compile_status_no_fact_at_or_before_period" + "name": "dwp.uc.two_child_limit.households_3_children", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 297310.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_dca7734c17910c213e397741" } ] }, - "dwp.esa_claimants": { + "dwp.uc.two_child_limit.children_in_3_children_households": { "status": "active", "candidates": [ { - "name": "dwp.esa_claimants", + "name": "dwp.uc.two_child_limit.children_in_3_children_households", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1000000.0, - "resolved_fact_period": "2025-08", - "resolved_fact_key": "ledger_aggregate_fact_v2_16ef67af9274891abd5e4fdc" + "resolved_value": 891930.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_515b2aeb394a9a9a1fd2d195" } ] }, - "dwp.esa_contrib_claimants": { + "dwp.uc.two_child_limit.households_4_children": { "status": "active", "candidates": [ { - "name": "dwp.esa_contrib_claimants", + "name": "dwp.uc.two_child_limit.households_4_children", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 620000.0, - "resolved_fact_period": "2025-08", - "resolved_fact_key": "ledger_aggregate_fact_v2_bf22883b03cf631864b2ae1d" + "resolved_value": 117190.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_a78a141d4018bdd92678b497" } ] }, - "dwp.esa_income_claimants": { + "dwp.uc.two_child_limit.children_in_4_children_households": { "status": "active", "candidates": [ { - "name": "dwp.esa_income_claimants", + "name": "dwp.uc.two_child_limit.children_in_4_children_households", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 180000.0, - "resolved_fact_period": "2025-08", - "resolved_fact_key": "ledger_aggregate_fact_v2_8684f0c35a1d71a291e61c81" + "resolved_value": 468760.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_adef094060710c5b354e7ac4" } ] }, - "dwp.jsa_claimants": { + "dwp.uc.two_child_limit.households_5_children": { "status": "active", "candidates": [ { - "name": "dwp.jsa_claimants", + "name": "dwp.uc.two_child_limit.households_5_children", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 71000.0, - "resolved_fact_period": "2025-08", - "resolved_fact_key": "ledger_aggregate_fact_v2_b5d92ff094ad2c534847291a" + "resolved_value": 37020.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_2c9cfcd7cc862c9c1dd57e4d" } ] }, - "dwp.uc.households_children_1": { + "dwp.uc.two_child_limit.children_in_5_children_households": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_children_1", + "name": "dwp.uc.two_child_limit.children_in_5_children_households", "status": "active", - "matched_fact_count_overall": 12, - "matched_fact_count_at_or_before_period": 12, - "matched_fact_count_in_source_window": 12, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1190123.8333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_c1533879baf52aaa88758083" + "resolved_value": 185120.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_2134e60314c98faf54df2498" } ] }, - "dwp.uc.households_children_2": { + "dwp.uc.two_child_limit.households_6_plus_children": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_children_2", + "name": "dwp.uc.two_child_limit.households_6_plus_children", "status": "active", - "matched_fact_count_overall": 12, - "matched_fact_count_at_or_before_period": 12, - "matched_fact_count_in_source_window": 12, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1049895.5, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_46fca4f9d4e0519f0c190824" + "resolved_value": 18260.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_e6302f9f933c14e97fc2fcae" } ] }, - "dwp.uc.households_children_3": { + "dwp.uc.two_child_limit.children_in_6_plus_children_households": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_children_3", + "name": "dwp.uc.two_child_limit.children_in_6_plus_children_households", "status": "active", - "matched_fact_count_overall": 12, - "matched_fact_count_at_or_before_period": 12, - "matched_fact_count_in_source_window": 12, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 477887.6666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ba5bce203605d4e16037d311" + "resolved_value": 119720.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_235cb4e779dd669dad2cd421" } ] }, - "dwp.uc.households_children_4": { + "dwp.uc.two_child_limit.households_claimant_pip": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_children_4", + "name": "dwp.uc.two_child_limit.households_claimant_pip", "status": "active", - "matched_fact_count_overall": 12, - "matched_fact_count_at_or_before_period": 12, - "matched_fact_count_in_source_window": 12, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 170713.66666666666, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_33541aafa05a63dcae4fc144" + "resolved_value": 65280.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_55dd86462d71be247206b5a2" } ] }, - "dwp.uc.households_children_5_or_more": { + "dwp.uc.two_child_limit.children_claimant_pip": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_children_5_or_more", + "name": "dwp.uc.two_child_limit.children_claimant_pip", "status": "active", - "matched_fact_count_overall": 12, - "matched_fact_count_at_or_before_period": 12, - "matched_fact_count_in_source_window": 12, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 76320.08333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_33d99593d166153ca2d0adec" + "resolved_value": 235270.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_fe554fcdcb22a77d71c01537" } ] }, - "dwp.uc.households_single_no_children": { + "dwp.uc.two_child_limit.households_disabled_child_element": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_single_no_children", + "name": "dwp.uc.two_child_limit.households_disabled_child_element", "status": "active", - "matched_fact_count_overall": 24, - "matched_fact_count_at_or_before_period": 24, - "matched_fact_count_in_source_window": 24, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 2990070.1666666665, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_c013630f1154eb7252466457" + "resolved_value": 129630.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_535ef3b4afd474ea14d16d27" } ] }, - "dwp.uc.households_single_with_children": { + "dwp.uc.two_child_limit.children_disabled_child_element": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_single_with_children", + "name": "dwp.uc.two_child_limit.children_disabled_child_element", "status": "active", - "matched_fact_count_overall": 24, - "matched_fact_count_at_or_before_period": 24, - "matched_fact_count_in_source_window": 24, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 2138780.1666666665, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_4e21ff5e364647d7c75589d2" + "resolved_value": 479460.0, + "resolved_fact_period": "2025-04", + "resolved_fact_key": "ledger_aggregate_fact_v2_ac642b7002518167b56e1537" } ] }, - "dwp.uc.households_couple_no_children": { + "ons.population.uk_total": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_couple_no_children", + "name": "ons.population.uk_total", "status": "active", - "matched_fact_count_overall": 24, - "matched_fact_count_at_or_before_period": 24, - "matched_fact_count_in_source_window": 24, + "matched_fact_count_overall": 2, + "matched_fact_count_at_or_before_period": 2, "resolved_period": 2025, - "resolved_value": 241130.91666666666, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ad46a5483afd6bad20dc50fe" + "resolved_value": 69281437.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_6c212695ea75be0d2a635e9b" } ] }, - "dwp.uc.households_couple_with_children": { + "ons.population.age_0_9_by_region": { "status": "active", "candidates": [ { - "name": "dwp.uc.households_couple_with_children", + "name": "ons.population.age_0_9_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 24, - "matched_fact_count_at_or_before_period": 24, - "matched_fact_count_in_source_window": 24, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 826160.8333333334, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_1a76243d3f616b19eaed3e0a" - } - ] - }, - "dwp.uc.payment_distribution_single": { - "status": "active", - "candidates": [ + "resolved_value": 285165.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_c796672d4d88aa11ab15a31a" + }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_0_to_1_200", + "name": "ons.population.age_0_9_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 89479.33333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_2ab0a2ad4fff5a73eb430af0" + "resolved_value": 865892.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_de0fc360f660f7a387628062" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_1_200_to_2_400", + "name": "ons.population.age_0_9_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 127403.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_4da96f3f87204e3b63a7197e" + "resolved_value": 626938.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_cbc8ee6d7552af4ba61edcb1" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_12_000_to_13_200", + "name": "ons.population.age_0_9_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 122035.55555555556, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_100f173ee4233f5ed3616bbc" + "resolved_value": 543004.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f858f629484e7989a9dc1f0b" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_13_200_to_14_400", + "name": "ons.population.age_0_9_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 197163.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_263205affbfb94c0a87b7834" + "resolved_value": 718837.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_de2d9b45547f640fbc7ebb5a" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_14_400_to_15_600", + "name": "ons.population.age_0_9_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 209497.33333333334, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_f4e51bd6399c4a72f10e625f" + "resolved_value": 744698.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fec32a4b3417958969f5f2d9" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_15_600_to_16_800", + "name": "ons.population.age_0_9_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 149963.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_746aa1e8d116c4543251b137" + "resolved_value": 1054493.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_cdd134faa924b905bd8a36ad" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_16_800_to_18_000", + "name": "ons.population.age_0_9_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 108689.66666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_0dc82a9ba1ce7a8ea1855991" + "resolved_value": 1059434.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f0ef951a6bad79d44726fe11" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_18_000_to_19_200", + "name": "ons.population.age_0_9_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 61718.666666666664, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_4399ab26a944d2d46a12311d" + "resolved_value": 575506.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d6a250010241c987a217b54f" + }, + { + "name": "ons.population.age_0_9_by_region@W92000004", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", + "resolved_period": 2025, + "resolved_value": 321552.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eef268031d128fde4eec5d91" + }, + { + "name": "ons.population.age_0_9_by_region@S92000003", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", + "resolved_period": 2025, + "resolved_value": 527989.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f9862176e9cdec891820dfa2" + }, + { + "name": "ons.population.age_0_9_by_region@N92000002", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", + "resolved_period": 2025, + "resolved_value": 229505.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eb8519582dac5a21a72f8360" + } + ] + }, + "ons.population.age_10_19_by_region": { + "status": "active", + "candidates": [ + { + "name": "ons.population.age_10_19_by_region@E12000001", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 326306.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ce36092d33f50f712f620485" + }, + { + "name": "ons.population.age_10_19_by_region@E12000002", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 952864.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f6fc45432de26717dc50151d" + }, + { + "name": "ons.population.age_10_19_by_region@E12000003", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 696780.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f1942c03893e2aeccb514e34" + }, + { + "name": "ons.population.age_10_19_by_region@E12000004", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 615630.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d96b0e1445c879a8267ef553" + }, + { + "name": "ons.population.age_10_19_by_region@E12000005", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 785062.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ff921d8727a6c1ea11548896" + }, + { + "name": "ons.population.age_10_19_by_region@E12000006", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 785091.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d66fd1b48bc1e9ae4d38f778" + }, + { + "name": "ons.population.age_10_19_by_region@E12000007", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 1068691.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8b79fef8b80acc1deb297b7" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_19_200_to_20_400", + "name": "ons.population.age_10_19_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 34050.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b8ab0a63fbef46e02aa34d37" + "resolved_value": 1183235.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ba4c8f8e6cb789626f191523" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_20_400_to_21_600", + "name": "ons.population.age_10_19_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 22338.333333333332, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_d22d996cd3edb838030ab0dc" + "resolved_value": 677228.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8ea04bba18d65ed2ac0dd74" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_21_600_to_22_800", + "name": "ons.population.age_10_19_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 14685.777777777777, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_404ce9f1ea3e17ec602a1de9" + "resolved_value": 374851.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f040814c3de37f315671a60d" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_22_800_to_24_000", + "name": "ons.population.age_10_19_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 11133.666666666666, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_d2268373d3e5894e10f3f004" + "resolved_value": 612935.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d8cb95f3b8a4eb5725ec1e0d" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_2_400_to_3_600", + "name": "ons.population.age_10_19_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 197136.66666666666, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_37e9e071fb187dab220f3876" - }, + "resolved_value": 252764.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ef301c6ab42b35eb692e20b0" + } + ] + }, + "ons.population.age_20_29_by_region": { + "status": "active", + "candidates": [ { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_24_000_to_25_200", + "name": "ons.population.age_20_29_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 6951.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8af773c191130cd03d9de884" + "resolved_value": 343015.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ebe0b2ced4987cd701db581a" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_25_200_to_26_400", + "name": "ons.population.age_20_29_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 6508.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_f46b09c321cf98f8e0d12b89" + "resolved_value": 986590.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fe94b1572d6db93b57407bcd" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_26_400_to_27_600", + "name": "ons.population.age_20_29_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 5913.444444444444, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_a763ca2d87febd61de26d8b0" + "resolved_value": 717479.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_cb721748c503839a9229a404" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_27_600_to_28_800", + "name": "ons.population.age_20_29_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 1884.111111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8b6d8894debcbda5e38c0923" + "resolved_value": 612108.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f7be7895d4f680a502caeb4b" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_28_800_to_30_000", + "name": "ons.population.age_20_29_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 1653.7777777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_aa3077a36f37ae73562e57fc" + "resolved_value": 766058.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f539e665a5478f92346bb4d4" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_3_600_to_4_800", + "name": "ons.population.age_20_29_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 377063.1111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_988e854b9584a36b1b62810f" + "resolved_value": 727218.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ff31c89cfa957bdd279c9947" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_4_800_to_6_000", + "name": "ons.population.age_20_29_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 195983.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_7a3e7c9563c15ba28ffd3c3e" + "resolved_value": 1508607.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f0ffc4e5795625b9238d6dde" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_6_000_to_7_200", + "name": "ons.population.age_20_29_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 114033.33333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_294fdb23cc02a98334267137" + "resolved_value": 1066121.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f3a720e9d1d4664e83307a9a" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_7_200_to_8_400", + "name": "ons.population.age_20_29_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 149043.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_5d4a92d292c96a2f440dee5a" + "resolved_value": 684393.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fe520978b4f4105aa292a3f5" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_8_400_to_9_600", + "name": "ons.population.age_20_29_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 399750.22222222225, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ad92f85c0ac85ea7bb6e8ca3" + "resolved_value": 380557.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fe44434fdb2e33179826ee35" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_9_600_to_10_800", + "name": "ons.population.age_20_29_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 386411.6666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e2bbf1fe386cfcd8db712026" + "resolved_value": 703554.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_dadba40aea2eb5dcdb2e5d6e" }, { - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_10_800_to_12_000", + "name": "ons.population.age_20_29_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 104891.11111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_de2719af6e4d5f9ffe65aaee" + "resolved_value": 219525.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_afe826389a344a01c4be2862" } ] }, - "dwp.uc.payment_distribution_lone_parent": { + "ons.population.age_30_39_by_region": { "status": "active", "candidates": [ { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_0_to_1_200", - "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, - "resolved_period": 2025, - "resolved_value": 26670.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_7b17c88cf49645b2d3ef44a6" - }, - { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_1_200_to_2_400", + "name": "ons.population.age_30_39_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 36208.11111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_765ace417ceafd524ffda4c0" + "resolved_value": 363357.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ceb94ab430de1f0bc8c19ce4" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_12_000_to_13_200", + "name": "ons.population.age_30_39_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 125798.44444444444, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_eaddee052a3861f259b93272" + "resolved_value": 1064968.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eeb6e6194f0405a4b7010913" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_13_200_to_14_400", + "name": "ons.population.age_30_39_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 129133.66666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b8d66013c8a68e423f507be8" + "resolved_value": 770809.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ebc2a149da9287a3a2b28d45" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_14_400_to_15_600", + "name": "ons.population.age_30_39_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 115856.66666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_1bc84efe74c485d143caab7b" + "resolved_value": 676709.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fefffb16e9e1a25fd0da3435" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_15_600_to_16_800", + "name": "ons.population.age_30_39_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 125660.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e26d2d7e425a94fd9fde3d17" + "resolved_value": 839114.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eaee3d4e99154692dbad24b9" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_16_800_to_18_000", + "name": "ons.population.age_30_39_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 135836.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8fa2e062c33297530d458054" + "resolved_value": 895639.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fbb89267af1b9a1a349f3274" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_18_000_to_19_200", + "name": "ons.population.age_30_39_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 135444.88888888888, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_77cb72042ffb9b2b1af769e3" + "resolved_value": 1537372.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_c7d5874566b099143ddbac28" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_19_200_to_20_400", + "name": "ons.population.age_30_39_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 106341.88888888889, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_acb89a96425fd7af119e0c3b" + "resolved_value": 1284552.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ff4aa5baed49b53887253b70" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600", + "name": "ons.population.age_30_39_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, - "resolved_period": 2025, - "resolved_value": 85490.44444444444, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3aa5825f5e5e8dbc570c0af1" + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", + "resolved_period": 2025, + "resolved_value": 742082.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8c6ce01a5aa83ce392ccf3a" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_21_600_to_22_800", + "name": "ons.population.age_30_39_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 80226.88888888889, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_c5a0ee450c3ad7f882dfb167" + "resolved_value": 410248.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fa74c4da871af17e8af431d6" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_22_800_to_24_000", + "name": "ons.population.age_30_39_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 71259.55555555556, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_13ffca0d11c038fc7d096ec9" + "resolved_value": 733480.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f045b554aebb8f1b21df5a5c" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_2_400_to_3_600", + "name": "ons.population.age_30_39_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 46312.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6619e26753d01d76247e1759" - }, + "resolved_value": 254067.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eb383d007487ef1df14f4946" + } + ] + }, + "ons.population.age_40_49_by_region": { + "status": "active", + "candidates": [ { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_24_000_to_25_200", + "name": "ons.population.age_40_49_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 51301.666666666664, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_4a935006e5c346bfe0009055" + "resolved_value": 320860.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f081bcb6c2e794e8ec3b0161" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_25_200_to_26_400", + "name": "ons.population.age_40_49_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 43305.22222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e64560bd9c14d083cd03c985" + "resolved_value": 930967.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f7744877e123c00b96511818" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_26_400_to_27_600", + "name": "ons.population.age_40_49_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 34910.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8e16d0c97924701eb074c25d" + "resolved_value": 674349.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d6e708c298712163b552e6c7" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_27_600_to_28_800", + "name": "ons.population.age_40_49_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 28513.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_cf9757018b0d313f20342b59" + "resolved_value": 610611.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e861cd162b6b06a1107ca177" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_28_800_to_30_000", + "name": "ons.population.age_40_49_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 22593.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6bede883f015e48e86c0a2de" + "resolved_value": 746341.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fa28a64a0b8ec87502b44a9f" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_3_600_to_4_800", + "name": "ons.population.age_40_49_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 60310.11111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b0710535c8b6006db118eb3b" + "resolved_value": 838578.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f94400c214a5c3c3847cc562" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_4_800_to_6_000", + "name": "ons.population.age_40_49_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 67858.66666666667, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b4008c8b22190b4ee185d4f6" + "resolved_value": 1268973.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fb8228a78efb8cdb3dd46764" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_6_000_to_7_200", + "name": "ons.population.age_40_49_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 89577.44444444444, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_1d1fadffae053bf60d7fcd7e" + "resolved_value": 1255951.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_edac715ea904f29dbd3332f9" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_7_200_to_8_400", + "name": "ons.population.age_40_49_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 116076.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_fae65610a14d6c22f475d757" + "resolved_value": 688417.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f6ecf5ebd09a5d638cf6dd15" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_8_400_to_9_600", + "name": "ons.population.age_40_49_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 97511.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_540c0869e23edc4a402166bf" + "resolved_value": 365951.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f6496b4ebd88792d288206a1" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_9_600_to_10_800", + "name": "ons.population.age_40_49_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 102343.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_a170bf444a17ae88a80766b0" + "resolved_value": 675368.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e159eb5144ceae58dccb4dc0" }, { - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_10_800_to_12_000", + "name": "ons.population.age_40_49_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 123718.11111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b7d0d6add859217e797a66ea" + "resolved_value": 246140.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_b71979cb27997e512ea68888" } ] }, - "dwp.uc.payment_distribution_couple_no_children": { + "ons.population.age_50_59_by_region": { "status": "active", "candidates": [ { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_0_to_1_200", - "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, - "resolved_period": 2025, - "resolved_value": 7506.333333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e8af6f4ef9d70ded4a4bf6b5" - }, - { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_1_200_to_2_400", - "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, - "resolved_period": 2025, - "resolved_value": 8797.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_28514ff922f7b00a4706e74b" - }, - { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_12_000_to_13_200", + "name": "ons.population.age_50_59_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 16121.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8b8e20276b7af9f670009f64" + "resolved_value": 360074.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8febade5d1aa4eff5515f79" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_13_200_to_14_400", + "name": "ons.population.age_50_59_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 13317.333333333334, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_22e83b92481a8b2267a15309" + "resolved_value": 995810.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ce316c567d2d3919bad74247" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_14_400_to_15_600", + "name": "ons.population.age_50_59_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 19657.333333333332, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_42f1cbfe9fee5eb33f69088d" + "resolved_value": 736903.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f07e470e70895701083be7b4" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_15_600_to_16_800", + "name": "ons.population.age_50_59_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 16443.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_aed9bf66bdbc046ee991fcf5" + "resolved_value": 676307.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fc3b848c0d546908542f7522" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_16_800_to_18_000", + "name": "ons.population.age_50_59_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 13441.111111111111, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_7ccb1420b8ca3e26048291b9" + "resolved_value": 794143.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eced9fed4ca113ee655134b7" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_18_000_to_19_200", + "name": "ons.population.age_50_59_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 10728.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_a7057ddde3cd2ffaed246687" + "resolved_value": 866946.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8011436193a375ac63a33af" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_19_200_to_20_400", + "name": "ons.population.age_50_59_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 9653.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3e228ab480713f15af6e847c" + "resolved_value": 1087518.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_c0999183e74a6f6978377427" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_20_400_to_21_600", + "name": "ons.population.age_50_59_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 6486.888888888889, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ecfd0dfe25ebc098ade1e902" + "resolved_value": 1287719.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f5b6740db34f7f702bb230fb" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_21_600_to_22_800", + "name": "ons.population.age_50_59_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 3981.8888888888887, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_2bbf9ab64d9fde9025452375" + "resolved_value": 784718.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_cf32f90895454cdb82d3a611" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_22_800_to_24_000", + "name": "ons.population.age_50_59_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, - "resolved_period": 2025, - "resolved_value": 2761.4444444444443, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_f19a927835e2aa12a94f6279" + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", + "resolved_period": 2025, + "resolved_value": 424694.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ed905faab304a40013587ffd" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_2_400_to_3_600", + "name": "ons.population.age_50_59_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 12256.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_46ba331006269a96f7aee844" + "resolved_value": 766715.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f332e28940d1c94b1e2dec31" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_24_000_to_25_200", + "name": "ons.population.age_50_59_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 2131.222222222222, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_dd2ddbef54fc0ec48f61d7b0" + "resolved_value": 255269.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f786aada1891e9f309902c1c" + } + ] + }, + "ons.population.age_60_69_by_region": { + "status": "active", + "candidates": [ + { + "name": "ons.population.age_60_69_by_region@E12000001", + "status": "active", + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 349719.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ff4466f1cb6fb29ce9b132b0" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_25_200_to_26_400", + "name": "ons.population.age_60_69_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 1475.3333333333333, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3ea2b4312343be8d41a37265" + "resolved_value": 884043.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f861d328dbb8a01929eb1e91" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_26_400_to_27_600", + "name": "ons.population.age_60_69_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 1073.7777777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_55cf1a8742443b096e81b33e" + "resolved_value": 652931.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f9ab6846d67db88fda81fa30" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_27_600_to_28_800", + "name": "ons.population.age_60_69_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 746.3333333333334, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6cd7a2f97a5e43ba25481719" + "resolved_value": 591429.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e884ef403c95938c7ebf961b" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_28_800_to_30_000", + "name": "ons.population.age_60_69_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 605.7777777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3f50c2d6d58a3a45681f0c5d" + "resolved_value": 677922.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fd4d62d07376896553d9fb66" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_3_600_to_4_800", + "name": "ons.population.age_60_69_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 10945.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_0ead4e96f4e609a16cf1e53e" + "resolved_value": 744651.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f77f96051d8340645148d138" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000", + "name": "ons.population.age_60_69_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 12492.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6823b2987ba44d1b85428d2b" + "resolved_value": 787666.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e9f63f0939b77a41ec815de0" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_6_000_to_7_200", + "name": "ons.population.age_60_69_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 12979.666666666666, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3a3fc258bd18da8c60177380" + "resolved_value": 1089421.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f8667b0358441f18c2f8e548" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_7_200_to_8_400", + "name": "ons.population.age_60_69_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 16484.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_b75ef335d484f8dd9ae13a70" + "resolved_value": 736639.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f923cb193de625676c40b5c4" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_8_400_to_9_600", + "name": "ons.population.age_60_69_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 15272.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_fcd000da1af753b61c9ac5df" + "resolved_value": 401775.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f518ad65099be8a424a62142" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_9_600_to_10_800", + "name": "ons.population.age_60_69_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 19142.333333333332, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3d38fa50aa9bf0e85549ec9a" + "resolved_value": 721727.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e893656e104d3c1c375fa5e7" }, { - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_10_800_to_12_000", + "name": "ons.population.age_60_69_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 13313.333333333334, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6697a9dc6c88a1a0b0472a1e" + "resolved_value": 223111.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f9f6e8f32b460fefc304aeee" } ] }, - "dwp.uc.payment_distribution_couple_with_children": { + "ons.population.age_70_79_by_region": { "status": "active", "candidates": [ { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_0_to_1_200", + "name": "ons.population.age_70_79_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 19073.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_8c1548028e499fa8399d1246" + "resolved_value": 265573.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f135bc83bf0e2495ccab922b" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_1_200_to_2_400", + "name": "ons.population.age_70_79_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 22775.777777777777, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ff2fef9bd96e583203e111d6" + "resolved_value": 669277.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f18853f5a9046c59334188d3" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_12_000_to_13_200", + "name": "ons.population.age_70_79_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 40009.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_fee1fd2227a87871edfe2bfa" + "resolved_value": 504131.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f71c0090e322cc6b02a80193" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_13_200_to_14_400", + "name": "ons.population.age_70_79_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 39972.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3b0427c86dc3df13761ab5b0" + "resolved_value": 466530.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f1eaa2a27d34d75f4fcaf147" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_14_400_to_15_600", + "name": "ons.population.age_70_79_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 40518.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_bfd9a57597b46f356ef9cfc9" + "resolved_value": 528207.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f6ed607ecc20a6bd1c0c8bef" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_15_600_to_16_800", + "name": "ons.population.age_70_79_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 37118.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_328ed88b561971d4ee47d852" + "resolved_value": 599882.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ef2c110c9bb5462379338b17" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_16_800_to_18_000", + "name": "ons.population.age_70_79_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 37177.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_c50c761ddfaab3cbfba62bfd" + "resolved_value": 485057.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d9b7f415855dd808a1aee77c" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_18_000_to_19_200", + "name": "ons.population.age_70_79_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 37164.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_74d32efc9f1984f60cbd9397" + "resolved_value": 865392.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_dea0c6655095781f862cf7ac" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_19_200_to_20_400", + "name": "ons.population.age_70_79_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 33309.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_90b7e15c6554b1c74e7055f3" + "resolved_value": 618254.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_e8898137aad748593321b2fb" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_20_400_to_21_600", + "name": "ons.population.age_70_79_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 29102.555555555555, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_96f9b06f2d2afb65af9a224a" + "resolved_value": 321668.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f1de159eac6f90c69f7aef22" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_21_600_to_22_800", + "name": "ons.population.age_70_79_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 27534.666666666668, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e65a50de282324e8c188863a" + "resolved_value": 519252.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f506930ca553f609fe076c9c" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_22_800_to_24_000", + "name": "ons.population.age_70_79_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 25584.777777777777, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_16f48d435925ffa44f4d6871" - }, + "resolved_value": 155382.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ec559b1c9b44b3acc8de9073" + } + ] + }, + "ons.population.age_80_89_by_region": { + "status": "active", + "candidates": [ { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_2_400_to_3_600", + "name": "ons.population.age_80_89_by_region@E12000001", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 26502.666666666668, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_93fd0534df01d1dade53397e" + "resolved_value": 122118.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_eec7f31aac48f686e0d9a343" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_24_000_to_25_200", + "name": "ons.population.age_80_89_by_region@E12000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 22927.777777777777, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_ffb787487a36c86f94d25a25" + "resolved_value": 324141.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f5dcf6bfa6186fc6200bb9cd" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_25_200_to_26_400", + "name": "ons.population.age_80_89_by_region@E12000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 20334.666666666668, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_2f4d504be6f184b7834f2687" + "resolved_value": 243274.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ed30948324557f6bd25a0064" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_26_400_to_27_600", + "name": "ons.population.age_80_89_by_region@E12000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 17535.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_719022eef2836c069c4b02d0" + "resolved_value": 225626.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f32be81803e3b527361467e0" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_27_600_to_28_800", + "name": "ons.population.age_80_89_by_region@E12000005", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 15399.888888888889, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_3b1d8f6516b32e39ecad3873" + "resolved_value": 275030.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f252d1b20801bc91a40a9a12" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_28_800_to_30_000", + "name": "ons.population.age_80_89_by_region@E12000006", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 12836.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_115a9ea1e35d76db13756149" + "resolved_value": 305691.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d387c1edf10113b2b8602fc3" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_3_600_to_4_800", + "name": "ons.population.age_80_89_by_region@E12000007", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 29027.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_255e8c862df5351282c29809" + "resolved_value": 237061.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fa7d5971f83d3ece501a33c7" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_4_800_to_6_000", + "name": "ons.population.age_80_89_by_region@E12000008", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 32427.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_32261034f242507c0a7337b3" + "resolved_value": 447958.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_bb61f66f5159481b73615674" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_6_000_to_7_200", + "name": "ons.population.age_80_89_by_region@E12000009", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 34956.88888888889, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_6f40664df124c4dca50524b8" + "resolved_value": 313605.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ea5f3461bbda1967761f0d48" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_7_200_to_8_400", + "name": "ons.population.age_80_89_by_region@W92000004", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "W92000004", "resolved_period": 2025, - "resolved_value": 37410.77777777778, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_27b091b1a00bc33ab68139f8" + "resolved_value": 154319.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d766d2003f1fd56635d53589" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_8_400_to_9_600", + "name": "ons.population.age_80_89_by_region@S92000003", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "S92000003", "resolved_period": 2025, - "resolved_value": 39910.333333333336, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_22b16b470c0b51499fb2f042" + "resolved_value": 238904.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f206015a88100a72b83bbe9f" }, { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_9_600_to_10_800", + "name": "ons.population.age_80_89_by_region@N92000002", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 20, + "matched_fact_count_at_or_before_period": 20, + "geography_level": "country", + "geography_id": "N92000002", "resolved_period": 2025, - "resolved_value": 39368.0, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_7dbca9e2f8508f1066399b73" - }, + "resolved_value": 77441.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fb5795d1ea12a7a7005a9ee9" + } + ] + }, + "ons.population.female_0_4": { + "status": "active", + "candidates": [ { - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_10_800_to_12_000", + "name": "ons.population.female_0_4", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 40805.444444444445, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_23cf62e7e58211e783c52d2e" + "resolved_value": 1744355.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fb55d5f20f74ee39a1e8fcb4" } ] }, - "dwp.uc.scotland_households_child_under_1": { + "ons.population.female_10_14": { "status": "active", "candidates": [ { - "name": "dwp.uc.scotland_households_child_under_1", + "name": "ons.population.female_10_14", "status": "active", - "matched_fact_count_overall": 9, - "matched_fact_count_at_or_before_period": 9, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 14333.222222222223, - "resolved_fact_period": "2025-12", - "resolved_fact_key": "ledger_aggregate_fact_v2_e88b27e010e08ac8d36d0d30" + "resolved_value": 2052052.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f9a457edc9491e5810c39f5f" } ] }, - "dwp.uc.two_child_limit.households_affected": { + "ons.population.female_15_19": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_affected", + "name": "ons.population.female_15_19", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 469780.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_860a48172c62298ceb00c20b" + "resolved_value": 2002835.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f0e2139b52c615925c9075dd" } ] }, - "dwp.uc.two_child_limit.children_affected": { + "ons.population.female_20_24": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_affected", + "name": "ons.population.female_20_24", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 597920.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_4378e45ac129e036b4a6ca03" + "resolved_value": 2034609.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_b4e36c0dc0a924667be47bbc" } ] }, - "dwp.uc.two_child_limit.children_in_affected_households": { + "ons.population.female_25_29": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_in_affected_households", + "name": "ons.population.female_25_29", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 1665540.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_05774e34488c474df7f84742" + "resolved_value": 2291610.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d9d6a711d0cbc4919a8643c0" } ] }, - "dwp.uc.two_child_limit.households_3_children": { + "ons.population.female_30_34": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_3_children", + "name": "ons.population.female_30_34", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 297310.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_dca7734c17910c213e397741" + "resolved_value": 2463301.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f5b1d6c400b912b05c79c477" } ] }, - "dwp.uc.two_child_limit.children_in_3_children_households": { + "ons.population.female_35_39": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_in_3_children_households", + "name": "ons.population.female_35_39", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 891930.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_515b2aeb394a9a9a1fd2d195" + "resolved_value": 2472291.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f927cc9b3eab0494caf1479f" } ] }, - "dwp.uc.two_child_limit.households_4_children": { + "ons.population.female_40_44": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_4_children", + "name": "ons.population.female_40_44", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 117190.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_a78a141d4018bdd92678b497" + "resolved_value": 2333109.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_d9cdf746ffe5df2fd3d85279" } ] }, - "dwp.uc.two_child_limit.children_in_4_children_households": { + "ons.population.female_45_49": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_in_4_children_households", + "name": "ons.population.female_45_49", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 468760.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_adef094060710c5b354e7ac4" + "resolved_value": 2088285.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_b679e4770750b86af6b1756b" } ] }, - "dwp.uc.two_child_limit.households_5_children": { + "ons.population.female_50_54": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_5_children", + "name": "ons.population.female_50_54", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 37020.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_2c9cfcd7cc862c9c1dd57e4d" + "resolved_value": 2255231.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_65b8a4cc92c4565b00007877" + } + ] + }, + "ons.population.female_55_59": { + "status": "active", + "candidates": [ + { + "name": "ons.population.female_55_59", + "status": "active", + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, + "resolved_period": 2025, + "resolved_value": 2360202.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_ba87a7d66cb9f8694b952159" } ] }, - "dwp.uc.two_child_limit.children_in_5_children_households": { + "ons.population.female_5_9": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_in_5_children_households", + "name": "ons.population.female_5_9", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 185120.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_2134e60314c98faf54df2498" + "resolved_value": 1941658.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_bca9c38347810a944bbd08b3" } ] }, - "dwp.uc.two_child_limit.households_6_plus_children": { + "ons.population.female_60_64": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_6_plus_children", + "name": "ons.population.female_60_64", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 18260.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_e6302f9f933c14e97fc2fcae" + "resolved_value": 2193915.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_f3b1f78e4b752640465521f0" } ] }, - "dwp.uc.two_child_limit.children_in_6_plus_children_households": { + "ons.population.female_65_69": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_in_6_plus_children_households", + "name": "ons.population.female_65_69", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 119720.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_235cb4e779dd669dad2cd421" + "resolved_value": 1838574.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_dbeb583b16bcb530ee1296e1" } ] }, - "dwp.uc.two_child_limit.households_claimant_pip": { + "ons.population.female_70_74": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_claimant_pip", + "name": "ons.population.female_70_74", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 65280.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_55dd86462d71be247206b5a2" + "resolved_value": 1622996.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_b962c8b6d3d68808831aad6a" } ] }, - "dwp.uc.two_child_limit.children_claimant_pip": { + "ons.population.female_75_79": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_claimant_pip", + "name": "ons.population.female_75_79", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 235270.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_fe554fcdcb22a77d71c01537" + "resolved_value": 1551183.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_aa0a8a7ab2d3894db7a7d7aa" } ] }, - "dwp.uc.two_child_limit.households_disabled_child_element": { + "ons.population.female_80_84": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.households_disabled_child_element", + "name": "ons.population.female_80_84", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 129630.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_535ef3b4afd474ea14d16d27" + "resolved_value": 1024480.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_fcdc2e2f119de0b65769ef90" } ] }, - "dwp.uc.two_child_limit.children_disabled_child_element": { + "ons.population.female_85_89": { "status": "active", "candidates": [ { - "name": "dwp.uc.two_child_limit.children_disabled_child_element", + "name": "ons.population.female_85_89", "status": "active", - "matched_fact_count_overall": 1, - "matched_fact_count_at_or_before_period": 1, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 479460.0, - "resolved_fact_period": "2025-04", - "resolved_fact_key": "ledger_aggregate_fact_v2_ac642b7002518167b56e1537" + "resolved_value": 665267.0, + "resolved_fact_period": "2024", + "resolved_fact_key": "ledger_aggregate_fact_v2_c76df00751abbf64b5ab056b" } ] }, - "ons.population.uk_total": { + "ons.population.female_90_plus": { "status": "active", "candidates": [ { - "name": "ons.population.uk_total", + "name": "ons.population.female_90_plus", "status": "active", "matched_fact_count_overall": 2, "matched_fact_count_at_or_before_period": 2, "resolved_period": 2025, - "resolved_value": 69281437.0, + "resolved_value": 414716.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_6c212695ea75be0d2a635e9b" + "resolved_fact_key": "ledger_aggregate_fact_v2_009d5dd487f317483e9d7b3d" } ] }, - "ons.population.age_0_9_by_region": { + "ons.population.male_0_4": { "status": "active", "candidates": [ { - "name": "ons.population.age_0_9_by_region", + "name": "ons.population.male_0_4", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 7553013.0, + "resolved_value": 1829801.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b94a17afcae0f28216f5c756" + "resolved_fact_key": "ledger_aggregate_fact_v2_ccdfe5dde7b46840510e21d2" } ] }, - "ons.population.age_10_19_by_region": { + "ons.population.male_10_14": { "status": "active", "candidates": [ { - "name": "ons.population.age_10_19_by_region", + "name": "ons.population.male_10_14", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 8331437.0, + "resolved_value": 2152800.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ec5be4478e3e8a5ed9186e22" + "resolved_fact_key": "ledger_aggregate_fact_v2_86d603b352e77fd0c03ddaa8" } ] }, - "ons.population.age_20_29_by_region": { + "ons.population.male_15_19": { "status": "active", "candidates": [ { - "name": "ons.population.age_20_29_by_region", + "name": "ons.population.male_15_19", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 8715225.0, + "resolved_value": 2123750.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ed0cabd54beb345a04d236b1" + "resolved_fact_key": "ledger_aggregate_fact_v2_ecf390d4b25b71d12aae6bc7" } ] }, - "ons.population.age_30_39_by_region": { + "ons.population.male_20_24": { "status": "active", "candidates": [ { - "name": "ons.population.age_30_39_by_region", + "name": "ons.population.male_20_24", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 9572397.0, + "resolved_value": 2131646.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f3cd6e4fd7249a0ef2be0ffb" + "resolved_fact_key": "ledger_aggregate_fact_v2_edb961b3528b22769eece352" } ] }, - "ons.population.age_40_49_by_region": { + "ons.population.male_25_29": { "status": "active", "candidates": [ { - "name": "ons.population.age_40_49_by_region", + "name": "ons.population.male_25_29", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 8622506.0, + "resolved_value": 2257360.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f618aa084dbd211cdca7c544" + "resolved_fact_key": "ledger_aggregate_fact_v2_fd52338de8e1557cdd024c36" } ] }, - "ons.population.age_50_59_by_region": { + "ons.population.male_30_34": { "status": "active", "candidates": [ { - "name": "ons.population.age_50_59_by_region", + "name": "ons.population.male_30_34", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 9036816.0, + "resolved_value": 2333326.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f8fb3f14e335149ae47e882a" + "resolved_fact_key": "ledger_aggregate_fact_v2_b81f56fab808ad1d38d70f3d" } ] }, - "ons.population.age_60_69_by_region": { + "ons.population.male_35_39": { "status": "active", "candidates": [ { - "name": "ons.population.age_60_69_by_region", + "name": "ons.population.male_35_39", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 7861034.0, + "resolved_value": 2303479.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_fc9476cc3d2ecd4fb1fd9403" + "resolved_fact_key": "ledger_aggregate_fact_v2_be9bedc792e0d419ebaf5316" } ] }, - "ons.population.age_70_79_by_region": { + "ons.population.male_40_44": { "status": "active", "candidates": [ { - "name": "ons.population.age_70_79_by_region", + "name": "ons.population.male_40_44", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 5998605.0, + "resolved_value": 2196013.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ffd4d3a0d7b8b5e4667d53d8" + "resolved_fact_key": "ledger_aggregate_fact_v2_d41ff91bfe885debcc12d759" } ] }, - "ons.population.age_80_89_by_region": { + "ons.population.male_45_49": { "status": "active", "candidates": [ { - "name": "ons.population.age_80_89_by_region", + "name": "ons.population.male_45_49", "status": "active", - "matched_fact_count_overall": 20, - "matched_fact_count_at_or_before_period": 20, + "matched_fact_count_overall": 10, + "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2965168.0, + "resolved_value": 2005099.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f2dffa4221fe14e9138365b0" + "resolved_fact_key": "ledger_aggregate_fact_v2_fafcbae6e55f9ae20bc0050d" } ] }, - "ons.population.female_0_4": { + "ons.population.male_50_54": { "status": "active", "candidates": [ { - "name": "ons.population.female_0_4", + "name": "ons.population.male_50_54", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 1744355.0, + "resolved_value": 2164862.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_fb55d5f20f74ee39a1e8fcb4" + "resolved_fact_key": "ledger_aggregate_fact_v2_b8fe92cfb43b9a95f8a9f7ef" } ] }, - "ons.population.female_10_14": { + "ons.population.male_55_59": { "status": "active", "candidates": [ { - "name": "ons.population.female_10_14", + "name": "ons.population.male_55_59", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2052052.0, + "resolved_value": 2256521.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f9a457edc9491e5810c39f5f" + "resolved_fact_key": "ledger_aggregate_fact_v2_86b57e4ed1e5186f23dc4021" } ] }, - "ons.population.female_15_19": { + "ons.population.male_5_9": { "status": "active", "candidates": [ { - "name": "ons.population.female_15_19", + "name": "ons.population.male_5_9", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2002835.0, + "resolved_value": 2037199.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f0e2139b52c615925c9075dd" + "resolved_fact_key": "ledger_aggregate_fact_v2_e272f955c58535b8b9304759" } ] }, - "ons.population.female_20_24": { + "ons.population.male_60_64": { "status": "active", "candidates": [ { - "name": "ons.population.female_20_24", + "name": "ons.population.male_60_64", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2034609.0, + "resolved_value": 2094462.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b4e36c0dc0a924667be47bbc" + "resolved_fact_key": "ledger_aggregate_fact_v2_e60d33e33dcbc1ba2292edf5" } ] }, - "ons.population.female_25_29": { + "ons.population.male_65_69": { "status": "active", "candidates": [ { - "name": "ons.population.female_25_29", + "name": "ons.population.male_65_69", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2291610.0, + "resolved_value": 1734083.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_d9d6a711d0cbc4919a8643c0" + "resolved_fact_key": "ledger_aggregate_fact_v2_a4878efd0023575bded6b67a" } ] }, - "ons.population.female_30_34": { + "ons.population.male_70_74": { "status": "active", "candidates": [ { - "name": "ons.population.female_30_34", + "name": "ons.population.male_70_74", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2463301.0, + "resolved_value": 1473758.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f5b1d6c400b912b05c79c477" + "resolved_fact_key": "ledger_aggregate_fact_v2_d34aca91f9d1621ea96e72bc" } ] }, - "ons.population.female_35_39": { + "ons.population.male_75_79": { "status": "active", "candidates": [ { - "name": "ons.population.female_35_39", + "name": "ons.population.male_75_79", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2472291.0, + "resolved_value": 1350668.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f927cc9b3eab0494caf1479f" + "resolved_fact_key": "ledger_aggregate_fact_v2_f74158203e735d37a67c5409" } ] }, - "ons.population.female_40_44": { + "ons.population.male_80_84": { "status": "active", "candidates": [ { - "name": "ons.population.female_40_44", + "name": "ons.population.male_80_84", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2333109.0, + "resolved_value": 815910.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_d9cdf746ffe5df2fd3d85279" + "resolved_fact_key": "ledger_aggregate_fact_v2_60aa57af44ada9286df3d649" } ] }, - "ons.population.female_45_49": { + "ons.population.male_85_89": { "status": "active", "candidates": [ { - "name": "ons.population.female_45_49", + "name": "ons.population.male_85_89", "status": "active", "matched_fact_count_overall": 10, "matched_fact_count_at_or_before_period": 10, "resolved_period": 2025, - "resolved_value": 2088285.0, + "resolved_value": 459511.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b679e4770750b86af6b1756b" + "resolved_fact_key": "ledger_aggregate_fact_v2_bbfd4e781a7d1151855e4edb" } ] }, - "ons.population.female_50_54": { + "ons.population.male_90_plus": { "status": "active", "candidates": [ { - "name": "ons.population.female_50_54", + "name": "ons.population.male_90_plus", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 2, + "matched_fact_count_at_or_before_period": 2, "resolved_period": 2025, - "resolved_value": 2255231.0, + "resolved_value": 210520.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_65b8a4cc92c4565b00007877" + "resolved_fact_key": "ledger_aggregate_fact_v2_8ec6d2d034546c9693c4f6ed" } ] }, - "ons.population.female_55_59": { + "ons.population.scotland_children_under_16": { "status": "active", "candidates": [ { - "name": "ons.population.female_55_59", + "name": "ons.population.scotland_children_under_16", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 32, + "matched_fact_count_at_or_before_period": 32, "resolved_period": 2025, - "resolved_value": 2360202.0, + "resolved_value": 896833.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ba87a7d66cb9f8694b952159" + "resolved_fact_key": "ledger_aggregate_fact_v2_f9862176e9cdec891820dfa2" } ] }, - "ons.population.female_5_9": { + "ons.population.scotland_babies_under_1": { "status": "active", "candidates": [ { - "name": "ons.population.female_5_9", + "name": "ons.population.scotland_babies_under_1", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 2, + "matched_fact_count_at_or_before_period": 2, "resolved_period": 2025, - "resolved_value": 1941658.0, + "resolved_value": 46776.0, "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_bca9c38347810a944bbd08b3" + "resolved_fact_key": "ledger_aggregate_fact_v2_edd043df0081e63ad0876932" } ] }, - "ons.population.female_60_64": { + "ons.population.scotland_households_3plus_children": { + "status": "signed_excluded", + "candidates": [ + { + "name": "ons.population.scotland_households_3plus_children", + "status": "signed_excluded", + "matched_fact_count_overall": 552, + "matched_fact_count_at_or_before_period": 552, + "signed_rationale": "Signed out pending a Scotland household-composition fact: the current selector reaches person-level ONS mid-year population age rows, not households with three or more children. microcosm#736 tracks the missing declaration." + } + ] + }, + "ons.household_composition.lone_households_under_65": { "status": "active", "candidates": [ { - "name": "ons.population.female_60_64", + "name": "ons.household_composition.lone_households_under_65", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 2193915.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f3b1f78e4b752640465521f0" + "resolved_value": 4316000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_b2ee6bff131571b7dcd4c33c" } ] }, - "ons.population.female_65_69": { + "ons.household_composition.lone_households_over_65": { "status": "active", "candidates": [ { - "name": "ons.population.female_65_69", + "name": "ons.household_composition.lone_households_over_65", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 1838574.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_dbeb583b16bcb530ee1296e1" + "resolved_value": 4254000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_4178a72ada0e0b5b53fd62b3" } ] }, - "ons.population.female_70_74": { + "ons.household_composition.unrelated_adult_households": { "status": "active", "candidates": [ { - "name": "ons.population.female_70_74", + "name": "ons.household_composition.unrelated_adult_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 1622996.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b962c8b6d3d68808831aad6a" + "resolved_value": 813000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_191e954854307c61fca2d539" } ] }, - "ons.population.female_75_79": { + "ons.household_composition.couple_no_children_households": { "status": "active", "candidates": [ { - "name": "ons.population.female_75_79", + "name": "ons.household_composition.couple_no_children_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 1551183.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_aa0a8a7ab2d3894db7a7d7aa" + "resolved_value": 8119000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_861314257d00193080069624" } ] }, - "ons.population.female_80_84": { + "ons.household_composition.couple_under_3_children_households": { "status": "active", "candidates": [ { - "name": "ons.population.female_80_84", + "name": "ons.household_composition.couple_under_3_children_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 1024480.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_fcdc2e2f119de0b65769ef90" + "resolved_value": 5439000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_04ac3660df720d6f8effbdb2" } ] }, - "ons.population.female_85_89": { + "ons.household_composition.couple_3_plus_children_households": { "status": "active", "candidates": [ { - "name": "ons.population.female_85_89", + "name": "ons.household_composition.couple_3_plus_children_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 665267.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_c76df00751abbf64b5ab056b" + "resolved_value": 931000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_3432d322cadb6a40f0c3ebc8" } ] }, - "ons.population.female_90_plus": { + "ons.household_composition.couple_non_dependent_children_only_households": { "status": "active", "candidates": [ { - "name": "ons.population.female_90_plus", + "name": "ons.household_composition.couple_non_dependent_children_only_households", "status": "active", - "matched_fact_count_overall": 2, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 414716.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_009d5dd487f317483e9d7b3d" + "resolved_value": 1848000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_4d36f952f4dd650bcab7ba7f" } ] }, - "ons.population.male_0_4": { + "ons.household_composition.lone_parent_dependent_children_households": { "status": "active", "candidates": [ { - "name": "ons.population.male_0_4", + "name": "ons.household_composition.lone_parent_dependent_children_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 1829801.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ccdfe5dde7b46840510e21d2" + "resolved_value": 1835000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_e9746f29548db6f6047842cb" } ] }, - "ons.population.male_10_14": { + "ons.household_composition.lone_parent_non_dependent_children_households": { "status": "active", "candidates": [ { - "name": "ons.population.male_10_14", + "name": "ons.household_composition.lone_parent_non_dependent_children_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 2152800.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_86d603b352e77fd0c03ddaa8" + "resolved_value": 1204000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_9c7f117f90bc24f073f4e14f" } ] }, - "ons.population.male_15_19": { + "ons.household_composition.multi_family_households": { "status": "active", "candidates": [ { - "name": "ons.population.male_15_19", + "name": "ons.household_composition.multi_family_households", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 8, + "matched_fact_count_at_or_before_period": 8, "resolved_period": 2025, - "resolved_value": 2123750.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_ecf390d4b25b71d12aae6bc7" + "resolved_value": 244000.0, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_a0cd8874e5334242ce7b8ce0" } ] }, - "ons.population.male_20_24": { + "voa.council_tax_stock.band_a": { "status": "active", "candidates": [ { - "name": "ons.population.male_20_24", + "name": "voa.council_tax_stock.band_a@E12000001", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 667540.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3d64b9c8ee0b42435cba72a1" + }, + { + "name": "voa.council_tax_stock.band_a@E12000002", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 1386260.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ac00f27785b7e0806ac70198" + }, + { + "name": "voa.council_tax_stock.band_a@E12000003", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 1070830.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_fd338a9f2aabd878385b0c0b" + }, + { + "name": "voa.council_tax_stock.band_a@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 804340.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_def10973faec0fe9fa09aa42" + }, + { + "name": "voa.council_tax_stock.band_a@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 786010.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ecf0bb968b9ffa7647f930f8" + }, + { + "name": "voa.council_tax_stock.band_a@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 403180.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_cb8a20afb3bc7fba95459372" + }, + { + "name": "voa.council_tax_stock.band_a@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 144550.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_09f13c8a14b446d6f6c1c62c" + }, + { + "name": "voa.council_tax_stock.band_a@E12000008", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", + "resolved_period": 2025, + "resolved_value": 367610.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3291e358aff521b0dab57647" + }, + { + "name": "voa.council_tax_stock.band_a@E12000009", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 2131646.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_edb961b3528b22769eece352" + "resolved_value": 473020.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_c13e9668105786f6669a4acd" } ] }, - "ons.population.male_25_29": { + "scotgov.council_tax_stock.band_a": { "status": "active", "candidates": [ { - "name": "ons.population.male_25_29", + "name": "scotgov.council_tax_stock.band_a", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 2257360.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_fd52338de8e1557cdd024c36" + "resolved_value": 498707.0, + "resolved_fact_period": "2025-09", + "resolved_fact_key": "ledger_aggregate_fact_v2_d16c53fe6a1c8f4f5886b7e5" } ] }, - "ons.population.male_30_34": { + "voa.council_tax_stock.band_b": { "status": "active", "candidates": [ { - "name": "ons.population.male_30_34", + "name": "voa.council_tax_stock.band_b@E12000001", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 2333326.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b81f56fab808ad1d38d70f3d" - } - ] - }, - "ons.population.male_35_39": { - "status": "active", - "candidates": [ + "resolved_value": 206790.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_8955ef23164ec04f5006a161" + }, { - "name": "ons.population.male_35_39", + "name": "voa.council_tax_stock.band_b@E12000002", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 2303479.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_be9bedc792e0d419ebaf5316" - } - ] - }, - "ons.population.male_40_44": { - "status": "active", - "candidates": [ + "resolved_value": 705450.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_8b3524ef2243749e4cd0784f" + }, { - "name": "ons.population.male_40_44", + "name": "voa.council_tax_stock.band_b@E12000003", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 2196013.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_d41ff91bfe885debcc12d759" - } - ] - }, - "ons.population.male_45_49": { - "status": "active", - "candidates": [ + "resolved_value": 514190.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_b2eaeec372723931bade3b3b" + }, { - "name": "ons.population.male_45_49", + "name": "voa.council_tax_stock.band_b@E12000004", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 2005099.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_fafcbae6e55f9ae20bc0050d" - } - ] - }, - "ons.population.male_50_54": { - "status": "active", - "candidates": [ + "resolved_value": 505610.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_c5802e125aec9727ec678f30" + }, { - "name": "ons.population.male_50_54", + "name": "voa.council_tax_stock.band_b@E12000005", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 2164862.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_b8fe92cfb43b9a95f8a9f7ef" - } - ] - }, - "ons.population.male_55_59": { - "status": "active", - "candidates": [ + "resolved_value": 654140.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ddf4c74a73dfb8e143e899e2" + }, { - "name": "ons.population.male_55_59", + "name": "voa.council_tax_stock.band_b@E12000006", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 2256521.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_86b57e4ed1e5186f23dc4021" - } - ] - }, - "ons.population.male_5_9": { - "status": "active", - "candidates": [ + "resolved_value": 598950.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_48d6f0b6906977c144e84bd9" + }, { - "name": "ons.population.male_5_9", + "name": "voa.council_tax_stock.band_b@E12000007", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 2037199.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_e272f955c58535b8b9304759" - } - ] - }, - "ons.population.male_60_64": { - "status": "active", - "candidates": [ + "resolved_value": 499130.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_7053c8cbf35cb3022447b31c" + }, { - "name": "ons.population.male_60_64", + "name": "voa.council_tax_stock.band_b@E12000008", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 2094462.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_e60d33e33dcbc1ba2292edf5" - } - ] - }, - "ons.population.male_65_69": { - "status": "active", - "candidates": [ + "resolved_value": 687430.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_17295fc2e139d180287c2014" + }, { - "name": "ons.population.male_65_69", + "name": "voa.council_tax_stock.band_b@E12000009", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 1734083.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_a4878efd0023575bded6b67a" + "resolved_value": 644890.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_c14843f97601d160be0a9516" } ] }, - "ons.population.male_70_74": { + "scotgov.council_tax_stock.band_b": { "status": "active", "candidates": [ { - "name": "ons.population.male_70_74", + "name": "scotgov.council_tax_stock.band_b", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1473758.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_d34aca91f9d1621ea96e72bc" + "resolved_value": 583705.0, + "resolved_fact_period": "2025-09", + "resolved_fact_key": "ledger_aggregate_fact_v2_2f95ec98ae61f9898bd47ed9" } ] }, - "ons.population.male_75_79": { + "voa.council_tax_stock.band_c": { "status": "active", "candidates": [ { - "name": "ons.population.male_75_79", + "name": "voa.council_tax_stock.band_c@E12000001", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 1350668.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f74158203e735d37a67c5409" - } - ] - }, - "ons.population.male_80_84": { - "status": "active", - "candidates": [ + "resolved_value": 196180.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_b7a6d8a559ed5817e289ab89" + }, { - "name": "ons.population.male_80_84", + "name": "voa.council_tax_stock.band_c@E12000002", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 815910.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_60aa57af44ada9286df3d649" - } - ] - }, - "ons.population.male_85_89": { - "status": "active", - "candidates": [ + "resolved_value": 616070.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_afec3692548eb58848eb4f74" + }, { - "name": "ons.population.male_85_89", + "name": "voa.council_tax_stock.band_c@E12000003", "status": "active", - "matched_fact_count_overall": 10, - "matched_fact_count_at_or_before_period": 10, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 459511.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_bbfd4e781a7d1151855e4edb" - } - ] - }, - "ons.population.male_90_plus": { - "status": "active", - "candidates": [ + "resolved_value": 432290.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_22cfbecd7bd215e7751e349d" + }, + { + "name": "voa.council_tax_stock.band_c@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 403840.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_978dcbbd8663990bdcfb461d" + }, + { + "name": "voa.council_tax_stock.band_c@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 526260.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_dce3b1093a753675fa284f80" + }, + { + "name": "voa.council_tax_stock.band_c@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 739570.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_6c659cd734444cfdd1d651c6" + }, + { + "name": "voa.council_tax_stock.band_c@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 1040280.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_fa46132ed0107a360c3a549d" + }, + { + "name": "voa.council_tax_stock.band_c@E12000008", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", + "resolved_period": 2025, + "resolved_value": 1075940.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_bf4a77b8455bb6aea85b760e" + }, { - "name": "ons.population.male_90_plus", + "name": "voa.council_tax_stock.band_c@E12000009", "status": "active", - "matched_fact_count_overall": 2, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 210520.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_8ec6d2d034546c9693c4f6ed" + "resolved_value": 624030.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_e87540eb97f29cacf120fd3e" } ] }, - "ons.population.scotland_children_under_16": { + "scotgov.council_tax_stock.band_c": { "status": "active", "candidates": [ { - "name": "ons.population.scotland_children_under_16", + "name": "scotgov.council_tax_stock.band_c", "status": "active", - "matched_fact_count_overall": 32, - "matched_fact_count_at_or_before_period": 32, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 896833.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_f9862176e9cdec891820dfa2" + "resolved_value": 426388.0, + "resolved_fact_period": "2025-09", + "resolved_fact_key": "ledger_aggregate_fact_v2_c9781708df55dc5d197e6623" } ] }, - "ons.population.scotland_babies_under_1": { + "voa.council_tax_stock.band_d": { "status": "active", "candidates": [ { - "name": "ons.population.scotland_babies_under_1", + "name": "voa.council_tax_stock.band_d@E12000001", "status": "active", - "matched_fact_count_overall": 2, - "matched_fact_count_at_or_before_period": 2, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 46776.0, - "resolved_fact_period": "2024", - "resolved_fact_key": "ledger_aggregate_fact_v2_edd043df0081e63ad0876932" - } - ] - }, - "ons.population.scotland_households_3plus_children": { - "status": "signed_excluded", - "candidates": [ + "resolved_value": 113460.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_0b5fcf256d38909389e3b57a" + }, { - "name": "ons.population.scotland_households_3plus_children", - "status": "signed_excluded", - "matched_fact_count_overall": 552, - "matched_fact_count_at_or_before_period": 552, - "signed_rationale": "Signed out pending a Scotland household-composition fact: the current selector reaches person-level ONS mid-year population age rows, not households with three or more children. microcosm#736 tracks the missing declaration." - } - ] - }, - "ons.household_composition.lone_households_under_65": { - "status": "active", - "candidates": [ + "name": "voa.council_tax_stock.band_d@E12000002", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 363970.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_84fe918f408f544492aa90a5" + }, { - "name": "ons.household_composition.lone_households_under_65", + "name": "voa.council_tax_stock.band_d@E12000003", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 4316000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_b2ee6bff131571b7dcd4c33c" - } - ] - }, - "ons.household_composition.lone_households_over_65": { - "status": "active", - "candidates": [ + "resolved_value": 249530.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_f5aa30370c6bac96d28ec17c" + }, { - "name": "ons.household_composition.lone_households_over_65", + "name": "voa.council_tax_stock.band_d@E12000004", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 4254000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_4178a72ada0e0b5b53fd62b3" - } - ] - }, - "ons.household_composition.unrelated_adult_households": { - "status": "active", - "candidates": [ + "resolved_value": 247850.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_949ba52ffe15cdfd798ce808" + }, { - "name": "ons.household_composition.unrelated_adult_households", + "name": "voa.council_tax_stock.band_d@E12000005", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 813000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_191e954854307c61fca2d539" - } - ] - }, - "ons.household_composition.couple_no_children_households": { - "status": "active", - "candidates": [ + "resolved_value": 302500.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ef0247f963abaffbebf59b6c" + }, { - "name": "ons.household_composition.couple_no_children_households", + "name": "voa.council_tax_stock.band_d@E12000006", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 8119000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_861314257d00193080069624" - } - ] - }, - "ons.household_composition.couple_under_3_children_households": { - "status": "active", - "candidates": [ + "resolved_value": 506540.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_b02f55ab569e67c1f7145d29" + }, { - "name": "ons.household_composition.couple_under_3_children_households", + "name": "voa.council_tax_stock.band_d@E12000007", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 5439000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_04ac3660df720d6f8effbdb2" - } - ] - }, - "ons.household_composition.couple_3_plus_children_households": { - "status": "active", - "candidates": [ + "resolved_value": 975750.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_88a75ec79293da0f82a9d3af" + }, { - "name": "ons.household_composition.couple_3_plus_children_households", + "name": "voa.council_tax_stock.band_d@E12000008", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 931000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_3432d322cadb6a40f0c3ebc8" - } - ] - }, - "ons.household_composition.couple_non_dependent_children_only_households": { - "status": "active", - "candidates": [ + "resolved_value": 843560.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_58473f911762c6ae3902d2a8" + }, { - "name": "ons.household_composition.couple_non_dependent_children_only_households", + "name": "voa.council_tax_stock.band_d@E12000009", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 1848000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_4d36f952f4dd650bcab7ba7f" + "resolved_value": 432070.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3bcfafa6b488ed08f9c2e9f8" } ] }, - "ons.household_composition.lone_parent_dependent_children_households": { + "scotgov.council_tax_stock.band_d": { "status": "active", "candidates": [ { - "name": "ons.household_composition.lone_parent_dependent_children_households", + "name": "scotgov.council_tax_stock.band_d", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 1835000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_e9746f29548db6f6047842cb" + "resolved_value": 369621.0, + "resolved_fact_period": "2025-09", + "resolved_fact_key": "ledger_aggregate_fact_v2_ae1fe03809a505b820479598" } ] }, - "ons.household_composition.lone_parent_non_dependent_children_households": { + "voa.council_tax_stock.band_e": { "status": "active", "candidates": [ { - "name": "ons.household_composition.lone_parent_non_dependent_children_households", + "name": "voa.council_tax_stock.band_e@E12000001", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 1204000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_9c7f117f90bc24f073f4e14f" - } - ] - }, - "ons.household_composition.multi_family_households": { - "status": "active", - "candidates": [ + "resolved_value": 61090.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_1e99bd497e2895709dc0f9e1" + }, { - "name": "ons.household_composition.multi_family_households", + "name": "voa.council_tax_stock.band_e@E12000002", "status": "active", - "matched_fact_count_overall": 8, - "matched_fact_count_at_or_before_period": 8, + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 244000.0, - "resolved_fact_period": "2025", - "resolved_fact_key": "ledger_aggregate_fact_v2_a0cd8874e5334242ce7b8ce0" - } - ] - }, - "voa.council_tax_stock.band_a": { - "status": "active", - "candidates": [ + "resolved_value": 216990.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_277ec35c395ecb02939ee720" + }, + { + "name": "voa.council_tax_stock.band_e@E12000003", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 158600.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_debd66d3583f9f1fecd696e2" + }, + { + "name": "voa.council_tax_stock.band_e@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 154970.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_4dce9fd786ef519556404c50" + }, + { + "name": "voa.council_tax_stock.band_e@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 193700.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_714cfafa915641757589b604" + }, + { + "name": "voa.council_tax_stock.band_e@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 313840.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_674cf0835be136cab85f54b8" + }, + { + "name": "voa.council_tax_stock.band_e@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 585130.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_15f64c7393430a54f6dfd9a9" + }, { - "name": "voa.council_tax_stock.band_a", + "name": "voa.council_tax_stock.band_e@E12000008", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 6103320.0, + "resolved_value": 551730.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_401f12d7af649e0fd5779ac4" + "resolved_fact_key": "ledger_aggregate_fact_v2_c87704523b66f69de2fd8c5b" + }, + { + "name": "voa.council_tax_stock.band_e@E12000009", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", + "resolved_period": 2025, + "resolved_value": 292090.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_d0ff0b4ce381a7faad755d61" } ] }, - "scotgov.council_tax_stock.band_a": { + "scotgov.council_tax_stock.band_e": { "status": "active", "candidates": [ { - "name": "scotgov.council_tax_stock.band_a", + "name": "scotgov.council_tax_stock.band_e", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, "resolved_period": 2025, - "resolved_value": 498707.0, + "resolved_value": 366881.0, "resolved_fact_period": "2025-09", - "resolved_fact_key": "ledger_aggregate_fact_v2_d16c53fe6a1c8f4f5886b7e5" + "resolved_fact_key": "ledger_aggregate_fact_v2_e83153e0de40fb74471c805f" } ] }, - "voa.council_tax_stock.band_b": { + "voa.council_tax_stock.band_f": { "status": "active", "candidates": [ { - "name": "voa.council_tax_stock.band_b", + "name": "voa.council_tax_stock.band_f@E12000001", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", "resolved_period": 2025, - "resolved_value": 5016580.0, + "resolved_value": 26600.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_56854712efa30950d408790e" - } - ] - }, - "scotgov.council_tax_stock.band_b": { - "status": "active", - "candidates": [ + "resolved_fact_key": "ledger_aggregate_fact_v2_212b21ea2b32d2e3d2bd521a" + }, { - "name": "scotgov.council_tax_stock.band_b", + "name": "voa.council_tax_stock.band_f@E12000002", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", "resolved_period": 2025, - "resolved_value": 583705.0, - "resolved_fact_period": "2025-09", - "resolved_fact_key": "ledger_aggregate_fact_v2_2f95ec98ae61f9898bd47ed9" - } - ] - }, - "voa.council_tax_stock.band_c": { - "status": "active", - "candidates": [ + "resolved_value": 104330.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_5642442033f8077a90875803" + }, { - "name": "voa.council_tax_stock.band_c", + "name": "voa.council_tax_stock.band_f@E12000003", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", "resolved_period": 2025, - "resolved_value": 5654450.0, + "resolved_value": 75690.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_fc068d151c19fb214f6df036" - } - ] - }, - "scotgov.council_tax_stock.band_c": { - "status": "active", - "candidates": [ + "resolved_fact_key": "ledger_aggregate_fact_v2_6dacbd8557b665d6ee0740ca" + }, { - "name": "scotgov.council_tax_stock.band_c", + "name": "voa.council_tax_stock.band_f@E12000004", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", "resolved_period": 2025, - "resolved_value": 426388.0, - "resolved_fact_period": "2025-09", - "resolved_fact_key": "ledger_aggregate_fact_v2_c9781708df55dc5d197e6623" - } - ] - }, - "voa.council_tax_stock.band_d": { - "status": "active", - "candidates": [ + "resolved_value": 73920.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_712e802adea1d16382695b03" + }, { - "name": "voa.council_tax_stock.band_d", + "name": "voa.council_tax_stock.band_f@E12000005", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", "resolved_period": 2025, - "resolved_value": 4035220.0, + "resolved_value": 105630.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_0eb041a728d3c583d0687fbd" - } - ] - }, - "scotgov.council_tax_stock.band_d": { - "status": "active", - "candidates": [ + "resolved_fact_key": "ledger_aggregate_fact_v2_6749abdcd4e56c1884091b82" + }, { - "name": "scotgov.council_tax_stock.band_d", + "name": "voa.council_tax_stock.band_f@E12000006", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", "resolved_period": 2025, - "resolved_value": 369621.0, - "resolved_fact_period": "2025-09", - "resolved_fact_key": "ledger_aggregate_fact_v2_ae1fe03809a505b820479598" - } - ] - }, - "voa.council_tax_stock.band_e": { - "status": "active", - "candidates": [ + "resolved_value": 172960.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_8d6432f10bfb6f4b29d4cb36" + }, { - "name": "voa.council_tax_stock.band_e", + "name": "voa.council_tax_stock.band_f@E12000007", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", "resolved_period": 2025, - "resolved_value": 2528140.0, + "resolved_value": 298920.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_b0fdb6a16964ec71bf031981" - } - ] - }, - "scotgov.council_tax_stock.band_e": { - "status": "active", - "candidates": [ + "resolved_fact_key": "ledger_aggregate_fact_v2_ab0f7a8926ecd169382ff1dc" + }, { - "name": "scotgov.council_tax_stock.band_e", + "name": "voa.council_tax_stock.band_f@E12000008", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", "resolved_period": 2025, - "resolved_value": 366881.0, - "resolved_fact_period": "2025-09", - "resolved_fact_key": "ledger_aggregate_fact_v2_e83153e0de40fb74471c805f" - } - ] - }, - "voa.council_tax_stock.band_f": { - "status": "active", - "candidates": [ + "resolved_value": 337260.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_eb725155aaa609877ae1e7a9" + }, { - "name": "voa.council_tax_stock.band_f", + "name": "voa.council_tax_stock.band_f@E12000009", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 1343220.0, + "resolved_value": 147920.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_a99d214f6f55e7f54a423a71" + "resolved_fact_key": "ledger_aggregate_fact_v2_47c47b1375052fc7c190e314" } ] }, @@ -7438,14 +10942,112 @@ "status": "active", "candidates": [ { - "name": "voa.council_tax_stock.band_g", + "name": "voa.council_tax_stock.band_g@E12000001", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 14600.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_98a20120bac3eb106ff70d1e" + }, + { + "name": "voa.council_tax_stock.band_g@E12000002", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 65750.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3f82b93e0aebf97b2b0a550b" + }, + { + "name": "voa.council_tax_stock.band_g@E12000003", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 42180.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_e522a6efe40eb9186b7e7557" + }, + { + "name": "voa.council_tax_stock.band_g@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 39400.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_2a765502b5ba10e73f89a515" + }, + { + "name": "voa.council_tax_stock.band_g@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 62780.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ea2217959cff56b7d2e6bba3" + }, + { + "name": "voa.council_tax_stock.band_g@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 113720.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_c63aeb7ddeced2c169b053aa" + }, + { + "name": "voa.council_tax_stock.band_g@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 225170.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_477dda108c5db0ff25eb19e9" + }, + { + "name": "voa.council_tax_stock.band_g@E12000008", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", + "resolved_period": 2025, + "resolved_value": 265610.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_60a509a12483e481e3c25d5f" + }, + { + "name": "voa.council_tax_stock.band_g@E12000009", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 911160.0, + "resolved_value": 81960.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_5d2bfddb2effd2adc195fcb5" + "resolved_fact_key": "ledger_aggregate_fact_v2_2479fbb4c844d88ebb159241" } ] }, @@ -7468,14 +11070,112 @@ "status": "active", "candidates": [ { - "name": "voa.council_tax_stock.band_h", + "name": "voa.council_tax_stock.band_h@E12000001", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 1570.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3dc74673765985ec461506ca" + }, + { + "name": "voa.council_tax_stock.band_h@E12000002", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 7350.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_e577d7bbb3752de28cdbd97b" + }, + { + "name": "voa.council_tax_stock.band_h@E12000003", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 3770.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_ef2cc35f77ed4598a04c5526" + }, + { + "name": "voa.council_tax_stock.band_h@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 3480.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_0a7428361eb1fdc474980d92" + }, + { + "name": "voa.council_tax_stock.band_h@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 6170.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_fbba262d92b5f637e78ab6c0" + }, + { + "name": "voa.council_tax_stock.band_h@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 14830.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_59fff7b3db7c983cfc79a50b" + }, + { + "name": "voa.council_tax_stock.band_h@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 68500.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_b5b4366ff7c8bb489bf639a0" + }, + { + "name": "voa.council_tax_stock.band_h@E12000008", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", + "resolved_period": 2025, + "resolved_value": 40390.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_1cc7f916cf9be218cf410040" + }, + { + "name": "voa.council_tax_stock.band_h@E12000009", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 154470.0, + "resolved_value": 8430.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_67f3a58d14df489820a9f9ab" + "resolved_fact_key": "ledger_aggregate_fact_v2_56df761829398cbf0863dbf5" } ] }, @@ -7498,14 +11198,112 @@ "status": "active", "candidates": [ { - "name": "voa.council_tax_stock.total", + "name": "voa.council_tax_stock.total@E12000001", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000001", + "resolved_period": 2025, + "resolved_value": 1287830.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_d264f11c76d5ad9588b7ebe4" + }, + { + "name": "voa.council_tax_stock.total@E12000002", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000002", + "resolved_period": 2025, + "resolved_value": 3466140.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_4c0e124f549e52b53393a53d" + }, + { + "name": "voa.council_tax_stock.total@E12000003", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000003", + "resolved_period": 2025, + "resolved_value": 2547080.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_a853f79f7409dbf0b2e2a85b" + }, + { + "name": "voa.council_tax_stock.total@E12000004", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000004", + "resolved_period": 2025, + "resolved_value": 2233400.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_2c4835df758e5304e0fd8e5f" + }, + { + "name": "voa.council_tax_stock.total@E12000005", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000005", + "resolved_period": 2025, + "resolved_value": 2637190.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_4e695a253e47694a97651a10" + }, + { + "name": "voa.council_tax_stock.total@E12000006", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000006", + "resolved_period": 2025, + "resolved_value": 2863600.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_77119abfc2f7609862d34ade" + }, + { + "name": "voa.council_tax_stock.total@E12000007", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000007", + "resolved_period": 2025, + "resolved_value": 3837430.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_9dbee719ce6dcd05600cd217" + }, + { + "name": "voa.council_tax_stock.total@E12000008", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000008", + "resolved_period": 2025, + "resolved_value": 4169520.0, + "resolved_fact_period": "2025-03", + "resolved_fact_key": "ledger_aggregate_fact_v2_3b4504e4d7881843f594af0a" + }, + { + "name": "voa.council_tax_stock.total@E12000009", "status": "active", "matched_fact_count_overall": 1, "matched_fact_count_at_or_before_period": 1, + "geography_level": "region", + "geography_id": "E12000009", "resolved_period": 2025, - "resolved_value": 25746570.0, + "resolved_value": 2704390.0, "resolved_fact_period": "2025-03", - "resolved_fact_key": "ledger_aggregate_fact_v2_a9db0e47afe1d9b6eca42b97" + "resolved_fact_key": "ledger_aggregate_fact_v2_424f337c329feb3a9d11c5f0" } ] }, @@ -8198,8 +11996,14 @@ { "family": "council_tax_stock", "status": "active_declared_rows", - "active_reference_count": 18, - "signed_rationale": "VOA (England and Wales) and Scottish Government CTAXBASE (Scotland) council-tax stock bands are declared as nine explicit target rows each, including total, and each resolves with its country-level geography and band pin." + "active_reference_count": 90, + "signed_rationale": "VOA (England) and Scottish Government CTAXBASE (Scotland) council-tax stock bands are declared as nine explicit target rows each, including total. The Scottish rows resolve with their country-level geography and band pin; the English rows fan out over the nine English regions of the region tier (microcosm#905), each cell resolving VOA's region-stamped band count with the same band pin." + }, + { + "family": "ons_population", + "status": "active_region_tier_fanout", + "active_reference_count": 108, + "signed_rationale": "The nine ONS population-by-age-band targets fan out over the twelve-area region tier (nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level), one reference per area, each scoped on the spine by a household-region predicate and placed at the region grain of the cross-grain rule (microcosm#905). The former single UK-wide row per band is retired: the tier sums to it within the same publication." } ], "signed_exclusion_rationales": [ diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_references.json b/packages/microcosm-build/src/microcosm/build/uk/target_references.json index ed8262d932..5ee020aa19 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_references.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_references.json @@ -8612,7 +8612,7 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_0_9_by_region", + "name": "ons.population.age_0_9_by_region@E12000001", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", @@ -8631,19 +8631,23 @@ 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000001", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/0_9", + "measure": "ons.population.age_0_9_by_region@E12000001", "family": "ons_population", "period": 2025, "metadata": { "contract_target_id": "ons.population.age_0_9_by_region", - "measure_kind": "prepared_column" + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8651,38 +8655,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_10_19_by_region", + "name": "ons.population.age_0_9_by_region@E12000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000002", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/10_19", + "measure": "ons.population.age_0_9_by_region@E12000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_10_19_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8690,38 +8698,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_20_29_by_region", + "name": "ons.population.age_0_9_by_region@E12000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000003", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/20_29", + "measure": "ons.population.age_0_9_by_region@E12000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_20_29_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8729,38 +8741,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_30_39_by_region", + "name": "ons.population.age_0_9_by_region@E12000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000004", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/30_39", + "measure": "ons.population.age_0_9_by_region@E12000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_30_39_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8768,38 +8784,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_40_49_by_region", + "name": "ons.population.age_0_9_by_region@E12000005", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000005", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/40_49", + "measure": "ons.population.age_0_9_by_region@E12000005", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_40_49_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8807,38 +8827,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_50_59_by_region", + "name": "ons.population.age_0_9_by_region@E12000006", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000006", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/50_59", + "measure": "ons.population.age_0_9_by_region@E12000006", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_50_59_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8846,38 +8870,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_60_69_by_region", + "name": "ons.population.age_0_9_by_region@E12000007", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000007", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/60_69", + "measure": "ons.population.age_0_9_by_region@E12000007", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_60_69_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8885,38 +8913,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_70_79_by_region", + "name": "ons.population.age_0_9_by_region@E12000008", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000008", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/70_79", + "measure": "ons.population.age_0_9_by_region@E12000008", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_70_79_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8924,38 +8956,42 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.age_80_89_by_region", + "name": "ons.population.age_0_9_by_region@E12000009", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000009", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/regional_age/80_89", + "measure": "ons.population.age_0_9_by_region@E12000009", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.age_80_89_by_region", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", "expected_member_count": 10, @@ -8963,838 +8999,1007 @@ "uprating_to_period": 2025 }, { - "name": "ons.population.female_0_4", + "name": "ons.population.age_0_9_by_region@W92000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ 0, 1, 2, 3, - 4 + 4, + 5, + 6, + 7, + 8, + 9 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "W92000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_0_4", + "measure": "ons.population.age_0_9_by_region@W92000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_0_4", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_10_14", + "name": "ons.population.age_0_9_by_region@S92000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 10, - 11, - 12, - 13, - 14 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "S92000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_10_14", + "measure": "ons.population.age_0_9_by_region@S92000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_10_14", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_15_19", + "name": "ons.population.age_0_9_by_region@N92000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 15, - 16, - 17, - 18, - 19 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "N92000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_15_19", + "measure": "ons.population.age_0_9_by_region@N92000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_15_19", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_0_9_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_20_24", + "name": "ons.population.age_10_19_by_region@E12000001", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 20, - 21, - 22, - 23, - 24 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000001", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_20_24", + "measure": "ons.population.age_10_19_by_region@E12000001", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_20_24", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_25_29", + "name": "ons.population.age_10_19_by_region@E12000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 25, - 26, - 27, - 28, - 29 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_25_29", + "measure": "ons.population.age_10_19_by_region@E12000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_25_29", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_30_34", + "name": "ons.population.age_10_19_by_region@E12000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 30, - 31, - 32, - 33, - 34 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_30_34", + "measure": "ons.population.age_10_19_by_region@E12000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_30_34", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_35_39", + "name": "ons.population.age_10_19_by_region@E12000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 35, - 36, - 37, - 38, - 39 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_35_39", + "measure": "ons.population.age_10_19_by_region@E12000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_35_39", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_40_44", + "name": "ons.population.age_10_19_by_region@E12000005", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 40, - 41, - 42, - 43, - 44 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000005", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_40_44", + "measure": "ons.population.age_10_19_by_region@E12000005", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_40_44", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_45_49", + "name": "ons.population.age_10_19_by_region@E12000006", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 45, - 46, - 47, - 48, - 49 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000006", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_45_49", + "measure": "ons.population.age_10_19_by_region@E12000006", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_45_49", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_50_54", + "name": "ons.population.age_10_19_by_region@E12000007", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 50, - 51, - 52, - 53, - 54 - ] - }, - "geography_level": "country", - "geography_id": "K02000001", - "dimensions": [ - "age", - "sex" - ] + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ] + }, + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] }, "entity": "person", - "measure": "ons/female_50_54", + "measure": "ons.population.age_10_19_by_region@E12000007", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_50_54", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_55_59", + "name": "ons.population.age_10_19_by_region@E12000008", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 55, - 56, - 57, - 58, - 59 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000008", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_55_59", + "measure": "ons.population.age_10_19_by_region@E12000008", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_55_59", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_5_9", + "name": "ons.population.age_10_19_by_region@E12000009", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 5, - 6, - 7, - 8, - 9 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000009", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_5_9", + "measure": "ons.population.age_10_19_by_region@E12000009", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_5_9", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_60_64", + "name": "ons.population.age_10_19_by_region@W92000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 60, - 61, - 62, - 63, - 64 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "W92000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_60_64", + "measure": "ons.population.age_10_19_by_region@W92000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_60_64", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_65_69", + "name": "ons.population.age_10_19_by_region@S92000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 65, - 66, - 67, - 68, - 69 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "S92000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_65_69", + "measure": "ons.population.age_10_19_by_region@S92000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_65_69", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_70_74", + "name": "ons.population.age_10_19_by_region@N92000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 70, - 71, - 72, - 73, - 74 + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "N92000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_70_74", + "measure": "ons.population.age_10_19_by_region@N92000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_70_74", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_10_19_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_75_79", + "name": "ons.population.age_20_29_by_region@E12000001", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 75, - 76, - 77, - 78, - 79 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000001", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_75_79", + "measure": "ons.population.age_20_29_by_region@E12000001", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_75_79", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_80_84", + "name": "ons.population.age_20_29_by_region@E12000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 80, - 81, - 82, - 83, - 84 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_80_84", + "measure": "ons.population.age_20_29_by_region@E12000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_80_84", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_85_89", + "name": "ons.population.age_20_29_by_region@E12000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - 85, - 86, - 87, - 88, - 89 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_85_89", + "measure": "ons.population.age_20_29_by_region@E12000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_85_89", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.female_90_plus", + "name": "ons.population.age_20_29_by_region@E12000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "female", "age": [ - "90_plus" + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/female_90_plus", + "measure": "ons.population.age_20_29_by_region@E12000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.female_90_plus", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 1, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_0_4", + "name": "ons.population.age_20_29_by_region@E12000005", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 0, - 1, - 2, - 3, - 4 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000005", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_0_4", + "measure": "ons.population.age_20_29_by_region@E12000005", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_0_4", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_10_14", + "name": "ons.population.age_20_29_by_region@E12000006", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 10, - 11, - 12, - 13, - 14 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000006", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_10_14", + "measure": "ons.population.age_20_29_by_region@E12000006", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_10_14", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_15_19", + "name": "ons.population.age_20_29_by_region@E12000007", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 15, - 16, - 17, - 18, - 19 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000007", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_15_19", + "measure": "ons.population.age_20_29_by_region@E12000007", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_15_19", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_20_24", + "name": "ons.population.age_20_29_by_region@E12000008", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ 20, 21, 22, 23, - 24 + 24, + 25, + 26, + 27, + 28, + 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000008", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_20_24", + "measure": "ons.population.age_20_29_by_region@E12000008", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_20_24", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_25_29", + "name": "ons.population.age_20_29_by_region@E12000009", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ + 20, + 21, + 22, + 23, + 24, 25, 26, 27, @@ -9802,1130 +10007,6910 @@ 29 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000009", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_25_29", + "measure": "ons.population.age_20_29_by_region@E12000009", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_25_29", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_30_34", + "name": "ons.population.age_20_29_by_region@W92000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 30, - 31, - 32, - 33, - 34 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "W92000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_30_34", + "measure": "ons.population.age_20_29_by_region@W92000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_30_34", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_35_39", + "name": "ons.population.age_20_29_by_region@S92000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 35, - 36, - 37, - 38, - 39 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "S92000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_35_39", + "measure": "ons.population.age_20_29_by_region@S92000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_35_39", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_40_44", + "name": "ons.population.age_20_29_by_region@N92000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 40, - 41, - 42, - 43, - 44 + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "N92000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_40_44", + "measure": "ons.population.age_20_29_by_region@N92000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_40_44", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_20_29_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_45_49", + "name": "ons.population.age_30_39_by_region@E12000001", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 45, - 46, - 47, - 48, - 49 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000001", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_45_49", + "measure": "ons.population.age_30_39_by_region@E12000001", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_45_49", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_50_54", + "name": "ons.population.age_30_39_by_region@E12000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 50, - 51, - 52, - 53, - 54 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000002", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_50_54", + "measure": "ons.population.age_30_39_by_region@E12000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_50_54", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_55_59", + "name": "ons.population.age_30_39_by_region@E12000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 55, - 56, - 57, - 58, - 59 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_55_59", + "measure": "ons.population.age_30_39_by_region@E12000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_55_59", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_5_9", + "name": "ons.population.age_30_39_by_region@E12000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 5, - 6, - 7, - 8, - 9 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_5_9", + "measure": "ons.population.age_30_39_by_region@E12000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_5_9", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_60_64", + "name": "ons.population.age_30_39_by_region@E12000005", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 60, - 61, - 62, - 63, - 64 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000005", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_60_64", + "measure": "ons.population.age_30_39_by_region@E12000005", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_60_64", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_65_69", + "name": "ons.population.age_30_39_by_region@E12000006", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 65, - 66, - 67, - 68, - 69 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000006", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_65_69", + "measure": "ons.population.age_30_39_by_region@E12000006", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_65_69", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_70_74", + "name": "ons.population.age_30_39_by_region@E12000007", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 70, - 71, - 72, - 73, - 74 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000007", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_70_74", + "measure": "ons.population.age_30_39_by_region@E12000007", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_70_74", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_75_79", + "name": "ons.population.age_30_39_by_region@E12000008", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 75, - 76, - 77, - 78, - 79 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000008", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_75_79", + "measure": "ons.population.age_30_39_by_region@E12000008", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_75_79", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_80_84", + "name": "ons.population.age_30_39_by_region@E12000009", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 80, - 81, - 82, - 83, - 84 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, - "geography_level": "country", - "geography_id": "K02000001", + "geography_level": "region", + "geography_id": "E12000009", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_80_84", + "measure": "ons.population.age_30_39_by_region@E12000009", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_80_84", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_85_89", + "name": "ons.population.age_30_39_by_region@W92000004", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - 85, - 86, - 87, - 88, - 89 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "W92000004", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_85_89", + "measure": "ons.population.age_30_39_by_region@W92000004", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_85_89", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 5, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.male_90_plus", + "name": "ons.population.age_30_39_by_region@S92000003", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { - "sex": "male", "age": [ - "90_plus" + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, "geography_level": "country", - "geography_id": "K02000001", + "geography_id": "S92000003", "dimensions": [ - "age", - "sex" + "age" ] }, "entity": "person", - "measure": "ons/male_90_plus", + "measure": "ons.population.age_30_39_by_region@S92000003", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.male_90_plus", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 1, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.scotland_children_under_16", + "name": "ons.population.age_30_39_by_region@N92000002", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 ] }, "geography_level": "country", - "geography_id": "S92000003", + "geography_id": "N92000002", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/scotland_children_under_16", + "measure": "ons.population.age_30_39_by_region@N92000002", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.scotland_children_under_16", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_30_39_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 16, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.population.scotland_babies_under_1", + "name": "ons.population.age_40_49_by_region@E12000001", "ledger_selector": { "source_name": "ons", "source_concept": "ons.mid_year_population_estimate", "groupby_dimension": "age", "dimension_values": { "age": [ - 0 + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 ] }, - "geography_level": "country", - "geography_id": "S92000003", + "geography_level": "region", + "geography_id": "E12000001", "dimensions": [ "age" ] }, "entity": "person", - "measure": "ons/scotland_babies_under_1", + "measure": "ons.population.age_40_49_by_region@E12000001", "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.population.scotland_babies_under_1", - "measure_kind": "prepared_column" + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "value_operation": "sum", - "expected_member_count": 1, + "expected_member_count": 10, "uprating_from_period": "2024", "uprating_to_period": 2025 }, { - "name": "ons.household_composition.lone_households_under_65", + "name": "ons.population.age_40_49_by_region@E12000002", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "lone_households_under_65" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000002", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/lone_households_under_65", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000002", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.lone_households_under_65", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.lone_households_over_65", + "name": "ons.population.age_40_49_by_region@E12000003", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "lone_households_over_65" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000003", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/lone_households_over_65", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000003", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.lone_households_over_65", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.unrelated_adult_households", + "name": "ons.population.age_40_49_by_region@E12000004", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "unrelated_adult_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000004", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/unrelated_adult_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000004", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.unrelated_adult_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.couple_no_children_households", + "name": "ons.population.age_40_49_by_region@E12000005", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "couple_no_children_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000005", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/couple_no_children_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000005", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.couple_no_children_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.couple_under_3_children_households", + "name": "ons.population.age_40_49_by_region@E12000006", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "couple_under_3_children_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000006", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/couple_under_3_children_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000006", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.couple_under_3_children_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.couple_3_plus_children_households", + "name": "ons.population.age_40_49_by_region@E12000007", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "couple_3_plus_children_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/couple_3_plus_children_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000007", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.couple_3_plus_children_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.couple_non_dependent_children_only_households", + "name": "ons.population.age_40_49_by_region@E12000008", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "couple_non_dependent_children_only_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, - "geography_level": "country", - "geography_id": "K02000001" + "geography_level": "region", + "geography_id": "E12000008", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/couple_non_dependent_children_only_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000008", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.couple_non_dependent_children_only_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.lone_parent_dependent_children_households", + "name": "ons.population.age_40_49_by_region@E12000009", "ledger_selector": { "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", "dimension_values": { - "household_type": "lone_parent_dependent_children_households" + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] + }, + "geography_level": "region", + "geography_id": "E12000009", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_40_49_by_region@E12000009", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_40_49_by_region@W92000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] }, "geography_level": "country", - "geography_id": "K02000001" + "geography_id": "W92000004", + "dimensions": [ + "age" + ] }, - "entity": "household", - "measure": "ons/lone_parent_dependent_children_households", - "family": "ons_household_composition", + "entity": "person", + "measure": "ons.population.age_40_49_by_region@W92000004", + "family": "ons_population", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.lone_parent_dependent_children_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_40_49_by_region@S92000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_40_49_by_region@S92000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_40_49_by_region@N92000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49 + ] + }, + "geography_level": "country", + "geography_id": "N92000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_40_49_by_region@N92000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_40_49_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000001", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000001", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000001", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000005", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000005", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000005", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000006", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000006", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000006", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000007", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000007", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000008", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000008", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000008", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@E12000009", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "region", + "geography_id": "E12000009", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@E12000009", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@W92000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "country", + "geography_id": "W92000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@W92000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@S92000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@S92000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_50_59_by_region@N92000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "country", + "geography_id": "N92000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_50_59_by_region@N92000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_50_59_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000001", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000001", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000001", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000005", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000005", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000005", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000006", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000006", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000006", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000007", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000007", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000008", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000008", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000008", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@E12000009", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "region", + "geography_id": "E12000009", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@E12000009", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@W92000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "country", + "geography_id": "W92000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@W92000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@S92000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@S92000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_60_69_by_region@N92000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "country", + "geography_id": "N92000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_60_69_by_region@N92000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_60_69_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000001", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000001", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000001", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000005", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000005", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000005", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000006", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000006", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000006", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000007", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000007", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000008", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000008", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000008", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@E12000009", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "region", + "geography_id": "E12000009", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@E12000009", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@W92000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "country", + "geography_id": "W92000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@W92000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@S92000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@S92000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_70_79_by_region@N92000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "country", + "geography_id": "N92000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_70_79_by_region@N92000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_70_79_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000001", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000001", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000001", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000005", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000005", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000005", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000006", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000006", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000006", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000007", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000007", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000007", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000008", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000008", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000008", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@E12000009", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "region", + "geography_id": "E12000009", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@E12000009", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@W92000004", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "country", + "geography_id": "W92000004", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@W92000004", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "W92000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WALES\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@S92000003", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@S92000003", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "S92000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SCOTLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.age_80_89_by_region@N92000002", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "country", + "geography_id": "N92000002", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons.population.age_80_89_by_region@N92000002", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.age_80_89_by_region", + "measure_kind": "prepared_column", + "geography_level": "country", + "geography_id": "N92000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"person\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTHERN_IRELAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "value_operation": "sum", + "expected_member_count": 10, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_0_4", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 0, + 1, + 2, + 3, + 4 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_0_4", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_0_4", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_10_14", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 10, + 11, + 12, + 13, + 14 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_10_14", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_10_14", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_15_19", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 15, + 16, + 17, + 18, + 19 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_15_19", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_15_19", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_20_24", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 20, + 21, + 22, + 23, + 24 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_20_24", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_20_24", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_25_29", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 25, + 26, + 27, + 28, + 29 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_25_29", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_25_29", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_30_34", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 30, + 31, + 32, + 33, + 34 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_30_34", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_30_34", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_35_39", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 35, + 36, + 37, + 38, + 39 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_35_39", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_35_39", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_40_44", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 40, + 41, + 42, + 43, + 44 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_40_44", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_40_44", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_45_49", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 45, + 46, + 47, + 48, + 49 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_45_49", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_45_49", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_50_54", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 50, + 51, + 52, + 53, + 54 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_50_54", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_50_54", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_55_59", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_55_59", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_55_59", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_5_9", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 5, + 6, + 7, + 8, + 9 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_5_9", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_5_9", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_60_64", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 60, + 61, + 62, + 63, + 64 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_60_64", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_60_64", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_65_69", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_65_69", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_65_69", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_70_74", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 70, + 71, + 72, + 73, + 74 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_70_74", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_70_74", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_75_79", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_75_79", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_75_79", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_80_84", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 80, + 81, + 82, + 83, + 84 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_80_84", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_80_84", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_85_89", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_85_89", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_85_89", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.female_90_plus", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "female", + "age": [ + "90_plus" + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/female_90_plus", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.female_90_plus", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 1, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_0_4", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 0, + 1, + 2, + 3, + 4 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_0_4", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_0_4", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_10_14", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 10, + 11, + 12, + 13, + 14 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_10_14", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_10_14", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_15_19", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 15, + 16, + 17, + 18, + 19 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_15_19", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_15_19", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_20_24", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 20, + 21, + 22, + 23, + 24 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_20_24", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_20_24", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_25_29", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 25, + 26, + 27, + 28, + 29 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_25_29", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_25_29", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_30_34", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 30, + 31, + 32, + 33, + 34 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_30_34", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_30_34", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_35_39", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 35, + 36, + 37, + 38, + 39 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_35_39", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_35_39", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_40_44", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 40, + 41, + 42, + 43, + 44 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_40_44", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_40_44", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_45_49", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 45, + 46, + 47, + 48, + 49 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_45_49", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_45_49", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_50_54", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 50, + 51, + 52, + 53, + 54 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_50_54", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_50_54", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_55_59", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 55, + 56, + 57, + 58, + 59 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_55_59", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_55_59", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_5_9", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 5, + 6, + 7, + 8, + 9 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_5_9", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_5_9", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_60_64", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 60, + 61, + 62, + 63, + 64 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_60_64", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_60_64", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_65_69", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 65, + 66, + 67, + 68, + 69 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_65_69", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_65_69", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_70_74", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 70, + 71, + 72, + 73, + 74 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_70_74", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_70_74", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_75_79", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 75, + 76, + 77, + 78, + 79 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_75_79", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_75_79", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_80_84", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 80, + 81, + 82, + 83, + 84 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_80_84", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_80_84", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_85_89", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + 85, + 86, + 87, + 88, + 89 + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_85_89", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_85_89", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 5, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.male_90_plus", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "sex": "male", + "age": [ + "90_plus" + ] + }, + "geography_level": "country", + "geography_id": "K02000001", + "dimensions": [ + "age", + "sex" + ] + }, + "entity": "person", + "measure": "ons/male_90_plus", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.male_90_plus", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 1, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.scotland_children_under_16", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons/scotland_children_under_16", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.scotland_children_under_16", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 16, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.population.scotland_babies_under_1", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.mid_year_population_estimate", + "groupby_dimension": "age", + "dimension_values": { + "age": [ + 0 + ] + }, + "geography_level": "country", + "geography_id": "S92000003", + "dimensions": [ + "age" + ] + }, + "entity": "person", + "measure": "ons/scotland_babies_under_1", + "family": "ons_population", + "period": 2025, + "metadata": { + "contract_target_id": "ons.population.scotland_babies_under_1", + "measure_kind": "prepared_column" + }, + "value_operation": "sum", + "expected_member_count": 1, + "uprating_from_period": "2024", + "uprating_to_period": 2025 + }, + { + "name": "ons.household_composition.lone_households_under_65", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "lone_households_under_65" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/lone_households_under_65", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.lone_households_under_65", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.lone_households_over_65", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "lone_households_over_65" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/lone_households_over_65", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.lone_households_over_65", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.unrelated_adult_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "unrelated_adult_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/unrelated_adult_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.unrelated_adult_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.couple_no_children_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "couple_no_children_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/couple_no_children_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.couple_no_children_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.couple_under_3_children_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "couple_under_3_children_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/couple_under_3_children_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.couple_under_3_children_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.couple_3_plus_children_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "couple_3_plus_children_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/couple_3_plus_children_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.couple_3_plus_children_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.couple_non_dependent_children_only_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "couple_non_dependent_children_only_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/couple_non_dependent_children_only_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.couple_non_dependent_children_only_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.lone_parent_dependent_children_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "lone_parent_dependent_children_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/lone_parent_dependent_children_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.lone_parent_dependent_children_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.lone_parent_non_dependent_children_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "lone_parent_non_dependent_children_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/lone_parent_non_dependent_children_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.lone_parent_non_dependent_children_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "ons.household_composition.multi_family_households", + "ledger_selector": { + "source_name": "ons", + "source_concept": "ons.families_households_table7", + "groupby_dimension": "ons.household_type", + "dimension_values": { + "household_type": "multi_family_households" + }, + "geography_level": "country", + "geography_id": "K02000001" + }, + "entity": "household", + "measure": "ons/multi_family_households", + "family": "ons_household_composition", + "period": 2025, + "metadata": { + "contract_target_id": "ons.household_composition.multi_family_households", + "measure_kind": "prepared_column" + } + }, + { + "name": "voa.council_tax_stock.band_a@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_a@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_a", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_a@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_a", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_a", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_a", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_a", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_a", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_b@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_b", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_b@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_b", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_b", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_b", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_b", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_b", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_c@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_c", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_c@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_c", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_c", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_c", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_c", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_c", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_d@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_d", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_d@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_d", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_d", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_d", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_d", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_d", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_e@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_e", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_e@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_e", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_e", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_e", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_e", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_e", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_f@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_f", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_f@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_f", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_f", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_f", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_f", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_f", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000001", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000001" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000001", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000002", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000002" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000002", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000003", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000003" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000003", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000004", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000004" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000004", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000005", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000005" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000005", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000006", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000006" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000006", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000007", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000007" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000007", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000008", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000008" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000008", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "voa.council_tax_stock.band_g@E12000009", + "ledger_selector": { + "source_name": "voa", + "source_measure_id": "band_g", + "geography_level": "region", + "geography_id": "E12000009" + }, + "entity": "household", + "measure": "voa.council_tax_stock.band_g@E12000009", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "voa.council_tax_stock.band_g", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 + }, + { + "name": "scotgov.council_tax_stock.band_g", + "ledger_selector": { + "source_name": "scotgov", + "source_measure_id": "band_g", + "geography_level": "country", + "geography_id": "S92000003" + }, + "entity": "household", + "measure": "voa/council_tax/SCOTLAND/band_g", + "family": "council_tax_stock", + "period": 2025, + "metadata": { + "contract_target_id": "scotgov.council_tax_stock.band_g", + "measure_kind": "prepared_column" + }, + "uprating_from_period": "2025-09", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.lone_parent_non_dependent_children_households", + "name": "voa.council_tax_stock.band_h@E12000001", "ledger_selector": { - "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", - "dimension_values": { - "household_type": "lone_parent_non_dependent_children_households" - }, - "geography_level": "country", - "geography_id": "K02000001" + "source_name": "voa", + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000001" }, "entity": "household", - "measure": "ons/lone_parent_non_dependent_children_households", - "family": "ons_household_composition", + "measure": "voa.council_tax_stock.band_h@E12000001", + "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.lone_parent_non_dependent_children_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 }, { - "name": "ons.household_composition.multi_family_households", + "name": "voa.council_tax_stock.band_h@E12000002", "ledger_selector": { - "source_name": "ons", - "source_concept": "ons.families_households_table7", - "groupby_dimension": "ons.household_type", - "dimension_values": { - "household_type": "multi_family_households" - }, - "geography_level": "country", - "geography_id": "K02000001" + "source_name": "voa", + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000002" }, "entity": "household", - "measure": "ons/multi_family_households", - "family": "ons_household_composition", + "measure": "voa.council_tax_stock.band_h@E12000002", + "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "ons.household_composition.multi_family_households", - "measure_kind": "prepared_column" - } + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" + }, + "uprating_from_period": "2025-03", + "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_a", + "name": "voa.council_tax_stock.band_h@E12000003", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_a", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000003" }, "entity": "household", - "measure": "voa/council_tax/band_a", + "measure": "voa.council_tax_stock.band_h@E12000003", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_a", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_a", + "name": "voa.council_tax_stock.band_h@E12000004", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_a", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000004" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_a", + "measure": "voa.council_tax_stock.band_h@E12000004", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_a", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_b", + "name": "voa.council_tax_stock.band_h@E12000005", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_b", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000005" }, "entity": "household", - "measure": "voa/council_tax/band_b", + "measure": "voa.council_tax_stock.band_h@E12000005", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_b", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_b", + "name": "voa.council_tax_stock.band_h@E12000006", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_b", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000006" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_b", + "measure": "voa.council_tax_stock.band_h@E12000006", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_b", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_c", + "name": "voa.council_tax_stock.band_h@E12000007", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_c", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000007" }, "entity": "household", - "measure": "voa/council_tax/band_c", + "measure": "voa.council_tax_stock.band_h@E12000007", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_c", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_c", + "name": "voa.council_tax_stock.band_h@E12000008", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_c", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000008" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_c", + "measure": "voa.council_tax_stock.band_h@E12000008", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_c", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_d", + "name": "voa.council_tax_stock.band_h@E12000009", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_d", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "band_h", + "geography_level": "region", + "geography_id": "E12000009" }, "entity": "household", - "measure": "voa/council_tax/band_d", + "measure": "voa.council_tax_stock.band_h@E12000009", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_d", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.band_h", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_d", + "name": "scotgov.council_tax_stock.band_h", "ledger_selector": { "source_name": "scotgov", - "source_measure_id": "band_d", + "source_measure_id": "band_h", "geography_level": "country", "geography_id": "S92000003" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_d", + "measure": "voa/council_tax/SCOTLAND/band_h", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_d", + "contract_target_id": "scotgov.council_tax_stock.band_h", "measure_kind": "prepared_column" }, "uprating_from_period": "2025-09", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_e", + "name": "voa.council_tax_stock.total@E12000001", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_e", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000001" }, "entity": "household", - "measure": "voa/council_tax/band_e", + "measure": "voa.council_tax_stock.total@E12000001", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_e", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000001", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_e", + "name": "voa.council_tax_stock.total@E12000002", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_e", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000002" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_e", + "measure": "voa.council_tax_stock.total@E12000002", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_e", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000002", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"NORTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_f", + "name": "voa.council_tax_stock.total@E12000003", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_f", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000003" }, "entity": "household", - "measure": "voa/council_tax/band_f", + "measure": "voa.council_tax_stock.total@E12000003", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_f", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000003", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"YORKSHIRE\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_f", + "name": "voa.council_tax_stock.total@E12000004", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_f", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000004" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_f", + "measure": "voa.council_tax_stock.total@E12000004", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_f", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000004", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_g", + "name": "voa.council_tax_stock.total@E12000005", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_g", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000005" }, "entity": "household", - "measure": "voa/council_tax/band_g", + "measure": "voa.council_tax_stock.total@E12000005", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_g", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000005", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"WEST_MIDLANDS\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_g", + "name": "voa.council_tax_stock.total@E12000006", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_g", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000006" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_g", + "measure": "voa.council_tax_stock.total@E12000006", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_g", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000006", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"EAST_OF_ENGLAND\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.band_h", + "name": "voa.council_tax_stock.total@E12000007", "ledger_selector": { "source_name": "voa", - "source_measure_id": "band_h", - "geography_level": "country", - "geography_id": "E92000001" + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000007" }, "entity": "household", - "measure": "voa/council_tax/band_h", + "measure": "voa.council_tax_stock.total@E12000007", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "voa.council_tax_stock.band_h", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000007", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"LONDON\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "scotgov.council_tax_stock.band_h", + "name": "voa.council_tax_stock.total@E12000008", "ledger_selector": { - "source_name": "scotgov", - "source_measure_id": "band_h", - "geography_level": "country", - "geography_id": "S92000003" + "source_name": "voa", + "source_measure_id": "all_properties", + "geography_level": "region", + "geography_id": "E12000008" }, "entity": "household", - "measure": "voa/council_tax/SCOTLAND/band_h", + "measure": "voa.council_tax_stock.total@E12000008", "family": "council_tax_stock", "period": 2025, "metadata": { - "contract_target_id": "scotgov.council_tax_stock.band_h", - "measure_kind": "prepared_column" + "contract_target_id": "voa.council_tax_stock.total", + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000008", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_EAST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, - "uprating_from_period": "2025-09", + "uprating_from_period": "2025-03", "uprating_to_period": 2025 }, { - "name": "voa.council_tax_stock.total", + "name": "voa.council_tax_stock.total@E12000009", "ledger_selector": { "source_name": "voa", "source_measure_id": "all_properties", - "geography_level": "country", - "geography_id": "E92000001" + "geography_level": "region", + "geography_id": "E12000009" }, "entity": "household", - "measure": "voa/council_tax/total", + "measure": "voa.council_tax_stock.total@E12000009", "family": "council_tax_stock", "period": 2025, "metadata": { "contract_target_id": "voa.council_tax_stock.total", - "measure_kind": "prepared_column" + "measure_kind": "prepared_column", + "geography_level": "region", + "geography_id": "E12000009", + "geography_predicate": "{\"entity\":\"household\",\"map_to\":\"household\",\"operator\":\"==\",\"reduce\":\"any\",\"value\":\"SOUTH_WEST\",\"variable\":\"region\"}", + "cross_grain_grain": "region" }, "uprating_from_period": "2025-03", "uprating_to_period": 2025 diff --git a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json index ee12ca927b..fd990e3e76 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json @@ -6254,7 +6254,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/0_9", @@ -6326,7 +6326,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/10_19", @@ -6398,7 +6398,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/20_29", @@ -6470,7 +6470,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/30_39", @@ -6542,7 +6542,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/40_49", @@ -6614,7 +6614,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/50_59", @@ -6686,7 +6686,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/60_69", @@ -6758,7 +6758,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/70_79", @@ -6830,7 +6830,7 @@ "value_variable": "person_count", "from_entity": "person", "map_to": "household", - "notes": "One row per geography: English regions resolve at region level, Wales/Scotland/Northern Ireland at country level; the resolved geography binds the model region filter (compute/demographics.py:22-38)." + "notes": "One reference per region-tier area (microcosm#905): the nine English regions at Chronicle's region level, Wales, Scotland and Northern Ireland at country level. Each cell is scoped on the spine by the household-region predicate the generator stamps into its reference metadata (geography_predicate), projected to the person entity, and sits at the region grain of the cross-grain rule as the control for its constituencies and authorities." }, "axiom": { "metric_name": "ons/regional_age/80_89", @@ -10277,7 +10277,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_a", @@ -10374,7 +10374,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_b", @@ -10471,7 +10471,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_c", @@ -10568,7 +10568,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_d", @@ -10665,7 +10665,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_e", @@ -10762,7 +10762,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_f", @@ -10859,7 +10859,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_g", @@ -10956,7 +10956,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/band_h", @@ -11047,7 +11047,7 @@ } ], "value_variable": "household_count", - "notes": "England dwelling stock proxied by households. National references select E92000001, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." + "notes": "England dwelling stock proxied by households. National references fan out over the nine English regions (microcosm#905), each cell scoped by the household-region predicate in its reference metadata, and this binding explicitly filters country == ENGLAND. Local VOA bands use the separate by_area bindings." }, "axiom": { "metric_name": "voa/council_tax/total", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py index 187310e402..4a57e2f06f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py @@ -154,6 +154,9 @@ UK_ENGLAND_WALES_REGION_CODES, UK_GEOGRAPHY_LADDER_COLUMNS, UK_LONDON_REGION_CODE, + UK_LADDER_NATION_REGION_CODES, + UK_REGION_TIER, + UK_REGION_TIER_ENUM, UK_OA_LADDER_DERIVED_LAYERS, UK_OA_LADDER_KIND, UK_OA_LADDER_SCHEMA_VERSION, @@ -712,6 +715,9 @@ "UK_GEOGRAPHY_LADDER_COLUMNS", "UK_HMRC_INCOME_SOURCE_STAGES_RESOURCE", "UK_LONDON_REGION_CODE", + "UK_LADDER_NATION_REGION_CODES", + "UK_REGION_TIER", + "UK_REGION_TIER_ENUM", "UK_LOADER_INPUT_ALIASES", "UK_OA_LADDER_DERIVED_LAYERS", "UK_OA_LADDER_KIND", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py index b5015c4b17..9c028ca38f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py @@ -143,6 +143,55 @@ #: collapse to zero is caught the way the US ladder catches an NYC collapse). UK_LONDON_REGION_CODE = "E12000007" +#: The twelve-area region tier of the national calibration surface, in the +#: order the FRS ``gvtregno`` coding and the incumbent's regional rows use: +#: the nine English regions at Chronicle's ``region`` level, then Wales, +#: Scotland and Northern Ireland, which Chronicle stamps at ``country`` (their +#: GSS codes are country codes) but which sit at the same ITL1 tier as the +#: English regions. Two-level (country + region) contract targets fan out +#: over this roster (microcosm#905). +UK_REGION_TIER: tuple[tuple[str, str], ...] = ( + ("region", "E12000001"), # North East + ("region", "E12000002"), # North West + ("region", "E12000003"), # Yorkshire and The Humber + ("region", "E12000004"), # East Midlands + ("region", "E12000005"), # West Midlands + ("region", "E12000006"), # East of England + ("region", "E12000007"), # London + ("region", "E12000008"), # South East + ("region", "E12000009"), # South West + ("country", "W92000004"), # Wales + ("country", "S92000003"), # Scotland + ("country", "N92000002"), # Northern Ireland +) + +#: Region-tier GSS code -> the spine's ``region`` enum name (``REGION_MAP`` in +#: ``frs_spine``), the value a fan-out row's geography predicate compares +#: against. Kept beside the roster so the two cannot drift apart. +UK_REGION_TIER_ENUM: dict[str, str] = { + "E12000001": "NORTH_EAST", + "E12000002": "NORTH_WEST", + "E12000003": "YORKSHIRE", + "E12000004": "EAST_MIDLANDS", + "E12000005": "WEST_MIDLANDS", + "E12000006": "EAST_OF_ENGLAND", + "E12000007": "LONDON", + "E12000008": "SOUTH_EAST", + "E12000009": "SOUTH_WEST", + "W92000004": "WALES", + "S92000003": "SCOTLAND", + "N92000002": "NORTHERN_IRELAND", +} + +#: The ladder's nation pseudo region codes -> the GSS country code the region +#: tier uses for the same area, so an OA-derived region membership can be +#: expressed in tier codes. +UK_LADDER_NATION_REGION_CODES: dict[str, str] = { + "W99999999": "W92000004", + "S99999999": "S92000003", + "N99999999": "N92000002", +} + UK_OA_LADDER_SCHEMA_VERSION = 1 UK_OA_LADDER_KIND = "uk_oa_ladder" @@ -453,10 +502,7 @@ def expected_uk_ladder_area_support( region_households = float(constituency_weight.sum()) for constituency_code, household_count in constituency_weight.items(): expected_rows = ( - n_clones - * int(n_region) - * float(household_count) - / region_households + n_clones * int(n_region) * float(household_count) / region_households ) constituency_key = str(constituency_code) constituency_expected[constituency_key] += expected_rows @@ -504,9 +550,13 @@ def uk_region_mix( """Summarize household row and weight shares by normalized UK region.""" if region_column not in household.columns: - raise ValueError(f"household table must contain region column {region_column!r}.") + raise ValueError( + f"household table must contain region column {region_column!r}." + ) if weight_column not in household.columns: - raise ValueError(f"household table must contain weight column {weight_column!r}.") + raise ValueError( + f"household table must contain weight column {weight_column!r}." + ) region_codes = _household_region_codes( household[region_column], @@ -518,7 +568,9 @@ def uk_region_mix( if not np.isfinite(weights).all() or (weights < 0).any(): raise ValueError(f"{weight_column} must be finite and non-negative.") if len(weights) == 0: - raise ValueError("household table must contain at least one row for region mix.") + raise ValueError( + "household table must contain at least one row for region mix." + ) total_weight = float(weights.sum()) if total_weight <= 0: raise ValueError(f"{weight_column} must carry positive total weight.") diff --git a/packages/microcosm-build/tests/test_country_spec.py b/packages/microcosm-build/tests/test_country_spec.py index f8d60cf451..cb074ee059 100644 --- a/packages/microcosm-build/tests/test_country_spec.py +++ b/packages/microcosm-build/tests/test_country_spec.py @@ -1095,7 +1095,7 @@ def test_uk_target_references_accept_regenerated_contract_fields(self) -> None: spec = load_country_spec("uk") references = {reference.name: reference for reference in spec.target_references} - assert len(references) == 424 + assert len(references) == 595 # microcosm#905: 424 - 18 country rows + 189 region-tier cells assert references["obr.esa"].value_operation == "sum" assert references["dwp.uc.households"].value_operation == ( "monthly_window_sum_average" diff --git a/packages/microcosm-build/tests/test_target_reference_authoring.py b/packages/microcosm-build/tests/test_target_reference_authoring.py index a19006dc38..15cc9a6826 100644 --- a/packages/microcosm-build/tests/test_target_reference_authoring.py +++ b/packages/microcosm-build/tests/test_target_reference_authoring.py @@ -10,7 +10,9 @@ from microcosm.build.target_reference_authoring import ( AreaSignedDeferral, AreaTargetReferenceAuthoringConfig, + TargetReferenceAuthoringConfig, author_area_target_references, + author_target_references, target_references_resource, ) @@ -584,3 +586,159 @@ def _area_fact( "measure_id": measure_id, }, } + + +_REGION_TIER_CELLS = ( + ("region", "E12000007"), + ("region", "E12000001"), + ("country", "W92000004"), +) + + +def _tier_fact(level: str, area_id: str, value: float, fact_key: str) -> dict: + fact = _area_fact("ons", "population", value, area_id=area_id, fact_key=fact_key) + fact["geography"] = {"level": level, "id": area_id, "vintage": "gss_2024"} + return fact + + +def _two_level_contract() -> dict: + contract = _single_age_contract() + target = contract["targets"][0] + target["target_id"] = "ons.age.0_10_by_region" + target["geography_levels"] = ["country", "region"] + return contract + + +def _tier_metadata( + target: dict, geography_level: str, geography_id: str, entity: str +) -> dict[str, str]: + del target, geography_level + return { + "geography_predicate": json.dumps( + { + "variable": "region", + "operator": "==", + "value": geography_id, + "map_to": entity, + } + ), + "cross_grain_grain": "region", + } + + +def _tier_facts() -> list[dict]: + return [ + _tier_fact("region", "E12000007", 10.0, "london"), + _tier_fact("region", "E12000001", 20.0, "north-east"), + _tier_fact("country", "W92000004", 30.0, "wales"), + _tier_fact("country", "K02000001", 60.0, "uk"), + ] + + +def test_author_target_references_fans_out_over_a_geography_roster() -> None: + config = TargetReferenceAuthoringConfig( + target_period=2025, + geography_fanout_by_target_id={"ons.age.0_10_by_region": _REGION_TIER_CELLS}, + geography_fanout_metadata=_tier_metadata, + source_fact_feed="synthetic", + ) + authored = author_target_references(_two_level_contract(), _tier_facts(), config) + names = [row["name"] for row in authored.references] + assert names == [ + "ons.age.0_10_by_region@E12000007", + "ons.age.0_10_by_region@E12000001", + "ons.age.0_10_by_region@W92000004", + ] + london = authored.references[0] + # Each cell is its own measure column, never the shared metric name. + assert london["measure"] == london["name"] + assert london["entity"] == "person" + assert london["ledger_selector"]["geography_level"] == "region" + assert london["ledger_selector"]["geography_id"] == "E12000007" + assert london["metadata"]["contract_target_id"] == "ons.age.0_10_by_region" + assert london["metadata"]["geography_level"] == "region" + assert london["metadata"]["geography_id"] == "E12000007" + assert json.loads(london["metadata"]["geography_predicate"]) == { + "variable": "region", + "operator": "==", + "value": "E12000007", + "map_to": "person", + } + assert london["metadata"]["cross_grain_grain"] == "region" + wales = authored.references[2] + assert wales["ledger_selector"]["geography_level"] == "country" + # The UK-wide fact is no cell of the roster: nothing binds it. + assert "K02000001" not in json.dumps(authored.references) + + report = authored.membership_report + assert report["active_reference_count"] == 3 + assert report["status_counts"] == {"active": 3} + assert report["geography_pins"]["ons.age.0_10_by_region"] == { + "geography_fanout": [ + {"geography_level": level, "geography_id": area_id} + for level, area_id in _REGION_TIER_CELLS + ] + } + candidates = report["targets"]["ons.age.0_10_by_region"]["candidates"] + assert [ + ( + entry["geography_level"], + entry["geography_id"], + entry["status"], + entry["resolved_value"], + ) + for entry in candidates + ] == [ + ("region", "E12000007", "active", 10.0), + ("region", "E12000001", "active", 20.0), + ("country", "W92000004", "active", 30.0), + ] + + +def test_geography_fanout_refuses_an_absent_roster_cell() -> None: + config = TargetReferenceAuthoringConfig( + target_period=2025, + geography_fanout_by_target_id={"ons.age.0_10_by_region": _REGION_TIER_CELLS}, + source_fact_feed="synthetic", + ) + facts = [fact for fact in _tier_facts() if fact["geography"]["id"] != "W92000004"] + with pytest.raises(ValueError, match="Unsigned geography fan-out absence") as info: + author_target_references(_two_level_contract(), facts, config) + assert "W92000004" in str(info.value) + + +def test_geography_fanout_refuses_a_pin_on_the_same_target() -> None: + config = TargetReferenceAuthoringConfig( + target_period=2025, + geography_pins={ + "ons.age.0_10_by_region": { + "geography_level": "country", + "geography_id": "K02000001", + } + }, + geography_fanout_by_target_id={"ons.age.0_10_by_region": _REGION_TIER_CELLS}, + source_fact_feed="synthetic", + ) + with pytest.raises(ValueError, match="both a geography pin"): + author_target_references(_two_level_contract(), _tier_facts(), config) + + +def test_geography_fanout_refuses_duplicate_cells_and_non_string_metadata() -> None: + duplicated = TargetReferenceAuthoringConfig( + target_period=2025, + geography_fanout_by_target_id={ + "ons.age.0_10_by_region": (("region", "E12000007"), ("region", "E12000007")) + }, + source_fact_feed="synthetic", + ) + with pytest.raises(ValueError, match="twice"): + author_target_references(_two_level_contract(), _tier_facts(), duplicated) + + non_string = TargetReferenceAuthoringConfig( + target_period=2025, + geography_fanout_by_target_id={"ons.age.0_10_by_region": _REGION_TIER_CELLS}, + geography_fanout_metadata=lambda *args: {"cross_grain_grain": 1}, + source_fact_feed="synthetic", + ) + with pytest.raises(ValueError, match="must be a string"): + author_target_references(_two_level_contract(), _tier_facts(), non_string) diff --git a/packages/microcosm-build/tests/test_uk_geography_ladder.py b/packages/microcosm-build/tests/test_uk_geography_ladder.py index 5131be258b..679a349dd8 100644 --- a/packages/microcosm-build/tests/test_uk_geography_ladder.py +++ b/packages/microcosm-build/tests/test_uk_geography_ladder.py @@ -280,9 +280,7 @@ def test_expected_support_matches_hand_computed_two_stage_result(tmp_path) -> No ), ) ) - household = pd.DataFrame( - {"household_id": [1, 2], "region": ["LONDON", "London"]} - ) + household = pd.DataFrame({"household_id": [1, 2], "region": ["LONDON", "London"]}) support = expected_uk_ladder_area_support(household, ladder, n_clones=2) @@ -664,3 +662,35 @@ def test_join_raises_on_unmatched_lad_itl() -> None: oa_ward=_oa_ward(), lad_itl=lad_itl, ) + + +def test_region_tier_roster_and_enum_table_are_consistent() -> None: + from microcosm.build.uk_runtime.frs_spine import REGION_MAP + from microcosm.build.uk_runtime.geography_ladder import ( + UK_ENGLAND_WALES_REGION_CODES, + UK_LADDER_NATION_REGION_CODES, + UK_REGION_TIER, + UK_REGION_TIER_ENUM, + ) + + codes = [code for _, code in UK_REGION_TIER] + assert len(codes) == 12 == len(set(codes)) + assert [code for level, code in UK_REGION_TIER if level == "region"] == [ + code for code in UK_ENGLAND_WALES_REGION_CODES if code.startswith("E12") + ] + assert [code for level, code in UK_REGION_TIER if level == "country"] == [ + "W92000004", + "S92000003", + "N92000002", + ] + # Every spine region enum has exactly one tier code, and every tier code + # names a spine region: the predicate a fan-out row carries can never name + # a region the frame does not carry. + assert set(UK_REGION_TIER_ENUM) == set(codes) + assert sorted(UK_REGION_TIER_ENUM.values()) == sorted(REGION_MAP.values()) + assert len(set(UK_REGION_TIER_ENUM.values())) == 12 + assert set(UK_LADDER_NATION_REGION_CODES.values()) == { + "W92000004", + "S92000003", + "N92000002", + } diff --git a/packages/microcosm-build/tests/test_uk_national_calibration.py b/packages/microcosm-build/tests/test_uk_national_calibration.py index df05162590..2f614a4bad 100644 --- a/packages/microcosm-build/tests/test_uk_national_calibration.py +++ b/packages/microcosm-build/tests/test_uk_national_calibration.py @@ -41,7 +41,7 @@ from microcosm.calibrate import TargetRegistry, TargetSpec from microcosm.frame import EntitySchema, Frame, WeightKind, Weights -ACTIVE_REFERENCE_COUNT = 424 +ACTIVE_REFERENCE_COUNT = 595 def _uc_reference(**overrides) -> LedgerTargetReference: diff --git a/packages/microcosm-build/tests/test_uk_target_references.py b/packages/microcosm-build/tests/test_uk_target_references.py index cae71b11d2..76e10881e8 100644 --- a/packages/microcosm-build/tests/test_uk_target_references.py +++ b/packages/microcosm-build/tests/test_uk_target_references.py @@ -56,7 +56,8 @@ _value_operation_by_target_id, ) -ACTIVE_REFERENCE_COUNT = 424 +ACTIVE_REFERENCE_COUNT = 595 +REGION_TIER_LEVEL = {code: level for level, code in UK_REGION_TIER} UK_DATA_REPO = "policyengine-" + "uk-data" @@ -221,21 +222,34 @@ def test_uk_target_references_follow_contract_derivation_rules() -> None: contract_target_id = reference["metadata"]["contract_target_id"] target = targets_by_id[contract_target_id] binding = target["bindings"]["policyengine"] + fanout_cell = reference["metadata"].get("geography_id") for key, value in target["ledger_selector"].items(): if key == "dimension_values": assert value.items() <= reference["ledger_selector"][key].items() continue assert reference["ledger_selector"][key] == value - # Region-only contract targets (the DfT London bus rows) pin the - # publisher's region-stamped fact; everything else pins a country. - expected_level = ( - "region" - if list(target.get("geography_levels") or ()) == ["region"] - else "country" - ) - assert reference["ledger_selector"]["geography_level"] == expected_level - assert reference["ledger_selector"]["geography_id"] + if fanout_cell: + # Two-level (country + region) targets fan out over the region + # tier: each cell pins the tier's level for its area and is named + # and measured target_id@geography_id (microcosm#905). + assert reference["name"] == f"{contract_target_id}@{fanout_cell}" + assert sorted(target["geography_levels"]) == ["country", "region"] + assert ( + reference["ledger_selector"]["geography_level"] + == (REGION_TIER_LEVEL[fanout_cell]) + ) + assert reference["ledger_selector"]["geography_id"] == fanout_cell + else: + # Region-only contract targets (the DfT London bus rows) pin the + # publisher's region-stamped fact; everything else pins a country. + expected_level = ( + "region" + if list(target.get("geography_levels") or ()) == ["region"] + else "country" + ) + assert reference["ledger_selector"]["geography_level"] == expected_level + assert reference["ledger_selector"]["geography_id"] assert reference["entity"] == _expected_reference_entity(target) expected_measure = ( binding["metric_name"] @@ -261,6 +275,26 @@ def test_uk_target_references_follow_contract_derivation_rules() -> None: expected_metadata["measurement_period"] = str(binding["measurement_period"]) if binding.get("require_matching_fact_period"): expected_metadata["source_period_policy"] = "exact_observation" + if fanout_cell: + expected_metadata.update( + { + "geography_level": REGION_TIER_LEVEL[fanout_cell], + "geography_id": fanout_cell, + "geography_predicate": json.dumps( + { + "entity": "household", + "variable": "region", + "operator": "==", + "value": UK_REGION_TIER_ENUM[fanout_cell], + "reduce": "any", + "map_to": _expected_reference_entity(target), + }, + sort_keys=True, + separators=(",", ":"), + ), + "cross_grain_grain": "region", + } + ) assert reference["metadata"] == expected_metadata category_id = target["category_id"] category = resource["hierarchy"]["categories"][category_id] @@ -629,7 +663,7 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: assert membership["target_period"] == 2025 assert membership["active_reference_count"] == ACTIVE_REFERENCE_COUNT assert membership["status_counts"] == { - "active": 424, + "active": 595, "no_fact_at_or_before_period": 7, "signed_excluded": 7, } @@ -668,12 +702,30 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: { "family": "council_tax_stock", "status": "active_declared_rows", - "active_reference_count": 18, + "active_reference_count": 90, + "signed_rationale": ( + "VOA (England) and Scottish Government CTAXBASE (Scotland) " + "council-tax stock bands are declared as nine explicit target " + "rows each, including total. The Scottish rows resolve with " + "their country-level geography and band pin; the English rows " + "fan out over the nine English regions of the region tier " + "(microcosm#905), each cell resolving VOA's region-stamped " + "band count with the same band pin." + ), + }, + { + "family": "ons_population", + "status": "active_region_tier_fanout", + "active_reference_count": 108, "signed_rationale": ( - "VOA (England and Wales) and Scottish Government CTAXBASE " - "(Scotland) council-tax stock bands are declared as nine " - "explicit target rows each, including total, and each resolves " - "with its country-level geography and band pin." + "The nine ONS population-by-age-band targets fan out over the " + "twelve-area region tier (nine English regions at Chronicle's " + "region level, Wales, Scotland and Northern Ireland at country " + "level), one reference per area, each scoped on the spine by " + "a household-region predicate and placed at the region grain " + "of the cross-grain rule (microcosm#905). The former single " + "UK-wide row per band is retired: the tier sums to it within " + "the same publication." ), }, ] @@ -1250,3 +1302,52 @@ def test_public_cgt_parity_fixture_rejects_stale_values_and_unsigned_names(mutat signed = [r for r in signed if r["name"] != omitted] gate = ledger_compile_parity_gate(actual, fixture, signed_differences=signed) assert not gate.passed + + +def test_two_level_targets_fan_out_over_the_region_tier() -> None: + resource = _load_uk_resource("target_references.json") + membership = _load_uk_resource("target_reference_membership.json") + contract = _load_uk_resource("uk_population_targets.json") + two_level = [ + target["target_id"] + for target in contract["targets"] + if sorted(target.get("geography_levels") or ()) == ["country", "region"] + ] + assert len(two_level) == 18 + ons = [target_id for target_id in two_level if target_id.startswith("ons.")] + voa = [target_id for target_id in two_level if target_id.startswith("voa.")] + assert len(ons) == 9 and len(voa) == 9 + by_contract: dict[str, list[dict]] = {} + for reference in resource["target_references"]: + by_contract.setdefault(reference["metadata"]["contract_target_id"], []).append( + reference + ) + tier_codes = [code for _, code in UK_REGION_TIER] + english = [code for code in tier_codes if code.startswith("E12")] + for target_id in two_level: + rows = by_contract[target_id] + cells = [row["metadata"]["geography_id"] for row in rows] + # The retired single country row is gone: every row is a tier cell. + assert all("@" in row["name"] for row in rows), target_id + assert cells == (tier_codes if target_id in ons else english), target_id + assert [row["measure"] for row in rows] == [row["name"] for row in rows] + assert {row["metadata"]["cross_grain_grain"] for row in rows} == {"region"} + for row in rows: + predicate = json.loads(row["metadata"]["geography_predicate"]) + assert ( + predicate["value"] + == UK_REGION_TIER_ENUM[row["metadata"]["geography_id"]] + ) + assert predicate["map_to"] == row["entity"] + pins = membership["geography_pins"][target_id] + assert [cell["geography_id"] for cell in pins["geography_fanout"]] == cells + candidates = membership["targets"][target_id]["candidates"] + assert [entry["geography_id"] for entry in candidates] == cells + assert {entry["status"] for entry in candidates} == {"active"} + assert sum(len(by_contract[target_id]) for target_id in two_level) == 189 + # The twelve ONS cells of a band sum to the retired UK row of the same + # publication (the 0-9 band: 7,553,013 at mid-2024). + zero_to_nine = membership["targets"]["ons.population.age_0_9_by_region"] + assert sum(entry["resolved_value"] for entry in zero_to_nine["candidates"]) == ( + 7_553_013.0 + ) diff --git a/tools/generate_uk_target_references.py b/tools/generate_uk_target_references.py index 7e100e105b..3bcb304a92 100644 --- a/tools/generate_uk_target_references.py +++ b/tools/generate_uk_target_references.py @@ -21,6 +21,10 @@ author_target_references, target_references_resource, ) +from microcosm.build.uk_runtime.geography_ladder import ( + UK_REGION_TIER, + UK_REGION_TIER_ENUM, +) from microcosm.build.uk_runtime.ledger_targets import UK_UPRATING_APPLIERS from microcosm.build.uk_runtime.uc_source_periods import uc_source_month_metadata @@ -107,6 +111,8 @@ def main() -> None: config = TargetReferenceAuthoringConfig( target_period=args.period, geography_pins=_geography_pins(contract), + geography_fanout_by_target_id=_geography_fanout(contract), + geography_fanout_metadata=_geography_fanout_metadata, fanout_name=lambda target, fact: _fanout_name( target, fact, @@ -197,17 +203,103 @@ def _geography_pins(contract: Mapping[str, Any]) -> dict[str, dict[str, str]]: exists. Every other national target pins at country level. """ + fanned_out = _geography_fanout(contract) pins: dict[str, dict[str, str]] = {} for target in contract.get("targets", ()): + target_id = str(target["target_id"]) + if target_id in fanned_out: + # A two-level target takes its geographies from the region tier + # roster (microcosm#905); a single pin would collapse it back to + # the country row the roster replaces. + continue levels = tuple(str(level) for level in target.get("geography_levels") or ()) level = "region" if levels == ("region",) else "country" - pins[str(target["target_id"])] = { + pins[target_id] = { "geography_level": level, "geography_id": _geography_id_for_target(target), } return pins +#: The declared level set that fans out over the region tier instead of +#: pinning one country: a target that is published both nationally and by +#: region (ONS mid-year population by age band, VOA council-tax stock by band). +REGION_TIER_FANOUT_LEVELS = frozenset({"country", "region"}) + + +def _geography_fanout( + contract: Mapping[str, Any], +) -> dict[str, tuple[tuple[str, str], ...]]: + """Region-tier cells for every two-level (country + region) target. + + The nine English regions are always in; the three nations join only when + the binding does not already pin a country itself (the VOA stock bindings + filter ``country == ENGLAND`` because the Welsh, Scottish and Northern + Irish stocks are separate publications and contract families), so a + nation cell is never a row the binding would measure as zero. + """ + + fanout: dict[str, tuple[tuple[str, str], ...]] = {} + for target in contract.get("targets", ()): + levels = {str(level) for level in target.get("geography_levels") or ()} + if levels != REGION_TIER_FANOUT_LEVELS: + continue + cells = [(level, code) for level, code in UK_REGION_TIER if level == "region"] + if not _binding_pins_country(target["bindings"]["policyengine"]): + cells.extend( + (level, code) for level, code in UK_REGION_TIER if level == "country" + ) + fanout[str(target["target_id"])] = tuple(cells) + return fanout + + +def _binding_pins_country(binding: Mapping[str, Any]) -> bool: + predicates = [ + *binding.get("filters", ()), + *binding.get("household_conditions", ()), + ] + return any( + str(predicate.get("variable") or predicate.get("concept") or "") == "country" + for predicate in predicates + if isinstance(predicate, Mapping) + ) + + +def _geography_fanout_metadata( + target: Mapping[str, Any], + geography_level: str, + geography_id: str, + entity: str, +) -> dict[str, str]: + """Scope one region-tier row to its area on the spine. + + The predicate compares the household's ``region`` enum (FRS ``gvtregno`` + through ``REGION_MAP``) with the tier code's enum name and projects the + household match to the binding's own entity, the way the incumbent's + ``compute_regional_age`` masks persons by their household's region. The + ``cross_grain_grain`` stamp places every tier row, the three nation rows + included, at the ``region`` grain of the cross-grain rule; Chronicle's + ``country`` stamp on those three stays on the selector and the ledger + metadata untouched. + """ + + del target, geography_level + predicate = { + "entity": "household", + "variable": "region", + "operator": "==", + "value": UK_REGION_TIER_ENUM[geography_id], + "reduce": "any", + "map_to": entity, + } + return { + "geography_predicate": json.dumps( + predicate, sort_keys=True, separators=(",", ":") + ), + "cross_grain_grain": "region", + } + + SCOTGOV_COUNCIL_TAX_STOCK_PREFIX = "scotgov.council_tax_stock." # Target-id prefixes whose geography pins cannot come from the nation-substring @@ -508,10 +600,32 @@ def _add_uk_membership_accounting( "status": "active_declared_rows", "active_reference_count": council_tax_count, "signed_rationale": ( - "VOA (England and Wales) and Scottish Government CTAXBASE " - "(Scotland) council-tax stock bands are declared as nine " - "explicit target rows each, including total, and each resolves " - "with its country-level geography and band pin." + "VOA (England) and Scottish Government CTAXBASE (Scotland) " + "council-tax stock bands are declared as nine explicit target " + "rows each, including total. The Scottish rows resolve with " + "their country-level geography and band pin; the English rows " + "fan out over the nine English regions of the region tier " + "(microcosm#905), each cell resolving VOA's region-stamped " + "band count with the same band pin." + ), + }, + { + "family": "ons_population", + "status": "active_region_tier_fanout", + "active_reference_count": sum( + 1 + for reference in references + if reference["metadata"]["contract_target_id"].endswith("_by_region") + ), + "signed_rationale": ( + "The nine ONS population-by-age-band targets fan out over the " + "twelve-area region tier (nine English regions at Chronicle's " + "region level, Wales, Scotland and Northern Ireland at country " + "level), one reference per area, each scoped on the spine by " + "a household-region predicate and placed at the region grain " + "of the cross-grain rule (microcosm#905). The former single " + "UK-wide row per band is retired: the tier sums to it within " + "the same publication." ), }, ] From c686834a74d41637e8f8ee90a77535d63442281d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:45:03 +0200 Subject: [PATCH 02/12] Scope region-tier cells with a per-reference geography predicate (#905) A fanned-out reference shares its contract binding with every sibling cell; what distinguishes the cells is the predicate the authoring stamps into metadata.geography_predicate (a JSON object in the ordinary predicate vocabulary). The shared materializer appends it to the binding's filters before masking; references without the key are untouched, so no existing country-level reference is re-scoped by its geography stamp, and a provider binding refuses it because providers do not read filters. The UK cells carry a household-region predicate (entity household, variable region, reduce any, map_to the binding entity), resolved through the adapter's existing household_condition projection: persons for the ONS bands, households for the VOA bands. No adapter change. Tests cover the shared mechanism on the stub adapter and the UK frame adapter at both grains (81 VOA region cells, 12 ONS cells). Co-Authored-By: Claude Fable 5.1 --- .../microcosm/build/target_materialization.py | 43 +++++++ .../tests/test_target_materialization.py | 105 +++++++++++++++++ .../tests/test_uk_council_tax_targets.py | 111 +++++++++++++++--- 3 files changed, 241 insertions(+), 18 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/target_materialization.py b/packages/microcosm-build/src/microcosm/build/target_materialization.py index 2629e45077..c2b84afed5 100644 --- a/packages/microcosm-build/src/microcosm/build/target_materialization.py +++ b/packages/microcosm-build/src/microcosm/build/target_materialization.py @@ -2,6 +2,7 @@ from __future__ import annotations +import json import math import re from collections.abc import Callable, Mapping, Sequence @@ -490,6 +491,7 @@ def materialize_target_bindings( contract_target_id = spec.metadata.get("contract_target_id") target = contract_targets.get(str(contract_target_id)) binding = target["bindings"]["policyengine"] if target is not None else {} + binding = _with_geography_predicate(binding, spec) if ( hasattr(adapter, "has_column") and adapter.has_column(spec.entity, spec.measure) @@ -629,6 +631,47 @@ def input_substitution_counterfactual( raise ValueError("adapter does not provide counterfactual_delta") +def _with_geography_predicate( + binding: Mapping[str, Any], + spec: Any, +) -> Mapping[str, Any]: + """Scope a contract binding to one reference's declared geography. + + A reference authored by a geography fan-out shares its contract binding + with every sibling cell; what distinguishes the cells is the predicate the + authoring stamped into ``metadata.geography_predicate`` (a JSON object in + the ordinary predicate vocabulary). It is appended to the binding's + ``filters`` verbatim. References without the key are untouched, so no + existing country-level reference is re-scoped by its geography stamp. + """ + + metadata = getattr(spec, "metadata", None) or {} + raw = metadata.get("geography_predicate") + if not raw: + return binding + name = getattr(spec, "name", "") + try: + predicate = json.loads(str(raw)) + except json.JSONDecodeError as error: + raise ValueError( + f"{name!r}: metadata.geography_predicate is not valid JSON: {error}" + ) from None + if not isinstance(predicate, Mapping) or not predicate.get("variable"): + raise ValueError( + f"{name!r}: metadata.geography_predicate must be a predicate object " + "naming a variable." + ) + if binding.get("kind"): + raise ValueError( + f"{name!r}: a geography predicate cannot scope a provider binding " + f"of kind {binding['kind']!r}; providers do not read filters." + ) + return { + **binding, + "filters": [*binding.get("filters", ()), dict(predicate)], + } + + def _prepared_column_values( adapter: Any, entity: str, diff --git a/packages/microcosm-build/tests/test_target_materialization.py b/packages/microcosm-build/tests/test_target_materialization.py index 4c81e61732..88523e5463 100644 --- a/packages/microcosm-build/tests/test_target_materialization.py +++ b/packages/microcosm-build/tests/test_target_materialization.py @@ -1,3 +1,4 @@ +import json import numpy as np import pandas as pd import pytest @@ -1071,3 +1072,107 @@ def test_declared_band_filter_dimension_breaks_the_tie(): assert result.skipped == () assert list(adapter.tables["person"]["income_band_0"]) == [1.0, 0.0, 0.0] assert list(adapter.tables["person"]["income_band_20"]) == [0.0, 1.0, 1.0] + + +def _geography_predicate_registry(predicate: str | None) -> TargetRegistry: + metadata = {"contract_target_id": "adult_income"} + if predicate is not None: + metadata["geography_predicate"] = predicate + return TargetRegistry( + [ + TargetSpec( + name="adult_income@LONDON", + entity="person", + measure="adult_income@LONDON", + value=50.0, + source="test", + metadata=metadata, + ) + ], + country="uk", + ) + + +_ADULT_INCOME_CONTRACT = { + "adult_income": { + "bindings": { + "policyengine": { + "value_variable": "income", + "filters": [{"variable": "age", "operator": ">=", "value": 18}], + } + } + } +} + + +def test_geography_predicate_scopes_a_shared_binding_to_one_reference(): + adapter = StubAdapter() + adapter.tables["person"]["region"] = np.array(["LONDON", "LONDON", "WALES"]) + registry = _geography_predicate_registry( + json.dumps({"variable": "region", "operator": "==", "value": "LONDON"}) + ) + result = materialize_target_bindings( + adapter, registry, _ADULT_INCOME_CONTRACT, period=2025 + ) + assert result.skipped == () + # The contract's age filter still applies; the predicate removes the + # Welsh adult, and nothing in the contract itself changed. + assert adapter.tables["person"]["adult_income@LONDON"].tolist() == [ + 0.0, + 20.0, + 0.0, + ] + assert _ADULT_INCOME_CONTRACT["adult_income"]["bindings"]["policyengine"][ + "filters" + ] == [{"variable": "age", "operator": ">=", "value": 18}] + + +def test_reference_without_geography_predicate_is_untouched(): + adapter = StubAdapter() + registry = _geography_predicate_registry(None) + result = materialize_target_bindings( + adapter, registry, _ADULT_INCOME_CONTRACT, period=2025 + ) + assert result.skipped == () + assert adapter.tables["person"]["adult_income@LONDON"].tolist() == [ + 0.0, + 20.0, + 30.0, + ] + + +@pytest.mark.parametrize( + "predicate, message", + [ + ("{not json", "not valid JSON"), + (json.dumps(["region"]), "must be a predicate object"), + (json.dumps({"operator": "==", "value": "LONDON"}), "naming a variable"), + ], +) +def test_malformed_geography_predicate_refuses_materialization(predicate, message): + adapter = StubAdapter() + registry = _geography_predicate_registry(predicate) + with pytest.raises(ValueError, match=message): + materialize_target_bindings( + adapter, registry, _ADULT_INCOME_CONTRACT, period=2025 + ) + + +def test_geography_predicate_refuses_provider_bindings(): + adapter = StubAdapter() + registry = _geography_predicate_registry( + json.dumps({"variable": "region", "operator": "==", "value": "LONDON"}) + ) + contract = { + "adult_income": { + "bindings": { + "policyengine": { + "kind": "input_substitution_counterfactual", + "zeroed_input": "salary_sacrifice", + "output_variable": "baseline_tax", + } + } + } + } + with pytest.raises(ValueError, match="cannot scope a provider binding"): + materialize_target_bindings(adapter, registry, contract, period=2025) diff --git a/packages/microcosm-build/tests/test_uk_council_tax_targets.py b/packages/microcosm-build/tests/test_uk_council_tax_targets.py index e150eec93f..dd8c8d3710 100644 --- a/packages/microcosm-build/tests/test_uk_council_tax_targets.py +++ b/packages/microcosm-build/tests/test_uk_council_tax_targets.py @@ -9,6 +9,7 @@ import pytest from microcosm.build.country_spec import load_country_spec +from microcosm.build.uk_runtime.geography_ladder import UK_REGION_TIER_ENUM from microcosm.build.uk_runtime.ledger_targets import ( UKFrameTargetAdapter, materialize_uk_ledger_targets, @@ -36,15 +37,9 @@ def _membership() -> dict: ) -def test_national_voa_matrix_counts_only_england_for_every_band_and_total() -> None: - """The E92000001 fact must not absorb Wales/Scotland/NI household mass.""" - rows = [ - (country, band) - for country in ("ENGLAND", "WALES", "SCOTLAND", "NORTHERN_IRELAND") - for band in "ABCDEFGH" - ] +def _region_frame(rows: list[tuple[str, str, str]]) -> Frame: ids = np.arange(len(rows), dtype="int64") - frame = Frame( + return Frame( { "person": pd.DataFrame( {"person_id": ids, "person_benunit_id": ids, "person_household_id": ids} @@ -53,8 +48,9 @@ def test_national_voa_matrix_counts_only_england_for_every_band_and_total() -> N "household": pd.DataFrame( { "household_id": ids, - "country": [x[0] for x in rows], - "council_tax_band": [x[1] for x in rows], + "country": [row[0] for row in rows], + "region": [row[1] for row in rows], + "council_tax_band": [row[2] for row in rows], "household_num_benunits": np.ones(len(rows)), } ), @@ -62,13 +58,14 @@ def test_national_voa_matrix_counts_only_england_for_every_band_and_total() -> N EntitySchema(group_entities=("benunit", "household")), {"household": Weights(np.ones(len(rows)), WeightKind.DESIGN)}, ) + + +def _registry_for(prefix: str) -> tuple[list, TargetRegistry]: refs = [ r for r in load_country_spec("uk").target_references - if r.name.startswith("voa.council_tax_stock.") + if r.name.startswith(prefix) ] - assert len(refs) == 9 - assert all(r.ledger_selector["geography_id"] == "E92000001" for r in refs) registry = TargetRegistry( [ TargetSpec( @@ -84,7 +81,33 @@ def test_national_voa_matrix_counts_only_england_for_every_band_and_total() -> N ], country="uk", ) - adapter = UKFrameTargetAdapter(frame) + return refs, registry + + +def test_national_voa_matrix_counts_only_its_region_for_every_band_and_total() -> None: + """Each region cell must count only that region's English band households. + + The English VOA stock fans out over the nine English regions + (microcosm#905); a Welsh, Scottish or Northern Irish household never + enters any cell, and a Londoner never enters the North East's. + """ + + areas = ( + ("ENGLAND", "NORTH_EAST"), + ("ENGLAND", "LONDON"), + ("ENGLAND", "SOUTH_EAST"), + ("WALES", "WALES"), + ("SCOTLAND", "SCOTLAND"), + ("NORTHERN_IRELAND", "NORTHERN_IRELAND"), + ) + rows = [(country, region, band) for country, region in areas for band in "ABCDEFGH"] + refs, registry = _registry_for("voa.council_tax_stock.") + assert len(refs) == 81 + assert {r.ledger_selector["geography_level"] for r in refs} == {"region"} + assert sorted({r.ledger_selector["geography_id"] for r in refs}) == [ + f"E1200000{index}" for index in range(1, 10) + ] + adapter = UKFrameTargetAdapter(_region_frame(rows)) result = materialize_uk_ledger_targets( adapter, registry, period=2025, band_edge_registry=registry ) @@ -93,17 +116,69 @@ def test_national_voa_matrix_counts_only_england_for_every_band_and_total() -> N adapter.to_frame(), registry.to_target_set(), weight_entity="household" ) for name, values in zip(problem.names, problem.matrix.toarray(), strict=True): + target_id, code = name.split("@")[:2] band = ( - name.split("@")[0].rsplit("band_", 1)[-1].upper() - if "band_" in name - else None + target_id.rsplit("band_", 1)[-1].upper() if "band_" in target_id else None ) + region = UK_REGION_TIER_ENUM[code] expected = [ - country == "ENGLAND" and (band is None or b == band) for country, b in rows + country == "ENGLAND" and r == region and (band is None or b == band) + for country, r, b in rows ] np.testing.assert_array_equal(values, expected, err_msg=name) +def test_national_ons_region_cells_count_only_their_region_at_person_grain() -> None: + """The region predicate is a household fact projected to each person.""" + + household_ids = np.arange(3, dtype="int64") + person_ids = np.arange(4, dtype="int64") + frame = Frame( + { + "person": pd.DataFrame( + { + "person_id": person_ids, + "person_benunit_id": np.array([0, 0, 1, 2], dtype="int64"), + "person_household_id": np.array([0, 0, 1, 2], dtype="int64"), + "age": np.array([5.0, 40.0, 7.0, 3.0]), + } + ), + "benunit": pd.DataFrame({"benunit_id": household_ids}), + "household": pd.DataFrame( + { + "household_id": household_ids, + "region": ["LONDON", "WALES", "SCOTLAND"], + "household_num_benunits": np.ones(3), + } + ), + }, + EntitySchema(group_entities=("benunit", "household")), + {"household": Weights(np.ones(3), WeightKind.DESIGN)}, + ) + refs, registry = _registry_for("ons.population.age_0_9_by_region@") + assert len(refs) == 12 + adapter = UKFrameTargetAdapter(frame) + result = materialize_uk_ledger_targets( + adapter, registry, period=2025, band_edge_registry=registry + ) + assert not result.skipped + problem = build_constraint_matrix( + adapter.to_frame(), registry.to_target_set(), weight_entity="household" + ) + # Matrix names carry the target period as a third "@" segment. + by_name = { + "@".join(name.split("@")[:2]): values + for name, values in zip(problem.names, problem.matrix.toarray(), strict=True) + } + prefix = "ons.population.age_0_9_by_region@" + # London: one child under ten; the 40-year-old is outside the band. + assert by_name[f"{prefix}E12000007"].tolist() == [1.0, 0.0, 0.0] + assert by_name[f"{prefix}W92000004"].tolist() == [0.0, 1.0, 0.0] + assert by_name[f"{prefix}S92000003"].tolist() == [0.0, 0.0, 1.0] + assert by_name[f"{prefix}N92000002"].tolist() == [0.0, 0.0, 0.0] + assert by_name[f"{prefix}E12000001"].tolist() == [0.0, 0.0, 0.0] + + def test_council_tax_band_cells_activate_and_defer_as_measured() -> None: membership = _membership() expected_active = { From 5527cc37a0277c7161fdb17e896e4cf93e6d2fb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:45:03 +0200 Subject: [PATCH 03/12] Make region a cross-grain tier with tier-code legs (#905) UK_CROSS_GRAIN_RULE's precedence becomes country > region > constituency > la. Every region-tier code is its own leg (UK_CROSS_GRAIN_PARENT_ GEOGRAPHY_LEGS; the K02/K03/E92 parents list the tier members they contain), so a region cell is the control for the constituencies and authorities inside it. English areas resolve their leg through the crosswalk's new region_code_by_area, derived per level from the sha-pinned OA ladder (every constituency and authority carries exactly one tier code; London holds 75 constituencies and 33 authorities); Welsh, Scottish and Northern Irish areas resolve by GSS prefix, and an English code outside the crosswalk refuses instead of falling back to an England leg no control covers. Leg licences follow the same function. Chronicle stamps the Welsh, Scottish and Northern Irish population at country; on the surface those rows are the same ITL1 tier as the nine English regions and must not outrank them, so uk_local_target_surface reads the cross_grain_grain stamp the generator writes and places them at the region grain. The selector and ledger metadata keep Chronicle's level. The shared operator now treats any winning row whose geography declares legs as a declared parent, whatever grain it sits at, so region controls get the same dedupe, bridge-completeness check and receipt naming as country controls. Compile parity: align_uk_national_registry_parity_fixture renames the incumbent's ons/_age_* and voa/council_tax// rows to the tier names (applied by the receipt tool and the battery gate loader), so the 108 region x age rows and 81 regional VOA rows compare as matched. 2025 receipts: fixture_only 269 -> 80, ledger_only 56 -> 38 (the retired country rows), calibration_drift 172 -> 280 (the ONS cells drift against the incumbent's rounded subnational projections, with a ruled rationale on each row; every VOA cell matches exactly). The data-target parity concern cross_grain_council_tax_stock_england_region is ported. Co-Authored-By: Claude Fable 5.1 --- docs/uk-chronicle-feed-repin.md | 8 + .../src/microcosm/build/cross_grain.py | 10 +- ...ity_incumbent_2025_signed_differences.json | 3069 +++++++---------- .../build/uk/local_area_crosswalk.json | 1019 +++++- .../build/uk/uk_data_target_parity.json | 13 +- .../build/uk_runtime/battery_bindings.py | 5 +- .../build/uk_runtime/data_target_parity.py | 13 +- .../build/uk_runtime/ledger_targets.py | 198 +- .../tests/test_uk_ledger_targets.py | 345 +- .../tests/test_uk_local_area_crosswalk.py | 26 + .../tests/test_uk_target_references.py | 4 + ...edger_compile_parity_signed_differences.py | 17 +- tools/generate_uk_local_area_crosswalk.py | 46 +- 13 files changed, 2837 insertions(+), 1936 deletions(-) diff --git a/docs/uk-chronicle-feed-repin.md b/docs/uk-chronicle-feed-repin.md index 1c5312c176..9b4d2789b5 100644 --- a/docs/uk-chronicle-feed-repin.md +++ b/docs/uk-chronicle-feed-repin.md @@ -41,6 +41,14 @@ Verify the complete compiled target diff on both surfaces, including targets outside the intended policy area, and record the value moves in the changelog fragment. +Two-level (country + region) contract targets fan out over the region tier +(`UK_REGION_TIER` in `uk_runtime/geography_ladder.py`), one reference per area +(microcosm#905); their cells resolve Chronicle's region- and country-stamped +facts, so a re-pin must carry all twelve areas or the national generator +refuses. The cross-grain legs of English constituencies and authorities come +from `region_code_by_area` in `local_area_crosswalk.json`, regenerated from +the sha-pinned ladder with `tools/generate_uk_local_area_crosswalk.py`. + The national calibration runner refuses a feed whose facts or manifest digest differs from the committed pin. `--allow-unpinned-feed` is an explicit diagnostic override recorded in the run manifest; it is not a re-pin procedure. diff --git a/packages/microcosm-build/src/microcosm/build/cross_grain.py b/packages/microcosm-build/src/microcosm/build/cross_grain.py index 5e11cd9085..23dde3eb4e 100644 --- a/packages/microcosm-build/src/microcosm/build/cross_grain.py +++ b/packages/microcosm-build/src/microcosm/build/cross_grain.py @@ -770,7 +770,15 @@ def _winning_controls( } for position in group.winning_positions ] - if group.winning_grain == rule.grain_precedence[0]: + # A winning row whose geography declares its legs is a parent control in + # its own right, whatever grain it sits at: the top grain always is, and a + # middle tier (a region between country and constituency) is when the + # country declares a leg map for every one of its codes. Rows with no + # declared legs stay on the area-derived path below. + declared_parents = group.winning_grain == rule.grain_precedence[0] or all( + row["geography_id"] in rule.parent_geography_legs for row in rows + ) + if declared_parents: by_geography: dict[str, list[dict[str, Any]]] = {} for row in rows: by_geography.setdefault(row["geography_id"], []).append(row) diff --git a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json index d6ae6f7e13..fb287cd0d2 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json +++ b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_incumbent_2025_signed_differences.json @@ -1,11 +1,11 @@ { - "compiled_count": 424, + "compiled_count": 595, "counts_by_kind": { - "calibration_drift": 172, - "fixture_only": 269, - "ledger_only": 56 + "calibration_drift": 280, + "fixture_only": 80, + "ledger_only": 38 }, - "difference_count": 497, + "difference_count": 398, "differences": [ { "fixture_value": 1608000.0, @@ -372,2899 +372,2314 @@ "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 726000.0, + "fixture_value": 304799621177.5439, "kind": "fixture_only", - "name": "ons/east_age_0_9", + "name": "ons/household_land_value/EAST_MIDLANDS", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 741000.0, + "fixture_value": 542672059385.554, "kind": "fixture_only", - "name": "ons/east_age_10_19", + "name": "ons/household_land_value/EAST_OF_ENGLAND", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 749000.0, + "fixture_value": 1188167933642.289, "kind": "fixture_only", - "name": "ons/east_age_20_29", + "name": "ons/household_land_value/LONDON", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 890000.0, + "fixture_value": 119603822538.99867, "kind": "fixture_only", - "name": "ons/east_age_30_39", + "name": "ons/household_land_value/NORTH_EAST", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 851000.0, + "fixture_value": 422892569458.29254, "kind": "fixture_only", - "name": "ons/east_age_40_49", + "name": "ons/household_land_value/NORTH_WEST", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 867000.0, + "fixture_value": 280395193712.8084, "kind": "fixture_only", - "name": "ons/east_age_50_59", + "name": "ons/household_land_value/SCOTLAND", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 746000.0, + "fixture_value": 885848048153.7532, "kind": "fixture_only", - "name": "ons/east_age_60_69", + "name": "ons/household_land_value/SOUTH_EAST", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 643000.0, + "fixture_value": 456726035827.05096, "kind": "fixture_only", - "name": "ons/east_age_70_79", + "name": "ons/household_land_value/SOUTH_WEST", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 379000.0, + "fixture_value": 179320185054.4999, "kind": "fixture_only", - "name": "ons/east_age_80_89", + "name": "ons/household_land_value/WALES", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 532000.0, + "fixture_value": 364340113693.65784, "kind": "fixture_only", - "name": "ons/east_midlands_age_0_9", + "name": "ons/household_land_value/WEST_MIDLANDS", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 585000.0, + "fixture_value": 298105966119.05054, "kind": "fixture_only", - "name": "ons/east_midlands_age_10_19", + "name": "ons/household_land_value/YORKSHIRE", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 632000.0, + "fixture_value": 8374612.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_20_29", + "name": "ons/tenure_england_owned_outright", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 669000.0, + "fixture_value": 7667051.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_30_39", + "name": "ons/tenure_england_owned_with_mortgage", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 621000.0, + "fixture_value": 5299840.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_40_49", + "name": "ons/tenure_england_rented_privately", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 681000.0, + "fixture_value": 4274613.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_50_59", + "name": "ons/tenure_england_social_rent", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 592000.0, + "fixture_value": 25616116.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_60_69", + "name": "ons/tenure_england_total", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 500000.0, + "fixture_value": 181700000.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_70_79", + "name": "slc/student_loan_repayment/northern_ireland", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 273000.0, + "fixture_value": 203300000.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_80_89", + "name": "slc/student_loan_repayment/scotland", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 304799621177.5439, + "fixture_value": 229100000.0, "kind": "fixture_only", - "name": "ons/household_land_value/EAST_MIDLANDS", + "name": "slc/student_loan_repayment/wales", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 542672059385.554, + "fixture_value": 215380.0, "kind": "fixture_only", - "name": "ons/household_land_value/EAST_OF_ENGLAND", + "name": "voa/council_tax/WALES/A", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 1188167933642.289, + "fixture_value": 307070.0, "kind": "fixture_only", - "name": "ons/household_land_value/LONDON", + "name": "voa/council_tax/WALES/B", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 119603822538.99867, + "fixture_value": 323220.0, "kind": "fixture_only", - "name": "ons/household_land_value/NORTH_EAST", + "name": "voa/council_tax/WALES/C", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 422892569458.29254, + "fixture_value": 241220.0, "kind": "fixture_only", - "name": "ons/household_land_value/NORTH_WEST", + "name": "voa/council_tax/WALES/D", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 280395193712.8084, + "fixture_value": 200840.0, "kind": "fixture_only", - "name": "ons/household_land_value/SCOTLAND", + "name": "voa/council_tax/WALES/E", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 885848048153.7532, + "fixture_value": 122650.0, "kind": "fixture_only", - "name": "ons/household_land_value/SOUTH_EAST", + "name": "voa/council_tax/WALES/F", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 456726035827.05096, + "fixture_value": 55190.0, "kind": "fixture_only", - "name": "ons/household_land_value/SOUTH_WEST", + "name": "voa/council_tax/WALES/G", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 179320185054.4999, + "fixture_value": 13190.0, "kind": "fixture_only", - "name": "ons/household_land_value/WALES", + "name": "voa/council_tax/WALES/H", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 364340113693.65784, + "fixture_value": 1484410.0, "kind": "fixture_only", - "name": "ons/household_land_value/WEST_MIDLANDS", + "name": "voa/council_tax/WALES/total", "period": 2025, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 298105966119.05054, - "kind": "fixture_only", - "name": "ons/household_land_value/YORKSHIRE", + "kind": "ledger_only", + "ledger_value": 95031.0, + "name": "dfe.funded_childcare.early_learning_2_year_olds", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1042000.0, - "kind": "fixture_only", - "name": "ons/london_age_0_9", + "kind": "ledger_only", + "ledger_value": 396965.0, + "name": "dfe.funded_childcare.universal_only_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1038000.0, - "kind": "fixture_only", - "name": "ons/london_age_10_19", + "kind": "ledger_only", + "ledger_value": 621482.0, + "name": "dfe.funded_childcare.working_parent_children_2_to_4", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1470000.0, - "kind": "fixture_only", - "name": "ons/london_age_20_29", + "kind": "ledger_only", + "ledger_value": 150082817.48999995, + "name": "dfi_ni.bus.passenger_receipts", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1585000.0, - "kind": "fixture_only", - "name": "ons/london_age_30_39", + "kind": "ledger_only", + "ledger_value": 3612036036.2194014, + "name": "dft.bus_fare_receipts.england", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1314000.0, - "kind": "fixture_only", - "name": "ons/london_age_40_49", + "kind": "ledger_only", + "ledger_value": 1347434943.01459, + "name": "dft.bus_fare_receipts.london", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1078000.0, - "kind": "fixture_only", - "name": "ons/london_age_50_59", + "kind": "ledger_only", + "ledger_value": 3024904320.8399997, + "name": "dft.bus_net_support.england", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 778000.0, - "kind": "fixture_only", - "name": "ons/london_age_60_69", + "kind": "ledger_only", + "ledger_value": 1130214000.0, + "name": "dft.bus_net_support.london", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 509000.0, - "kind": "fixture_only", - "name": "ons/london_age_70_79", + "kind": "ledger_only", + "ledger_value": 597920.0, + "name": "dwp.uc.two_child_limit.children_affected", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 304000.0, - "kind": "fixture_only", - "name": "ons/london_age_80_89", + "kind": "ledger_only", + "ledger_value": 235270.0, + "name": "dwp.uc.two_child_limit.children_claimant_pip", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 281000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_0_9", + "kind": "ledger_only", + "ledger_value": 479460.0, + "name": "dwp.uc.two_child_limit.children_disabled_child_element", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 311000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_10_19", + "kind": "ledger_only", + "ledger_value": 891930.0, + "name": "dwp.uc.two_child_limit.children_in_3_children_households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 343000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_20_29", + "kind": "ledger_only", + "ledger_value": 468760.0, + "name": "dwp.uc.two_child_limit.children_in_4_children_households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 356000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_30_39", + "kind": "ledger_only", + "ledger_value": 185120.0, + "name": "dwp.uc.two_child_limit.children_in_5_children_households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 323000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_40_49", + "kind": "ledger_only", + "ledger_value": 119720.0, + "name": "dwp.uc.two_child_limit.children_in_6_plus_children_households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 369000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_50_59", + "kind": "ledger_only", + "ledger_value": 1665540.0, + "name": "dwp.uc.two_child_limit.children_in_affected_households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 353000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_60_69", + "kind": "ledger_only", + "ledger_value": 297310.0, + "name": "dwp.uc.two_child_limit.households_3_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 278000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_70_79", + "kind": "ledger_only", + "ledger_value": 117190.0, + "name": "dwp.uc.two_child_limit.households_4_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 153000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_80_89", + "kind": "ledger_only", + "ledger_value": 37020.0, + "name": "dwp.uc.two_child_limit.households_5_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 847000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_0_9", + "kind": "ledger_only", + "ledger_value": 18260.0, + "name": "dwp.uc.two_child_limit.households_6_plus_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 901000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_10_19", + "kind": "ledger_only", + "ledger_value": 469780.0, + "name": "dwp.uc.two_child_limit.households_affected", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 986000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_20_29", + "kind": "ledger_only", + "ledger_value": 65280.0, + "name": "dwp.uc.two_child_limit.households_claimant_pip", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1056000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_30_39", + "kind": "ledger_only", + "ledger_value": 129630.0, + "name": "dwp.uc.two_child_limit.households_disabled_child_element", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 938000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_40_49", + "kind": "ledger_only", + "ledger_value": 22503000000.0, + "name": "hmrc.cgt.liability_total", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "PR #889 adds HMRC FY2024-25 individuals-only liability of GBP 22,503,000,000 to the observed-year fit. The historical fixture has no equivalent liability row; this is a declared ledger-only observation, not a cash-receipts reconciliation." }, { - "fixture_value": 1011000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_50_59", + "kind": "ledger_only", + "ledger_value": 1800000000.0, + "name": "hmrc.salary_sacrifice.it_relief_additional_rate", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 888000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_60_69", + "kind": "ledger_only", + "ledger_value": 1600000000.0, + "name": "hmrc.salary_sacrifice.it_relief_basic_rate", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 715000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_70_79", + "kind": "ledger_only", + "ledger_value": 5500000000.0, + "name": "hmrc.salary_sacrifice.it_relief_higher_rate", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 399000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_80_89", + "kind": "ledger_only", + "ledger_value": 1151515.0, + "name": "hmrc.tfc.children_with_used_accounts", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 234000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_0_9", + "kind": "ledger_only", + "ledger_value": 599800000.0, + "name": "hmrc.tfc.government_top_up", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 244000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_10_19", + "kind": "ledger_only", + "ledger_value": 111700000.0, + "name": "nithc.public_transport_support", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 230000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_20_29", + "kind": "ledger_only", + "ledger_value": 14400000000.0, + "name": "obr.fuel_duties_cars", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 264000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_30_39", + "kind": "ledger_only", + "ledger_value": 43427000000.0, + "name": "ons.household_energy_expenditure", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 254000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_40_49", + "kind": "ledger_only", + "ledger_value": 414716.0, + "name": "ons.population.female_90_plus", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "María ruling 2026-08-21: new female 90_plus tail constrains ages 90+; the incumbent six-year terminal band left ages 91+ unconstrained." }, { - "fixture_value": 257000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_50_59", + "kind": "ledger_only", + "ledger_value": 210520.0, + "name": "ons.population.male_90_plus", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "María ruling 2026-08-21: new male 90_plus tail constrains ages 90+; the incumbent six-year terminal band left ages 91+ unconstrained." }, { - "fixture_value": 224000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_60_69", + "kind": "ledger_only", + "ledger_value": 21621100549.34064, + "name": "orr.rail_government_support", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 165000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_70_79", + "kind": "ledger_only", + "ledger_value": 499000000.0, + "name": "scotgov.bus.government_support", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 93000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_80_89", + "kind": "ledger_only", + "ledger_value": 391000000.0, + "name": "scotgov.bus.passenger_revenue", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 526000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_0_9", + "kind": "ledger_only", + "ledger_value": 131489970.0, + "name": "welshgov.bus.public_support", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 597000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_10_19", + "fixture_value": 999000.0, + "kind": "calibration_drift", + "ledger_value": 1000000.0, + "name": "dwp.esa_claimants", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 709000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_20_29", + "fixture_value": 6700000.0, + "kind": "calibration_drift", + "ledger_value": 6197311.0, + "name": "dwp.uc.households", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 736000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_30_39", + "fixture_value": 1222944.0, + "kind": "calibration_drift", + "ledger_value": 1190123.8333333333, + "name": "dwp.uc.households_children_1", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 691000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_40_49", + "fixture_value": 1058967.0, + "kind": "calibration_drift", + "ledger_value": 1049895.5, + "name": "dwp.uc.households_children_2", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 788000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_50_59", + "fixture_value": 473500.0, + "kind": "calibration_drift", + "ledger_value": 477887.6666666667, + "name": "dwp.uc.households_children_3", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 727000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_60_69", + "fixture_value": 166790.0, + "kind": "calibration_drift", + "ledger_value": 170713.66666666666, + "name": "dwp.uc.households_children_4", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 546000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_70_79", + "fixture_value": 75910.0, + "kind": "calibration_drift", + "ledger_value": 76320.08333333333, + "name": "dwp.uc.households_children_5_or_more", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 297000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_80_89", + "fixture_value": 231368.0, + "kind": "calibration_drift", + "ledger_value": 241130.91666666666, + "name": "dwp.uc.households_couple_no_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1039000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_0_9", + "fixture_value": 839379.0, + "kind": "calibration_drift", + "ledger_value": 826160.8333333334, + "name": "dwp.uc.households_couple_with_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1114000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_10_19", + "fixture_value": 2868011.0, + "kind": "calibration_drift", + "ledger_value": 2990070.1666666665, + "name": "dwp.uc.households_single_no_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1093000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_20_29", + "fixture_value": 2156879.0, + "kind": "calibration_drift", + "ledger_value": 2138780.1666666665, + "name": "dwp.uc.households_single_with_children", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1283000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_30_39", + "fixture_value": 14000.0, + "kind": "calibration_drift", + "ledger_value": 14333.222222222223, + "name": "dwp.uc.scotland_households_child_under_1", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1273000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_40_49", + "fixture_value": 7610.0, + "kind": "calibration_drift", + "ledger_value": 7506.333333333333, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_0_to_1_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1287000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_50_59", + "fixture_value": 12370.0, + "kind": "calibration_drift", + "ledger_value": 13313.333333333334, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_10_800_to_12_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1089000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_60_69", + "fixture_value": 15175.0, + "kind": "calibration_drift", + "ledger_value": 16121.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_12_000_to_13_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 927000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_70_79", + "fixture_value": 12297.0, + "kind": "calibration_drift", + "ledger_value": 13317.333333333334, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_13_200_to_14_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 559000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_80_89", + "fixture_value": 17828.0, + "kind": "calibration_drift", + "ledger_value": 19657.333333333332, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_14_400_to_15_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 576000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_0_9", + "fixture_value": 14427.0, + "kind": "calibration_drift", + "ledger_value": 16443.222222222223, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_15_600_to_16_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 646000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_10_19", + "fixture_value": 11892.0, + "kind": "calibration_drift", + "ledger_value": 13441.111111111111, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_16_800_to_18_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 694000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_20_29", + "fixture_value": 9463.0, + "kind": "calibration_drift", + "ledger_value": 10728.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_18_000_to_19_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 743000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_30_39", + "fixture_value": 8443.0, + "kind": "calibration_drift", + "ledger_value": 9653.222222222223, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_19_200_to_20_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 704000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_40_49", + "fixture_value": 8906.0, + "kind": "calibration_drift", + "ledger_value": 8797.0, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_1_200_to_2_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 794000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_50_59", + "fixture_value": 5770.0, + "kind": "calibration_drift", + "ledger_value": 6486.888888888889, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_20_400_to_21_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 741000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_60_69", + "fixture_value": 3485.0, + "kind": "calibration_drift", + "ledger_value": 3981.8888888888887, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_21_600_to_22_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 662000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_70_79", + "fixture_value": 2360.0, + "kind": "calibration_drift", + "ledger_value": 2761.4444444444443, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_22_800_to_24_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 388000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_80_89", + "fixture_value": 1815.0, + "kind": "calibration_drift", + "ledger_value": 2131.222222222222, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_24_000_to_25_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 8374612.0, - "kind": "fixture_only", - "name": "ons/tenure_england_owned_outright", + "fixture_value": 1186.0, + "kind": "calibration_drift", + "ledger_value": 1475.3333333333333, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_25_200_to_26_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 7667051.0, - "kind": "fixture_only", - "name": "ons/tenure_england_owned_with_mortgage", + "fixture_value": 935.0, + "kind": "calibration_drift", + "ledger_value": 1073.7777777777778, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_26_400_to_27_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 5299840.0, - "kind": "fixture_only", - "name": "ons/tenure_england_rented_privately", + "fixture_value": 632.0, + "kind": "calibration_drift", + "ledger_value": 746.3333333333334, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_27_600_to_28_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 4274613.0, - "kind": "fixture_only", - "name": "ons/tenure_england_social_rent", + "fixture_value": 580.0, + "kind": "calibration_drift", + "ledger_value": 605.7777777777778, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_28_800_to_30_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 25616116.0, - "kind": "fixture_only", - "name": "ons/tenure_england_total", + "fixture_value": 11750.0, + "kind": "calibration_drift", + "ledger_value": 12256.0, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_2_400_to_3_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 325000.0, - "kind": "fixture_only", - "name": "ons/wales_age_0_9", + "fixture_value": 10802.0, + "kind": "calibration_drift", + "ledger_value": 10945.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_3_600_to_4_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 362000.0, - "kind": "fixture_only", - "name": "ons/wales_age_10_19", + "fixture_value": 12168.0, + "kind": "calibration_drift", + "ledger_value": 12492.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 389000.0, - "kind": "fixture_only", - "name": "ons/wales_age_20_29", + "fixture_value": 12461.0, + "kind": "calibration_drift", + "ledger_value": 12979.666666666666, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_6_000_to_7_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 408000.0, - "kind": "fixture_only", - "name": "ons/wales_age_30_39", + "fixture_value": 15787.0, + "kind": "calibration_drift", + "ledger_value": 16484.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_7_200_to_8_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 374000.0, - "kind": "fixture_only", - "name": "ons/wales_age_40_49", + "fixture_value": 14248.0, + "kind": "calibration_drift", + "ledger_value": 15272.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_8_400_to_9_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 432000.0, - "kind": "fixture_only", - "name": "ons/wales_age_50_59", + "fixture_value": 17559.0, + "kind": "calibration_drift", + "ledger_value": 19142.333333333332, + "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_9_600_to_10_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 407000.0, - "kind": "fixture_only", - "name": "ons/wales_age_60_69", + "fixture_value": 18714.0, + "kind": "calibration_drift", + "ledger_value": 19073.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_0_to_1_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 343000.0, - "kind": "fixture_only", - "name": "ons/wales_age_70_79", + "fixture_value": 42188.0, + "kind": "calibration_drift", + "ledger_value": 40805.444444444445, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_10_800_to_12_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 190000.0, - "kind": "fixture_only", - "name": "ons/wales_age_80_89", + "fixture_value": 41520.0, + "kind": "calibration_drift", + "ledger_value": 40009.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_12_000_to_13_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 700000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_0_9", + "fixture_value": 41159.0, + "kind": "calibration_drift", + "ledger_value": 39972.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_13_200_to_14_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 743000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_10_19", + "fixture_value": 42515.0, + "kind": "calibration_drift", + "ledger_value": 40518.77777777778, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_14_400_to_15_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 774000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_20_29", + "fixture_value": 38527.0, + "kind": "calibration_drift", + "ledger_value": 37118.0, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_15_600_to_16_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 834000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_30_39", + "fixture_value": 38894.0, + "kind": "calibration_drift", + "ledger_value": 37177.77777777778, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_16_800_to_18_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 758000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_40_49", + "fixture_value": 38659.0, + "kind": "calibration_drift", + "ledger_value": 37164.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_18_000_to_19_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 800000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_50_59", + "fixture_value": 34318.0, + "kind": "calibration_drift", + "ledger_value": 33309.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_19_200_to_20_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 685000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_60_69", + "fixture_value": 22489.0, + "kind": "calibration_drift", + "ledger_value": 22775.777777777777, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_1_200_to_2_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 570000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_70_79", + "fixture_value": 30116.0, + "kind": "calibration_drift", + "ledger_value": 29102.555555555555, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_20_400_to_21_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 337000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_80_89", + "fixture_value": 28519.0, + "kind": "calibration_drift", + "ledger_value": 27534.666666666668, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_21_600_to_22_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 618000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_0_9", + "fixture_value": 26014.0, + "kind": "calibration_drift", + "ledger_value": 25584.777777777777, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_22_800_to_24_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 666000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_10_19", + "fixture_value": 23159.0, + "kind": "calibration_drift", + "ledger_value": 22927.777777777777, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_24_000_to_25_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 733000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_20_29", + "fixture_value": 20618.0, + "kind": "calibration_drift", + "ledger_value": 20334.666666666668, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_25_200_to_26_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 764000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_30_39", + "fixture_value": 17493.0, + "kind": "calibration_drift", + "ledger_value": 17535.0, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_26_400_to_27_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 686000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_40_49", + "fixture_value": 15437.0, + "kind": "calibration_drift", + "ledger_value": 15399.888888888889, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_27_600_to_28_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 745000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_50_59", + "fixture_value": 12836.0, + "kind": "calibration_drift", + "ledger_value": 12836.222222222223, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_28_800_to_30_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 658000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_60_69", + "fixture_value": 26734.0, + "kind": "calibration_drift", + "ledger_value": 26502.666666666668, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_2_400_to_3_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 536000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_70_79", + "fixture_value": 29189.0, + "kind": "calibration_drift", + "ledger_value": 29027.0, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_3_600_to_4_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 302000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_80_89", + "fixture_value": 33137.0, + "kind": "calibration_drift", + "ledger_value": 32427.0, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_4_800_to_6_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 181700000.0, - "kind": "fixture_only", - "name": "slc/student_loan_repayment/northern_ireland", + "fixture_value": 35834.0, + "kind": "calibration_drift", + "ledger_value": 34956.88888888889, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_6_000_to_7_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 203300000.0, - "kind": "fixture_only", - "name": "slc/student_loan_repayment/scotland", + "fixture_value": 38338.0, + "kind": "calibration_drift", + "ledger_value": 37410.77777777778, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_7_200_to_8_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 229100000.0, - "kind": "fixture_only", - "name": "slc/student_loan_repayment/wales", + "fixture_value": 40685.0, + "kind": "calibration_drift", + "ledger_value": 39910.333333333336, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_8_400_to_9_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 804340.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/A", + "fixture_value": 40564.0, + "kind": "calibration_drift", + "ledger_value": 39368.0, + "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_9_600_to_10_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 505610.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/B", + "fixture_value": 24639.0, + "kind": "calibration_drift", + "ledger_value": 26670.222222222223, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_0_to_1_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 403840.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/C", + "fixture_value": 126949.0, + "kind": "calibration_drift", + "ledger_value": 123718.11111111111, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_10_800_to_12_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 247850.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/D", + "fixture_value": 131129.0, + "kind": "calibration_drift", + "ledger_value": 125798.44444444444, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_12_000_to_13_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 154970.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/E", + "fixture_value": 131289.0, + "kind": "calibration_drift", + "ledger_value": 129133.66666666667, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_13_200_to_14_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 73920.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/F", + "fixture_value": 119355.0, + "kind": "calibration_drift", + "ledger_value": 115856.66666666667, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_14_400_to_15_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 39400.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/G", + "fixture_value": 130802.0, + "kind": "calibration_drift", + "ledger_value": 125660.22222222222, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_15_600_to_16_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 3480.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/H", + "fixture_value": 141848.0, + "kind": "calibration_drift", + "ledger_value": 135836.77777777778, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_16_800_to_18_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 2233400.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_MIDLANDS/total", + "fixture_value": 136835.0, + "kind": "calibration_drift", + "ledger_value": 135444.88888888888, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_18_000_to_19_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 403180.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/A", + "fixture_value": 107556.0, + "kind": "calibration_drift", + "ledger_value": 106341.88888888889, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_19_200_to_20_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 598950.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/B", + "fixture_value": 34670.0, + "kind": "calibration_drift", + "ledger_value": 36208.11111111111, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_1_200_to_2_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 739570.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/C", + "fixture_value": 86616.0, + "kind": "calibration_drift", + "ledger_value": 85490.44444444444, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 506540.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/D", + "fixture_value": 80294.0, + "kind": "calibration_drift", + "ledger_value": 80226.88888888889, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_21_600_to_22_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 313840.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/E", + "fixture_value": 70309.0, + "kind": "calibration_drift", + "ledger_value": 71259.55555555556, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_22_800_to_24_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 172960.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/F", + "fixture_value": 50510.0, + "kind": "calibration_drift", + "ledger_value": 51301.666666666664, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_24_000_to_25_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 113720.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/G", + "fixture_value": 42522.0, + "kind": "calibration_drift", + "ledger_value": 43305.22222222222, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_25_200_to_26_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 14830.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/H", + "fixture_value": 33508.0, + "kind": "calibration_drift", + "ledger_value": 34910.555555555555, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_26_400_to_27_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 2863600.0, - "kind": "fixture_only", - "name": "voa/council_tax/EAST_OF_ENGLAND/total", + "fixture_value": 27063.0, + "kind": "calibration_drift", + "ledger_value": 28513.0, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_27_600_to_28_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 144550.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/A", + "fixture_value": 21663.0, + "kind": "calibration_drift", + "ledger_value": 22593.0, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_28_800_to_30_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 499130.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/B", + "fixture_value": 43623.0, + "kind": "calibration_drift", + "ledger_value": 46312.77777777778, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_2_400_to_3_600", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1040280.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/C", + "fixture_value": 55622.0, + "kind": "calibration_drift", + "ledger_value": 60310.11111111111, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_3_600_to_4_800", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 975750.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/D", + "fixture_value": 67901.0, + "kind": "calibration_drift", + "ledger_value": 67858.66666666667, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_4_800_to_6_000", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 585130.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/E", + "fixture_value": 89314.0, + "kind": "calibration_drift", + "ledger_value": 89577.44444444444, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_6_000_to_7_200", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 298920.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/F", + "fixture_value": 118641.0, + "kind": "calibration_drift", + "ledger_value": 116076.0, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_7_200_to_8_400", "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 225170.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 68500.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 3837430.0, - "kind": "fixture_only", - "name": "voa/council_tax/LONDON/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 667540.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 206790.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 196180.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 113460.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 61090.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 26600.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 14600.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1570.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1287830.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_EAST/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1386260.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 705450.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 616070.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 363970.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 216990.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 104330.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 65750.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 7350.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 3466140.0, - "kind": "fixture_only", - "name": "voa/council_tax/NORTH_WEST/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 367610.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 687430.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1075940.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 843560.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 551730.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 337260.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 265610.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 40390.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 4169520.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_EAST/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 473020.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 644890.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 624030.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 432070.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 292090.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 147920.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 81960.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 8430.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 2704390.0, - "kind": "fixture_only", - "name": "voa/council_tax/SOUTH_WEST/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 215380.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 307070.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 323220.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 241220.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 200840.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 122650.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 55190.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 13190.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1484410.0, - "kind": "fixture_only", - "name": "voa/council_tax/WALES/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 786010.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 654140.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 526260.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 302500.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 193700.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 105630.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 62780.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 6170.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 2637190.0, - "kind": "fixture_only", - "name": "voa/council_tax/WEST_MIDLANDS/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1070830.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/A", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 514190.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/B", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 432290.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/C", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 249530.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/D", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 158600.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/E", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 75690.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/F", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 42180.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/G", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 3770.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/H", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 2547080.0, - "kind": "fixture_only", - "name": "voa/council_tax/YORKSHIRE/total", - "period": 2025, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 95031.0, - "name": "dfe.funded_childcare.early_learning_2_year_olds", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 396965.0, - "name": "dfe.funded_childcare.universal_only_children", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 621482.0, - "name": "dfe.funded_childcare.working_parent_children_2_to_4", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 150082817.48999995, - "name": "dfi_ni.bus.passenger_receipts", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 3612036036.2194014, - "name": "dft.bus_fare_receipts.england", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 1347434943.01459, - "name": "dft.bus_fare_receipts.london", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 3024904320.8399997, - "name": "dft.bus_net_support.england", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 1130214000.0, - "name": "dft.bus_net_support.london", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 597920.0, - "name": "dwp.uc.two_child_limit.children_affected", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 235270.0, - "name": "dwp.uc.two_child_limit.children_claimant_pip", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 479460.0, - "name": "dwp.uc.two_child_limit.children_disabled_child_element", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 891930.0, - "name": "dwp.uc.two_child_limit.children_in_3_children_households", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 468760.0, - "name": "dwp.uc.two_child_limit.children_in_4_children_households", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 185120.0, - "name": "dwp.uc.two_child_limit.children_in_5_children_households", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 119720.0, - "name": "dwp.uc.two_child_limit.children_in_6_plus_children_households", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 1665540.0, - "name": "dwp.uc.two_child_limit.children_in_affected_households", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 297310.0, - "name": "dwp.uc.two_child_limit.households_3_children", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 117190.0, - "name": "dwp.uc.two_child_limit.households_4_children", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 37020.0, - "name": "dwp.uc.two_child_limit.households_5_children", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 18260.0, - "name": "dwp.uc.two_child_limit.households_6_plus_children", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 469780.0, - "name": "dwp.uc.two_child_limit.households_affected", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 65280.0, - "name": "dwp.uc.two_child_limit.households_claimant_pip", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 129630.0, - "name": "dwp.uc.two_child_limit.households_disabled_child_element", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 22503000000.0, - "name": "hmrc.cgt.liability_total", - "period": 2025, - "reason": "PR #889 adds HMRC FY2024-25 individuals-only liability of GBP 22,503,000,000 to the observed-year fit. The historical fixture has no equivalent liability row; this is a declared ledger-only observation, not a cash-receipts reconciliation." - }, - { - "kind": "ledger_only", - "ledger_value": 1800000000.0, - "name": "hmrc.salary_sacrifice.it_relief_additional_rate", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 1600000000.0, - "name": "hmrc.salary_sacrifice.it_relief_basic_rate", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 5500000000.0, - "name": "hmrc.salary_sacrifice.it_relief_higher_rate", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 1151515.0, - "name": "hmrc.tfc.children_with_used_accounts", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 599800000.0, - "name": "hmrc.tfc.government_top_up", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 111700000.0, - "name": "nithc.public_transport_support", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 14400000000.0, - "name": "obr.fuel_duties_cars", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 43427000000.0, - "name": "ons.household_energy_expenditure", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 7553013.0, - "name": "ons.population.age_0_9_by_region", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." - }, - { - "kind": "ledger_only", - "ledger_value": 8331437.0, - "name": "ons.population.age_10_19_by_region", - "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 8715225.0, - "name": "ons.population.age_20_29_by_region", + "fixture_value": 99069.0, + "kind": "calibration_drift", + "ledger_value": 97511.0, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_8_400_to_9_600", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 9572397.0, - "name": "ons.population.age_30_39_by_region", + "fixture_value": 102251.0, + "kind": "calibration_drift", + "ledger_value": 102343.0, + "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_9_600_to_10_800", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 8622506.0, - "name": "ons.population.age_40_49_by_region", + "fixture_value": 102312.0, + "kind": "calibration_drift", + "ledger_value": 89479.33333333333, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_0_to_1_200", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 9036816.0, - "name": "ons.population.age_50_59_by_region", + "fixture_value": 95698.0, + "kind": "calibration_drift", + "ledger_value": 104891.11111111111, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_10_800_to_12_000", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 7861034.0, - "name": "ons.population.age_60_69_by_region", + "fixture_value": 106663.0, + "kind": "calibration_drift", + "ledger_value": 122035.55555555556, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_12_000_to_13_200", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 5998605.0, - "name": "ons.population.age_70_79_by_region", + "fixture_value": 181180.0, + "kind": "calibration_drift", + "ledger_value": 197163.22222222222, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_13_200_to_14_400", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 2965168.0, - "name": "ons.population.age_80_89_by_region", + "fixture_value": 189861.0, + "kind": "calibration_drift", + "ledger_value": 209497.33333333334, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_14_400_to_15_600", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 414716.0, - "name": "ons.population.female_90_plus", + "fixture_value": 129174.0, + "kind": "calibration_drift", + "ledger_value": 149963.22222222222, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_15_600_to_16_800", "period": 2025, - "reason": "María ruling 2026-08-21: new female 90_plus tail constrains ages 90+; the incumbent six-year terminal band left ages 91+ unconstrained." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 210520.0, - "name": "ons.population.male_90_plus", + "fixture_value": 84690.0, + "kind": "calibration_drift", + "ledger_value": 108689.66666666667, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_16_800_to_18_000", "period": 2025, - "reason": "María ruling 2026-08-21: new male 90_plus tail constrains ages 90+; the incumbent six-year terminal band left ages 91+ unconstrained." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 21621100549.34064, - "name": "orr.rail_government_support", + "fixture_value": 46244.0, + "kind": "calibration_drift", + "ledger_value": 61718.666666666664, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_18_000_to_19_200", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 499000000.0, - "name": "scotgov.bus.government_support", + "fixture_value": 26481.0, + "kind": "calibration_drift", + "ledger_value": 34050.444444444445, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_19_200_to_20_400", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 391000000.0, - "name": "scotgov.bus.passenger_revenue", + "fixture_value": 120819.0, + "kind": "calibration_drift", + "ledger_value": 127403.22222222222, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_1_200_to_2_400", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 6103320.0, - "name": "voa.council_tax_stock.band_a", + "fixture_value": 18143.0, + "kind": "calibration_drift", + "ledger_value": 22338.333333333332, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_20_400_to_21_600", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 5016580.0, - "name": "voa.council_tax_stock.band_b", + "fixture_value": 12325.0, + "kind": "calibration_drift", + "ledger_value": 14685.777777777777, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_21_600_to_22_800", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 5654450.0, - "name": "voa.council_tax_stock.band_c", + "fixture_value": 9555.0, + "kind": "calibration_drift", + "ledger_value": 11133.666666666666, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_22_800_to_24_000", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 4035220.0, - "name": "voa.council_tax_stock.band_d", + "fixture_value": 6230.0, + "kind": "calibration_drift", + "ledger_value": 6951.222222222223, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_24_000_to_25_200", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 2528140.0, - "name": "voa.council_tax_stock.band_e", + "fixture_value": 5884.0, + "kind": "calibration_drift", + "ledger_value": 6508.222222222223, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_25_200_to_26_400", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 1343220.0, - "name": "voa.council_tax_stock.band_f", + "fixture_value": 5362.0, + "kind": "calibration_drift", + "ledger_value": 5913.444444444444, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_26_400_to_27_600", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 911160.0, - "name": "voa.council_tax_stock.band_g", + "fixture_value": 1786.0, + "kind": "calibration_drift", + "ledger_value": 1884.111111111111, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_27_600_to_28_800", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 154470.0, - "name": "voa.council_tax_stock.band_h", + "fixture_value": 1491.0, + "kind": "calibration_drift", + "ledger_value": 1653.7777777777778, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_28_800_to_30_000", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 25746570.0, - "name": "voa.council_tax_stock.total", + "fixture_value": 173925.0, + "kind": "calibration_drift", + "ledger_value": 197136.66666666666, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_2_400_to_3_600", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 131489970.0, - "name": "welshgov.bus.public_support", + "fixture_value": 375706.0, + "kind": "calibration_drift", + "ledger_value": 377063.1111111111, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_3_600_to_4_800", "period": 2025, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 999000.0, + "fixture_value": 200713.0, "kind": "calibration_drift", - "ledger_value": 1000000.0, - "name": "dwp.esa_claimants", + "ledger_value": 195983.22222222222, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_4_800_to_6_000", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 6700000.0, + "fixture_value": 107860.0, "kind": "calibration_drift", - "ledger_value": 6197311.0, - "name": "dwp.uc.households", + "ledger_value": 114033.33333333333, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_6_000_to_7_200", "period": 2025, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1222944.0, + "fixture_value": 144036.0, "kind": "calibration_drift", - "ledger_value": 1190123.8333333333, - "name": "dwp.uc.households_children_1", + "ledger_value": 149043.77777777778, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_7_200_to_8_400", "period": 2025, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 1058967.0, + "fixture_value": 377221.0, "kind": "calibration_drift", - "ledger_value": 1049895.5, - "name": "dwp.uc.households_children_2", + "ledger_value": 399750.22222222225, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_8_400_to_9_600", "period": 2025, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 473500.0, + "fixture_value": 341138.0, "kind": "calibration_drift", - "ledger_value": 477887.6666666667, - "name": "dwp.uc.households_children_3", + "ledger_value": 386411.6666666667, + "name": "dwp/uc_payment_dist/SINGLE_annual_payment_9_600_to_10_800", "period": 2025, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 166790.0, + "fixture_value": 67727478991.59665, "kind": "calibration_drift", - "ledger_value": 170713.66666666666, - "name": "dwp.uc.households_children_4", + "ledger_value": 119258000000.0, + "name": "hmrc.cgt.gains_total", "period": 2025, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "PR #889 selects HMRC FY2024-25 individuals-only observed gains of GBP 119,258,000,000, measured in 2024 at calibration index 2025. The frozen incumbent fixture retains its historical forecast/uprated GBP 67,727,478,991.60 value. This explicit observation-year and population-scope change does not rewrite the historical fixture." }, { - "fixture_value": 75910.0, + "fixture_value": 378000.0, "kind": "calibration_drift", - "ledger_value": 76320.08333333333, - "name": "dwp.uc.households_children_5_or_more", + "ledger_value": 551000.0, + "name": "hmrc.cgt.taxpayers_total", "period": 2025, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "PR #889 selects the HMRC FY2024-25 individuals-only observation of 551,000 taxpayers, measured in 2024 at calibration index 2025. The frozen incumbent fixture retains its historical 378,000 count." }, { - "fixture_value": 231368.0, + "fixture_value": 1236000000.0, "kind": "calibration_drift", - "ledger_value": 241130.91666666666, - "name": "dwp.uc.households_couple_no_children", + "ledger_value": 1000000000.0, + "name": "hmrc.salary_sacrifice.nics_relief_employee", "period": 2025, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 839379.0, + "fixture_value": 2987000000.0, "kind": "calibration_drift", - "ledger_value": 826160.8333333334, - "name": "dwp.uc.households_couple_with_children", + "ledger_value": 3400000000.0, + "name": "hmrc.salary_sacrifice.nics_relief_employer", "period": 2025, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 2868011.0, + "fixture_value": 3379200.0, "kind": "calibration_drift", - "ledger_value": 2990070.1666666665, - "name": "dwp.uc.households_single_no_children", + "ledger_value": 3300000.0, + "name": "hmrc.salary_sacrifice.users_above_cap", "period": 2025, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 2156879.0, + "fixture_value": 4403200.0, "kind": "calibration_drift", - "ledger_value": 2138780.1666666665, - "name": "dwp.uc.households_single_with_children", + "ledger_value": 4300000.0, + "name": "hmrc.salary_sacrifice.users_below_cap", "period": 2025, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2025 incumbent baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 14000.0, + "fixture_value": 7884800.0, "kind": "calibration_drift", - "ledger_value": 14333.222222222223, - "name": "dwp.uc.scotland_households_child_under_1", + "ledger_value": 7700000.0, + "name": "hmrc.salary_sacrifice.users_total", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 7610.0, + "fixture_value": 557000.0, "kind": "calibration_drift", - "ledger_value": 7506.333333333333, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_0_to_1_200", + "ledger_value": 556551.0, + "name": "isc.private_school_students", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 12370.0, + "fixture_value": 2057128451236.5015, "kind": "calibration_drift", - "ledger_value": 13313.333333333334, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_10_800_to_12_000", + "ledger_value": 2103053000000.0, + "name": "ons.land.corporate_land_value", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 15175.0, + "fixture_value": 5042871548763.499, "kind": "calibration_drift", - "ledger_value": 16121.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_12_000_to_13_200", + "ledger_value": 4559831000000.0, + "name": "ons.land.household_land_value", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 12297.0, + "fixture_value": 7100000000000.0, "kind": "calibration_drift", - "ledger_value": 13317.333333333334, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_13_200_to_14_400", + "ledger_value": 7117771000000.0, + "name": "ons.land.land_value", "period": 2025, "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "fixture_value": 17828.0, + "fixture_value": 281000.0, "kind": "calibration_drift", - "ledger_value": 19657.333333333332, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_14_400_to_15_600", + "ledger_value": 285165.0, + "name": "ons.population.age_0_9_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 14427.0, + "fixture_value": 847000.0, "kind": "calibration_drift", - "ledger_value": 16443.222222222223, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_15_600_to_16_800", + "ledger_value": 865892.0, + "name": "ons.population.age_0_9_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 11892.0, + "fixture_value": 618000.0, "kind": "calibration_drift", - "ledger_value": 13441.111111111111, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_16_800_to_18_000", + "ledger_value": 626938.0, + "name": "ons.population.age_0_9_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 9463.0, + "fixture_value": 532000.0, "kind": "calibration_drift", - "ledger_value": 10728.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_18_000_to_19_200", + "ledger_value": 543004.0, + "name": "ons.population.age_0_9_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 8443.0, + "fixture_value": 700000.0, "kind": "calibration_drift", - "ledger_value": 9653.222222222223, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_19_200_to_20_400", + "ledger_value": 718837.0, + "name": "ons.population.age_0_9_by_region@E12000005", + "period": 2025, + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." + }, + { + "fixture_value": 726000.0, + "kind": "calibration_drift", + "ledger_value": 744698.0, + "name": "ons.population.age_0_9_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 8906.0, + "fixture_value": 1042000.0, "kind": "calibration_drift", - "ledger_value": 8797.0, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_1_200_to_2_400", + "ledger_value": 1054493.0, + "name": "ons.population.age_0_9_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 5770.0, + "fixture_value": 1039000.0, "kind": "calibration_drift", - "ledger_value": 6486.888888888889, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_20_400_to_21_600", + "ledger_value": 1059434.0, + "name": "ons.population.age_0_9_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 3485.0, + "fixture_value": 576000.0, "kind": "calibration_drift", - "ledger_value": 3981.8888888888887, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_21_600_to_22_800", + "ledger_value": 575506.0, + "name": "ons.population.age_0_9_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 2360.0, + "fixture_value": 234000.0, "kind": "calibration_drift", - "ledger_value": 2761.4444444444443, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_22_800_to_24_000", + "ledger_value": 229505.0, + "name": "ons.population.age_0_9_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1815.0, + "fixture_value": 526000.0, "kind": "calibration_drift", - "ledger_value": 2131.222222222222, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_24_000_to_25_200", + "ledger_value": 527989.0, + "name": "ons.population.age_0_9_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1186.0, + "fixture_value": 325000.0, "kind": "calibration_drift", - "ledger_value": 1475.3333333333333, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_25_200_to_26_400", + "ledger_value": 321552.0, + "name": "ons.population.age_0_9_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 935.0, + "fixture_value": 311000.0, "kind": "calibration_drift", - "ledger_value": 1073.7777777777778, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_26_400_to_27_600", + "ledger_value": 326306.0, + "name": "ons.population.age_10_19_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 632.0, + "fixture_value": 901000.0, "kind": "calibration_drift", - "ledger_value": 746.3333333333334, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_27_600_to_28_800", + "ledger_value": 952864.0, + "name": "ons.population.age_10_19_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 580.0, + "fixture_value": 666000.0, "kind": "calibration_drift", - "ledger_value": 605.7777777777778, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_28_800_to_30_000", + "ledger_value": 696780.0, + "name": "ons.population.age_10_19_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 11750.0, + "fixture_value": 585000.0, "kind": "calibration_drift", - "ledger_value": 12256.0, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_2_400_to_3_600", + "ledger_value": 615630.0, + "name": "ons.population.age_10_19_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 10802.0, + "fixture_value": 743000.0, "kind": "calibration_drift", - "ledger_value": 10945.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_3_600_to_4_800", + "ledger_value": 785062.0, + "name": "ons.population.age_10_19_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 12168.0, + "fixture_value": 741000.0, "kind": "calibration_drift", - "ledger_value": 12492.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000", + "ledger_value": 785091.0, + "name": "ons.population.age_10_19_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 12461.0, + "fixture_value": 1038000.0, "kind": "calibration_drift", - "ledger_value": 12979.666666666666, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_6_000_to_7_200", + "ledger_value": 1068691.0, + "name": "ons.population.age_10_19_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 15787.0, + "fixture_value": 1114000.0, "kind": "calibration_drift", - "ledger_value": 16484.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_7_200_to_8_400", + "ledger_value": 1183235.0, + "name": "ons.population.age_10_19_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 14248.0, + "fixture_value": 646000.0, "kind": "calibration_drift", - "ledger_value": 15272.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_8_400_to_9_600", + "ledger_value": 677228.0, + "name": "ons.population.age_10_19_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 17559.0, + "fixture_value": 244000.0, "kind": "calibration_drift", - "ledger_value": 19142.333333333332, - "name": "dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_9_600_to_10_800", + "ledger_value": 252764.0, + "name": "ons.population.age_10_19_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 18714.0, + "fixture_value": 597000.0, "kind": "calibration_drift", - "ledger_value": 19073.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_0_to_1_200", + "ledger_value": 612935.0, + "name": "ons.population.age_10_19_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 42188.0, + "fixture_value": 362000.0, "kind": "calibration_drift", - "ledger_value": 40805.444444444445, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_10_800_to_12_000", + "ledger_value": 374851.0, + "name": "ons.population.age_10_19_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 41520.0, + "fixture_value": 343000.0, "kind": "calibration_drift", - "ledger_value": 40009.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_12_000_to_13_200", + "ledger_value": 343015.0, + "name": "ons.population.age_20_29_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 41159.0, + "fixture_value": 986000.0, "kind": "calibration_drift", - "ledger_value": 39972.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_13_200_to_14_400", + "ledger_value": 986590.0, + "name": "ons.population.age_20_29_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 42515.0, + "fixture_value": 733000.0, "kind": "calibration_drift", - "ledger_value": 40518.77777777778, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_14_400_to_15_600", + "ledger_value": 717479.0, + "name": "ons.population.age_20_29_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 38527.0, + "fixture_value": 632000.0, "kind": "calibration_drift", - "ledger_value": 37118.0, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_15_600_to_16_800", + "ledger_value": 612108.0, + "name": "ons.population.age_20_29_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 38894.0, + "fixture_value": 774000.0, "kind": "calibration_drift", - "ledger_value": 37177.77777777778, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_16_800_to_18_000", + "ledger_value": 766058.0, + "name": "ons.population.age_20_29_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 38659.0, + "fixture_value": 749000.0, "kind": "calibration_drift", - "ledger_value": 37164.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_18_000_to_19_200", + "ledger_value": 727218.0, + "name": "ons.population.age_20_29_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 34318.0, + "fixture_value": 1470000.0, "kind": "calibration_drift", - "ledger_value": 33309.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_19_200_to_20_400", + "ledger_value": 1508607.0, + "name": "ons.population.age_20_29_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 22489.0, + "fixture_value": 1093000.0, "kind": "calibration_drift", - "ledger_value": 22775.777777777777, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_1_200_to_2_400", + "ledger_value": 1066121.0, + "name": "ons.population.age_20_29_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 30116.0, + "fixture_value": 694000.0, "kind": "calibration_drift", - "ledger_value": 29102.555555555555, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_20_400_to_21_600", + "ledger_value": 684393.0, + "name": "ons.population.age_20_29_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 28519.0, + "fixture_value": 230000.0, "kind": "calibration_drift", - "ledger_value": 27534.666666666668, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_21_600_to_22_800", + "ledger_value": 219525.0, + "name": "ons.population.age_20_29_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 26014.0, + "fixture_value": 709000.0, "kind": "calibration_drift", - "ledger_value": 25584.777777777777, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_22_800_to_24_000", + "ledger_value": 703554.0, + "name": "ons.population.age_20_29_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 23159.0, + "fixture_value": 389000.0, "kind": "calibration_drift", - "ledger_value": 22927.777777777777, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_24_000_to_25_200", + "ledger_value": 380557.0, + "name": "ons.population.age_20_29_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 20618.0, + "fixture_value": 356000.0, "kind": "calibration_drift", - "ledger_value": 20334.666666666668, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_25_200_to_26_400", + "ledger_value": 363357.0, + "name": "ons.population.age_30_39_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 17493.0, + "fixture_value": 1056000.0, "kind": "calibration_drift", - "ledger_value": 17535.0, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_26_400_to_27_600", + "ledger_value": 1064968.0, + "name": "ons.population.age_30_39_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 15437.0, + "fixture_value": 764000.0, "kind": "calibration_drift", - "ledger_value": 15399.888888888889, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_27_600_to_28_800", + "ledger_value": 770809.0, + "name": "ons.population.age_30_39_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 12836.0, + "fixture_value": 669000.0, "kind": "calibration_drift", - "ledger_value": 12836.222222222223, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_28_800_to_30_000", + "ledger_value": 676709.0, + "name": "ons.population.age_30_39_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 26734.0, + "fixture_value": 834000.0, "kind": "calibration_drift", - "ledger_value": 26502.666666666668, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_2_400_to_3_600", + "ledger_value": 839114.0, + "name": "ons.population.age_30_39_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 29189.0, + "fixture_value": 890000.0, "kind": "calibration_drift", - "ledger_value": 29027.0, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_3_600_to_4_800", + "ledger_value": 895639.0, + "name": "ons.population.age_30_39_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 33137.0, + "fixture_value": 1585000.0, "kind": "calibration_drift", - "ledger_value": 32427.0, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_4_800_to_6_000", + "ledger_value": 1537372.0, + "name": "ons.population.age_30_39_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 35834.0, + "fixture_value": 1283000.0, "kind": "calibration_drift", - "ledger_value": 34956.88888888889, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_6_000_to_7_200", + "ledger_value": 1284552.0, + "name": "ons.population.age_30_39_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 38338.0, + "fixture_value": 743000.0, "kind": "calibration_drift", - "ledger_value": 37410.77777777778, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_7_200_to_8_400", + "ledger_value": 742082.0, + "name": "ons.population.age_30_39_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 40685.0, + "fixture_value": 264000.0, "kind": "calibration_drift", - "ledger_value": 39910.333333333336, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_8_400_to_9_600", + "ledger_value": 254067.0, + "name": "ons.population.age_30_39_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 40564.0, + "fixture_value": 736000.0, "kind": "calibration_drift", - "ledger_value": 39368.0, - "name": "dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_9_600_to_10_800", + "ledger_value": 733480.0, + "name": "ons.population.age_30_39_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 24639.0, + "fixture_value": 408000.0, "kind": "calibration_drift", - "ledger_value": 26670.222222222223, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_0_to_1_200", + "ledger_value": 410248.0, + "name": "ons.population.age_30_39_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 126949.0, + "fixture_value": 323000.0, "kind": "calibration_drift", - "ledger_value": 123718.11111111111, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_10_800_to_12_000", + "ledger_value": 320860.0, + "name": "ons.population.age_40_49_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 131129.0, + "fixture_value": 938000.0, "kind": "calibration_drift", - "ledger_value": 125798.44444444444, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_12_000_to_13_200", + "ledger_value": 930967.0, + "name": "ons.population.age_40_49_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 131289.0, + "fixture_value": 686000.0, "kind": "calibration_drift", - "ledger_value": 129133.66666666667, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_13_200_to_14_400", + "ledger_value": 674349.0, + "name": "ons.population.age_40_49_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 119355.0, + "fixture_value": 621000.0, "kind": "calibration_drift", - "ledger_value": 115856.66666666667, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_14_400_to_15_600", + "ledger_value": 610611.0, + "name": "ons.population.age_40_49_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 130802.0, + "fixture_value": 758000.0, "kind": "calibration_drift", - "ledger_value": 125660.22222222222, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_15_600_to_16_800", + "ledger_value": 746341.0, + "name": "ons.population.age_40_49_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 141848.0, + "fixture_value": 851000.0, "kind": "calibration_drift", - "ledger_value": 135836.77777777778, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_16_800_to_18_000", + "ledger_value": 838578.0, + "name": "ons.population.age_40_49_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 136835.0, + "fixture_value": 1314000.0, "kind": "calibration_drift", - "ledger_value": 135444.88888888888, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_18_000_to_19_200", + "ledger_value": 1268973.0, + "name": "ons.population.age_40_49_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 107556.0, + "fixture_value": 1273000.0, "kind": "calibration_drift", - "ledger_value": 106341.88888888889, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_19_200_to_20_400", + "ledger_value": 1255951.0, + "name": "ons.population.age_40_49_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 34670.0, + "fixture_value": 704000.0, "kind": "calibration_drift", - "ledger_value": 36208.11111111111, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_1_200_to_2_400", + "ledger_value": 688417.0, + "name": "ons.population.age_40_49_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 86616.0, + "fixture_value": 254000.0, "kind": "calibration_drift", - "ledger_value": 85490.44444444444, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600", + "ledger_value": 246140.0, + "name": "ons.population.age_40_49_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 80294.0, + "fixture_value": 691000.0, "kind": "calibration_drift", - "ledger_value": 80226.88888888889, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_21_600_to_22_800", + "ledger_value": 675368.0, + "name": "ons.population.age_40_49_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 70309.0, + "fixture_value": 374000.0, "kind": "calibration_drift", - "ledger_value": 71259.55555555556, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_22_800_to_24_000", + "ledger_value": 365951.0, + "name": "ons.population.age_40_49_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 50510.0, + "fixture_value": 369000.0, "kind": "calibration_drift", - "ledger_value": 51301.666666666664, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_24_000_to_25_200", + "ledger_value": 360074.0, + "name": "ons.population.age_50_59_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 42522.0, + "fixture_value": 1011000.0, "kind": "calibration_drift", - "ledger_value": 43305.22222222222, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_25_200_to_26_400", + "ledger_value": 995810.0, + "name": "ons.population.age_50_59_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 33508.0, + "fixture_value": 745000.0, "kind": "calibration_drift", - "ledger_value": 34910.555555555555, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_26_400_to_27_600", + "ledger_value": 736903.0, + "name": "ons.population.age_50_59_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 27063.0, + "fixture_value": 681000.0, "kind": "calibration_drift", - "ledger_value": 28513.0, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_27_600_to_28_800", + "ledger_value": 676307.0, + "name": "ons.population.age_50_59_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 21663.0, + "fixture_value": 800000.0, "kind": "calibration_drift", - "ledger_value": 22593.0, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_28_800_to_30_000", + "ledger_value": 794143.0, + "name": "ons.population.age_50_59_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 43623.0, + "fixture_value": 867000.0, "kind": "calibration_drift", - "ledger_value": 46312.77777777778, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_2_400_to_3_600", + "ledger_value": 866946.0, + "name": "ons.population.age_50_59_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 55622.0, + "fixture_value": 1078000.0, "kind": "calibration_drift", - "ledger_value": 60310.11111111111, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_3_600_to_4_800", + "ledger_value": 1087518.0, + "name": "ons.population.age_50_59_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 67901.0, + "fixture_value": 1287000.0, "kind": "calibration_drift", - "ledger_value": 67858.66666666667, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_4_800_to_6_000", + "ledger_value": 1287719.0, + "name": "ons.population.age_50_59_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 89314.0, + "fixture_value": 794000.0, "kind": "calibration_drift", - "ledger_value": 89577.44444444444, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_6_000_to_7_200", + "ledger_value": 784718.0, + "name": "ons.population.age_50_59_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 118641.0, + "fixture_value": 257000.0, "kind": "calibration_drift", - "ledger_value": 116076.0, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_7_200_to_8_400", + "ledger_value": 255269.0, + "name": "ons.population.age_50_59_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 99069.0, + "fixture_value": 788000.0, "kind": "calibration_drift", - "ledger_value": 97511.0, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_8_400_to_9_600", + "ledger_value": 766715.0, + "name": "ons.population.age_50_59_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 102251.0, + "fixture_value": 432000.0, "kind": "calibration_drift", - "ledger_value": 102343.0, - "name": "dwp/uc_payment_dist/LONE_PARENT_annual_payment_9_600_to_10_800", + "ledger_value": 424694.0, + "name": "ons.population.age_50_59_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 102312.0, + "fixture_value": 353000.0, "kind": "calibration_drift", - "ledger_value": 89479.33333333333, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_0_to_1_200", + "ledger_value": 349719.0, + "name": "ons.population.age_60_69_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 95698.0, + "fixture_value": 888000.0, "kind": "calibration_drift", - "ledger_value": 104891.11111111111, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_10_800_to_12_000", + "ledger_value": 884043.0, + "name": "ons.population.age_60_69_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 106663.0, + "fixture_value": 658000.0, "kind": "calibration_drift", - "ledger_value": 122035.55555555556, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_12_000_to_13_200", + "ledger_value": 652931.0, + "name": "ons.population.age_60_69_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 181180.0, + "fixture_value": 592000.0, "kind": "calibration_drift", - "ledger_value": 197163.22222222222, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_13_200_to_14_400", + "ledger_value": 591429.0, + "name": "ons.population.age_60_69_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 189861.0, + "fixture_value": 685000.0, "kind": "calibration_drift", - "ledger_value": 209497.33333333334, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_14_400_to_15_600", + "ledger_value": 677922.0, + "name": "ons.population.age_60_69_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 129174.0, + "fixture_value": 746000.0, "kind": "calibration_drift", - "ledger_value": 149963.22222222222, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_15_600_to_16_800", + "ledger_value": 744651.0, + "name": "ons.population.age_60_69_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 84690.0, + "fixture_value": 778000.0, "kind": "calibration_drift", - "ledger_value": 108689.66666666667, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_16_800_to_18_000", + "ledger_value": 787666.0, + "name": "ons.population.age_60_69_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 46244.0, + "fixture_value": 1089000.0, "kind": "calibration_drift", - "ledger_value": 61718.666666666664, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_18_000_to_19_200", + "ledger_value": 1089421.0, + "name": "ons.population.age_60_69_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 26481.0, + "fixture_value": 741000.0, "kind": "calibration_drift", - "ledger_value": 34050.444444444445, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_19_200_to_20_400", + "ledger_value": 736639.0, + "name": "ons.population.age_60_69_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 120819.0, + "fixture_value": 224000.0, "kind": "calibration_drift", - "ledger_value": 127403.22222222222, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_1_200_to_2_400", + "ledger_value": 223111.0, + "name": "ons.population.age_60_69_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 18143.0, + "fixture_value": 727000.0, "kind": "calibration_drift", - "ledger_value": 22338.333333333332, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_20_400_to_21_600", + "ledger_value": 721727.0, + "name": "ons.population.age_60_69_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 12325.0, + "fixture_value": 407000.0, "kind": "calibration_drift", - "ledger_value": 14685.777777777777, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_21_600_to_22_800", + "ledger_value": 401775.0, + "name": "ons.population.age_60_69_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 9555.0, + "fixture_value": 278000.0, "kind": "calibration_drift", - "ledger_value": 11133.666666666666, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_22_800_to_24_000", + "ledger_value": 265573.0, + "name": "ons.population.age_70_79_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 6230.0, + "fixture_value": 715000.0, "kind": "calibration_drift", - "ledger_value": 6951.222222222223, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_24_000_to_25_200", + "ledger_value": 669277.0, + "name": "ons.population.age_70_79_by_region@E12000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 5884.0, + "fixture_value": 536000.0, "kind": "calibration_drift", - "ledger_value": 6508.222222222223, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_25_200_to_26_400", + "ledger_value": 504131.0, + "name": "ons.population.age_70_79_by_region@E12000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 5362.0, + "fixture_value": 500000.0, "kind": "calibration_drift", - "ledger_value": 5913.444444444444, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_26_400_to_27_600", + "ledger_value": 466530.0, + "name": "ons.population.age_70_79_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1786.0, + "fixture_value": 570000.0, "kind": "calibration_drift", - "ledger_value": 1884.111111111111, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_27_600_to_28_800", + "ledger_value": 528207.0, + "name": "ons.population.age_70_79_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1491.0, + "fixture_value": 643000.0, "kind": "calibration_drift", - "ledger_value": 1653.7777777777778, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_28_800_to_30_000", + "ledger_value": 599882.0, + "name": "ons.population.age_70_79_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 173925.0, + "fixture_value": 509000.0, "kind": "calibration_drift", - "ledger_value": 197136.66666666666, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_2_400_to_3_600", + "ledger_value": 485057.0, + "name": "ons.population.age_70_79_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 375706.0, + "fixture_value": 927000.0, "kind": "calibration_drift", - "ledger_value": 377063.1111111111, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_3_600_to_4_800", + "ledger_value": 865392.0, + "name": "ons.population.age_70_79_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 200713.0, + "fixture_value": 662000.0, "kind": "calibration_drift", - "ledger_value": 195983.22222222222, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_4_800_to_6_000", + "ledger_value": 618254.0, + "name": "ons.population.age_70_79_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 107860.0, + "fixture_value": 165000.0, "kind": "calibration_drift", - "ledger_value": 114033.33333333333, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_6_000_to_7_200", + "ledger_value": 155382.0, + "name": "ons.population.age_70_79_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 144036.0, + "fixture_value": 546000.0, "kind": "calibration_drift", - "ledger_value": 149043.77777777778, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_7_200_to_8_400", + "ledger_value": 519252.0, + "name": "ons.population.age_70_79_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 377221.0, + "fixture_value": 343000.0, "kind": "calibration_drift", - "ledger_value": 399750.22222222225, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_8_400_to_9_600", + "ledger_value": 321668.0, + "name": "ons.population.age_70_79_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 341138.0, + "fixture_value": 153000.0, "kind": "calibration_drift", - "ledger_value": 386411.6666666667, - "name": "dwp/uc_payment_dist/SINGLE_annual_payment_9_600_to_10_800", + "ledger_value": 122118.0, + "name": "ons.population.age_80_89_by_region@E12000001", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 67727478991.59665, + "fixture_value": 399000.0, "kind": "calibration_drift", - "ledger_value": 119258000000.0, - "name": "hmrc.cgt.gains_total", + "ledger_value": 324141.0, + "name": "ons.population.age_80_89_by_region@E12000002", "period": 2025, - "reason": "PR #889 selects HMRC FY2024-25 individuals-only observed gains of GBP 119,258,000,000, measured in 2024 at calibration index 2025. The frozen incumbent fixture retains its historical forecast/uprated GBP 67,727,478,991.60 value. This explicit observation-year and population-scope change does not rewrite the historical fixture." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 378000.0, + "fixture_value": 302000.0, "kind": "calibration_drift", - "ledger_value": 551000.0, - "name": "hmrc.cgt.taxpayers_total", + "ledger_value": 243274.0, + "name": "ons.population.age_80_89_by_region@E12000003", "period": 2025, - "reason": "PR #889 selects the HMRC FY2024-25 individuals-only observation of 551,000 taxpayers, measured in 2024 at calibration index 2025. The frozen incumbent fixture retains its historical 378,000 count." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1236000000.0, + "fixture_value": 273000.0, "kind": "calibration_drift", - "ledger_value": 1000000000.0, - "name": "hmrc.salary_sacrifice.nics_relief_employee", + "ledger_value": 225626.0, + "name": "ons.population.age_80_89_by_region@E12000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 2987000000.0, + "fixture_value": 337000.0, "kind": "calibration_drift", - "ledger_value": 3400000000.0, - "name": "hmrc.salary_sacrifice.nics_relief_employer", + "ledger_value": 275030.0, + "name": "ons.population.age_80_89_by_region@E12000005", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 3379200.0, + "fixture_value": 379000.0, "kind": "calibration_drift", - "ledger_value": 3300000.0, - "name": "hmrc.salary_sacrifice.users_above_cap", + "ledger_value": 305691.0, + "name": "ons.population.age_80_89_by_region@E12000006", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 4403200.0, + "fixture_value": 304000.0, "kind": "calibration_drift", - "ledger_value": 4300000.0, - "name": "hmrc.salary_sacrifice.users_below_cap", + "ledger_value": 237061.0, + "name": "ons.population.age_80_89_by_region@E12000007", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 7884800.0, + "fixture_value": 559000.0, "kind": "calibration_drift", - "ledger_value": 7700000.0, - "name": "hmrc.salary_sacrifice.users_total", + "ledger_value": 447958.0, + "name": "ons.population.age_80_89_by_region@E12000008", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 557000.0, + "fixture_value": 388000.0, "kind": "calibration_drift", - "ledger_value": 556551.0, - "name": "isc.private_school_students", + "ledger_value": 313605.0, + "name": "ons.population.age_80_89_by_region@E12000009", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 2057128451236.5015, + "fixture_value": 93000.0, "kind": "calibration_drift", - "ledger_value": 2103053000000.0, - "name": "ons.land.corporate_land_value", + "ledger_value": 77441.0, + "name": "ons.population.age_80_89_by_region@N92000002", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 5042871548763.499, + "fixture_value": 297000.0, "kind": "calibration_drift", - "ledger_value": 4559831000000.0, - "name": "ons.land.household_land_value", + "ledger_value": 238904.0, + "name": "ons.population.age_80_89_by_region@S92000003", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 7100000000000.0, + "fixture_value": 190000.0, "kind": "calibration_drift", - "ledger_value": 7117771000000.0, - "name": "ons.land.land_value", + "ledger_value": 154319.0, + "name": "ons.population.age_80_89_by_region@W92000004", "period": 2025, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { "fixture_value": 1698816.0, diff --git a/packages/microcosm-build/src/microcosm/build/uk/local_area_crosswalk.json b/packages/microcosm-build/src/microcosm/build/uk/local_area_crosswalk.json index 4661ce3f1a..3281bfb8a0 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/local_area_crosswalk.json +++ b/packages/microcosm-build/src/microcosm/build/uk/local_area_crosswalk.json @@ -688,7 +688,659 @@ "W07000110", "W07000111", "W07000112" - ] + ], + "region_code_by_area": { + "E14001063": "E12000008", + "E14001064": "E12000005", + "E14001065": "E12000002", + "E14001066": "E12000004", + "E14001067": "E12000008", + "E14001068": "E12000004", + "E14001069": "E12000008", + "E14001070": "E12000002", + "E14001071": "E12000008", + "E14001072": "E12000008", + "E14001073": "E12000007", + "E14001074": "E12000003", + "E14001075": "E12000003", + "E14001076": "E12000002", + "E14001077": "E12000006", + "E14001078": "E12000008", + "E14001079": "E12000004", + "E14001080": "E12000009", + "E14001081": "E12000007", + "E14001082": "E12000008", + "E14001083": "E12000007", + "E14001084": "E12000006", + "E14001085": "E12000007", + "E14001086": "E12000007", + "E14001087": "E12000003", + "E14001088": "E12000008", + "E14001089": "E12000007", + "E14001090": "E12000008", + "E14001091": "E12000002", + "E14001092": "E12000005", + "E14001093": "E12000005", + "E14001094": "E12000005", + "E14001095": "E12000005", + "E14001096": "E12000005", + "E14001097": "E12000005", + "E14001098": "E12000005", + "E14001099": "E12000005", + "E14001100": "E12000005", + "E14001101": "E12000001", + "E14001102": "E12000002", + "E14001103": "E12000002", + "E14001104": "E12000002", + "E14001105": "E12000002", + "E14001106": "E12000001", + "E14001107": "E12000001", + "E14001108": "E12000008", + "E14001109": "E12000004", + "E14001110": "E12000002", + "E14001111": "E12000002", + "E14001112": "E12000002", + "E14001113": "E12000002", + "E14001114": "E12000004", + "E14001115": "E12000009", + "E14001116": "E12000009", + "E14001117": "E12000008", + "E14001118": "E12000003", + "E14001119": "E12000003", + "E14001120": "E12000003", + "E14001121": "E12000006", + "E14001122": "E12000007", + "E14001123": "E12000007", + "E14001124": "E12000007", + "E14001125": "E12000006", + "E14001126": "E12000009", + "E14001127": "E12000003", + "E14001128": "E12000003", + "E14001129": "E12000008", + "E14001130": "E12000008", + "E14001131": "E12000009", + "E14001132": "E12000009", + "E14001133": "E12000009", + "E14001134": "E12000009", + "E14001135": "E12000009", + "E14001136": "E12000006", + "E14001137": "E12000007", + "E14001138": "E12000005", + "E14001139": "E12000006", + "E14001140": "E12000004", + "E14001141": "E12000008", + "E14001142": "E12000002", + "E14001143": "E12000005", + "E14001144": "E12000002", + "E14001145": "E12000002", + "E14001146": "E12000006", + "E14001147": "E12000003", + "E14001148": "E12000009", + "E14001149": "E12000006", + "E14001150": "E12000005", + "E14001151": "E12000008", + "E14001152": "E12000002", + "E14001153": "E12000007", + "E14001154": "E12000006", + "E14001155": "E12000009", + "E14001156": "E12000006", + "E14001157": "E12000008", + "E14001158": "E12000002", + "E14001159": "E12000006", + "E14001160": "E12000007", + "E14001161": "E12000009", + "E14001162": "E12000008", + "E14001163": "E12000002", + "E14001164": "E12000002", + "E14001165": "E12000004", + "E14001166": "E12000008", + "E14001167": "E12000007", + "E14001168": "E12000009", + "E14001169": "E12000007", + "E14001170": "E12000002", + "E14001171": "E12000009", + "E14001172": "E12000007", + "E14001173": "E12000001", + "E14001174": "E12000006", + "E14001175": "E12000007", + "E14001176": "E12000006", + "E14001177": "E12000003", + "E14001178": "E12000002", + "E14001179": "E12000004", + "E14001180": "E12000005", + "E14001181": "E12000005", + "E14001182": "E12000005", + "E14001183": "E12000001", + "E14001184": "E12000008", + "E14001185": "E12000002", + "E14001186": "E12000007", + "E14001187": "E12000007", + "E14001188": "E12000007", + "E14001189": "E12000007", + "E14001190": "E12000001", + "E14001191": "E12000008", + "E14001192": "E12000004", + "E14001193": "E12000004", + "E14001194": "E12000004", + "E14001195": "E12000004", + "E14001196": "E12000003", + "E14001197": "E12000008", + "E14001198": "E12000003", + "E14001199": "E12000003", + "E14001200": "E12000003", + "E14001201": "E12000008", + "E14001202": "E12000008", + "E14001203": "E12000005", + "E14001204": "E12000005", + "E14001205": "E12000007", + "E14001206": "E12000006", + "E14001207": "E12000007", + "E14001208": "E12000007", + "E14001209": "E12000007", + "E14001210": "E12000008", + "E14001211": "E12000001", + "E14001212": "E12000008", + "E14001213": "E12000007", + "E14001214": "E12000008", + "E14001215": "E12000008", + "E14001216": "E12000008", + "E14001217": "E12000009", + "E14001218": "E12000008", + "E14001219": "E12000008", + "E14001220": "E12000008", + "E14001221": "E12000007", + "E14001222": "E12000002", + "E14001223": "E12000007", + "E14001224": "E12000006", + "E14001225": "E12000007", + "E14001226": "E12000006", + "E14001227": "E12000008", + "E14001228": "E12000004", + "E14001229": "E12000007", + "E14001230": "E12000008", + "E14001231": "E12000009", + "E14001232": "E12000009", + "E14001233": "E12000008", + "E14001234": "E12000008", + "E14001235": "E12000008", + "E14001236": "E12000007", + "E14001237": "E12000009", + "E14001238": "E12000007", + "E14001239": "E12000008", + "E14001240": "E12000009", + "E14001241": "E12000009", + "E14001242": "E12000002", + "E14001243": "E12000004", + "E14001244": "E12000001", + "E14001245": "E12000004", + "E14001246": "E12000008", + "E14001247": "E12000009", + "E14001248": "E12000009", + "E14001249": "E12000008", + "E14001250": "E12000003", + "E14001251": "E12000002", + "E14001252": "E12000008", + "E14001253": "E12000004", + "E14001254": "E12000008", + "E14001255": "E12000003", + "E14001256": "E12000006", + "E14001257": "E12000007", + "E14001258": "E12000008", + "E14001259": "E12000007", + "E14001260": "E12000007", + "E14001261": "E12000005", + "E14001262": "E12000003", + "E14001263": "E12000008", + "E14001264": "E12000007", + "E14001265": "E12000007", + "E14001266": "E12000004", + "E14001267": "E12000006", + "E14001268": "E12000006", + "E14001269": "E12000003", + "E14001270": "E12000007", + "E14001271": "E12000007", + "E14001272": "E12000001", + "E14001273": "E12000006", + "E14001274": "E12000008", + "E14001275": "E12000008", + "E14001276": "E12000007", + "E14001277": "E12000002", + "E14001278": "E12000006", + "E14001279": "E12000007", + "E14001280": "E12000008", + "E14001281": "E12000005", + "E14001282": "E12000008", + "E14001283": "E12000006", + "E14001284": "E12000006", + "E14001285": "E12000001", + "E14001286": "E12000002", + "E14001287": "E12000004", + "E14001288": "E12000004", + "E14001289": "E12000006", + "E14001290": "E12000007", + "E14001291": "E12000009", + "E14001292": "E12000007", + "E14001293": "E12000007", + "E14001294": "E12000008", + "E14001295": "E12000001", + "E14001296": "E12000008", + "E14001297": "E12000003", + "E14001298": "E12000006", + "E14001299": "E12000002", + "E14001300": "E12000007", + "E14001301": "E12000007", + "E14001302": "E12000006", + "E14001303": "E12000008", + "E14001304": "E12000008", + "E14001305": "E12000007", + "E14001306": "E12000007", + "E14001307": "E12000001", + "E14001308": "E12000003", + "E14001309": "E12000005", + "E14001310": "E12000007", + "E14001311": "E12000004", + "E14001312": "E12000007", + "E14001313": "E12000003", + "E14001314": "E12000003", + "E14001315": "E12000003", + "E14001316": "E12000005", + "E14001317": "E12000002", + "E14001318": "E12000002", + "E14001319": "E12000003", + "E14001320": "E12000003", + "E14001321": "E12000003", + "E14001322": "E12000003", + "E14001323": "E12000003", + "E14001324": "E12000003", + "E14001325": "E12000003", + "E14001326": "E12000004", + "E14001327": "E12000004", + "E14001328": "E12000004", + "E14001329": "E12000002", + "E14001330": "E12000008", + "E14001331": "E12000007", + "E14001332": "E12000007", + "E14001333": "E12000007", + "E14001334": "E12000007", + "E14001335": "E12000005", + "E14001336": "E12000004", + "E14001337": "E12000002", + "E14001338": "E12000002", + "E14001339": "E12000002", + "E14001340": "E12000002", + "E14001341": "E12000002", + "E14001342": "E12000004", + "E14001343": "E12000004", + "E14001344": "E12000006", + "E14001345": "E12000006", + "E14001346": "E12000006", + "E14001347": "E12000002", + "E14001348": "E12000008", + "E14001349": "E12000008", + "E14001350": "E12000002", + "E14001351": "E12000006", + "E14001352": "E12000002", + "E14001353": "E12000002", + "E14001354": "E12000002", + "E14001355": "E12000004", + "E14001356": "E12000009", + "E14001357": "E12000004", + "E14001358": "E12000005", + "E14001359": "E12000006", + "E14001360": "E12000008", + "E14001361": "E12000002", + "E14001362": "E12000004", + "E14001363": "E12000009", + "E14001364": "E12000004", + "E14001365": "E12000006", + "E14001366": "E12000008", + "E14001367": "E12000001", + "E14001368": "E12000001", + "E14001369": "E12000008", + "E14001370": "E12000008", + "E14001371": "E12000007", + "E14001372": "E12000002", + "E14001373": "E12000008", + "E14001374": "E12000008", + "E14001375": "E12000004", + "E14001376": "E12000008", + "E14001377": "E12000001", + "E14001378": "E12000001", + "E14001379": "E12000001", + "E14001380": "E12000005", + "E14001381": "E12000009", + "E14001382": "E12000001", + "E14001383": "E12000003", + "E14001384": "E12000006", + "E14001385": "E12000009", + "E14001386": "E12000009", + "E14001387": "E12000009", + "E14001388": "E12000009", + "E14001389": "E12000001", + "E14001390": "E12000006", + "E14001391": "E12000004", + "E14001392": "E12000008", + "E14001393": "E12000006", + "E14001394": "E12000009", + "E14001395": "E12000005", + "E14001396": "E12000006", + "E14001397": "E12000001", + "E14001398": "E12000005", + "E14001399": "E12000009", + "E14001400": "E12000005", + "E14001401": "E12000006", + "E14001402": "E12000006", + "E14001403": "E12000008", + "E14001404": "E12000004", + "E14001405": "E12000006", + "E14001406": "E12000004", + "E14001407": "E12000004", + "E14001408": "E12000006", + "E14001409": "E12000006", + "E14001410": "E12000004", + "E14001411": "E12000004", + "E14001412": "E12000004", + "E14001413": "E12000005", + "E14001414": "E12000007", + "E14001415": "E12000002", + "E14001416": "E12000002", + "E14001417": "E12000007", + "E14001418": "E12000003", + "E14001419": "E12000008", + "E14001420": "E12000008", + "E14001421": "E12000007", + "E14001422": "E12000002", + "E14001423": "E12000003", + "E14001424": "E12000002", + "E14001425": "E12000006", + "E14001426": "E12000009", + "E14001427": "E12000009", + "E14001428": "E12000003", + "E14001429": "E12000009", + "E14001430": "E12000007", + "E14001431": "E12000008", + "E14001432": "E12000008", + "E14001433": "E12000002", + "E14001434": "E12000007", + "E14001435": "E12000007", + "E14001436": "E12000003", + "E14001437": "E12000006", + "E14001438": "E12000008", + "E14001439": "E12000008", + "E14001440": "E12000001", + "E14001441": "E12000005", + "E14001442": "E12000008", + "E14001443": "E12000002", + "E14001444": "E12000003", + "E14001445": "E12000007", + "E14001446": "E12000002", + "E14001447": "E12000008", + "E14001448": "E12000007", + "E14001449": "E12000008", + "E14001450": "E12000002", + "E14001451": "E12000003", + "E14001452": "E12000003", + "E14001453": "E12000005", + "E14001454": "E12000007", + "E14001455": "E12000002", + "E14001456": "E12000008", + "E14001457": "E12000004", + "E14001458": "E12000004", + "E14001459": "E12000002", + "E14001460": "E12000009", + "E14001461": "E12000003", + "E14001462": "E12000003", + "E14001463": "E12000002", + "E14001464": "E12000003", + "E14001465": "E12000008", + "E14001466": "E12000003", + "E14001467": "E12000003", + "E14001468": "E12000003", + "E14001469": "E12000003", + "E14001470": "E12000003", + "E14001471": "E12000004", + "E14001472": "E12000003", + "E14001473": "E12000005", + "E14001474": "E12000008", + "E14001475": "E12000003", + "E14001476": "E12000004", + "E14001477": "E12000008", + "E14001478": "E12000005", + "E14001479": "E12000005", + "E14001480": "E12000006", + "E14001481": "E12000006", + "E14001482": "E12000009", + "E14001483": "E12000004", + "E14001484": "E12000009", + "E14001485": "E12000009", + "E14001486": "E12000009", + "E14001487": "E12000004", + "E14001488": "E12000004", + "E14001489": "E12000006", + "E14001490": "E12000004", + "E14001491": "E12000002", + "E14001492": "E12000001", + "E14001493": "E12000005", + "E14001494": "E12000006", + "E14001495": "E12000009", + "E14001496": "E12000006", + "E14001497": "E12000006", + "E14001498": "E12000009", + "E14001499": "E12000008", + "E14001500": "E12000008", + "E14001501": "E12000006", + "E14001502": "E12000006", + "E14001503": "E12000007", + "E14001504": "E12000002", + "E14001505": "E12000008", + "E14001506": "E12000003", + "E14001507": "E12000006", + "E14001508": "E12000009", + "E14001509": "E12000002", + "E14001510": "E12000002", + "E14001511": "E12000009", + "E14001512": "E12000006", + "E14001513": "E12000005", + "E14001514": "E12000005", + "E14001515": "E12000002", + "E14001516": "E12000006", + "E14001517": "E12000002", + "E14001518": "E12000001", + "E14001519": "E12000001", + "E14001520": "E12000005", + "E14001521": "E12000005", + "E14001522": "E12000005", + "E14001523": "E12000005", + "E14001524": "E12000005", + "E14001525": "E12000007", + "E14001526": "E12000005", + "E14001527": "E12000007", + "E14001528": "E12000002", + "E14001529": "E12000009", + "E14001530": "E12000006", + "E14001531": "E12000001", + "E14001532": "E12000008", + "E14001533": "E12000008", + "E14001534": "E12000007", + "E14001535": "E12000005", + "E14001536": "E12000009", + "E14001537": "E12000009", + "E14001538": "E12000005", + "E14001539": "E12000002", + "E14001540": "E12000009", + "E14001541": "E12000005", + "E14001542": "E12000009", + "E14001543": "E12000005", + "E14001544": "E12000003", + "E14001545": "E12000009", + "E14001546": "E12000006", + "E14001547": "E12000005", + "E14001548": "E12000009", + "E14001549": "E12000008", + "E14001550": "E12000007", + "E14001551": "E12000009", + "E14001552": "E12000009", + "E14001553": "E12000007", + "E14001554": "E12000009", + "E14001555": "E12000008", + "E14001556": "E12000007", + "E14001557": "E12000001", + "E14001558": "E12000007", + "E14001559": "E12000007", + "E14001560": "E12000003", + "E14001561": "E12000002", + "E14001562": "E12000005", + "E14001563": "E12000007", + "E14001564": "E12000002", + "E14001565": "E12000002", + "E14001566": "E12000005", + "E14001567": "E12000001", + "E14001568": "E12000006", + "E14001569": "E12000006", + "E14001570": "E12000008", + "E14001571": "E12000004", + "E14001572": "E12000009", + "E14001573": "E12000006", + "E14001574": "E12000005", + "E14001575": "E12000009", + "E14001576": "E12000007", + "E14001577": "E12000002", + "E14001578": "E12000006", + "E14001579": "E12000005", + "E14001580": "E12000002", + "E14001581": "E12000009", + "E14001582": "E12000003", + "E14001583": "E12000002", + "E14001584": "E12000002", + "E14001585": "E12000002", + "E14001586": "E12000007", + "E14001587": "E12000008", + "E14001588": "E12000008", + "E14001589": "E12000002", + "E14001590": "E12000006", + "E14001591": "E12000008", + "E14001592": "E12000008", + "E14001593": "E12000008", + "E14001594": "E12000005", + "E14001595": "E12000005", + "E14001596": "E12000005", + "E14001597": "E12000005", + "E14001598": "E12000002", + "E14001599": "E12000008", + "E14001600": "E12000008", + "E14001601": "E12000005", + "E14001602": "E12000002", + "E14001603": "E12000009", + "E14001604": "E12000003", + "E14001605": "E12000003", + "N05000001": "N92000002", + "N05000002": "N92000002", + "N05000003": "N92000002", + "N05000004": "N92000002", + "N05000005": "N92000002", + "N05000006": "N92000002", + "N05000007": "N92000002", + "N05000008": "N92000002", + "N05000009": "N92000002", + "N05000010": "N92000002", + "N05000011": "N92000002", + "N05000012": "N92000002", + "N05000013": "N92000002", + "N05000014": "N92000002", + "N05000015": "N92000002", + "N05000016": "N92000002", + "N05000017": "N92000002", + "N05000018": "N92000002", + "S14000021": "S92000003", + "S14000027": "S92000003", + "S14000045": "S92000003", + "S14000048": "S92000003", + "S14000051": "S92000003", + "S14000060": "S92000003", + "S14000061": "S92000003", + "S14000062": "S92000003", + "S14000063": "S92000003", + "S14000064": "S92000003", + "S14000065": "S92000003", + "S14000066": "S92000003", + "S14000067": "S92000003", + "S14000068": "S92000003", + "S14000069": "S92000003", + "S14000070": "S92000003", + "S14000071": "S92000003", + "S14000072": "S92000003", + "S14000073": "S92000003", + "S14000074": "S92000003", + "S14000075": "S92000003", + "S14000076": "S92000003", + "S14000077": "S92000003", + "S14000078": "S92000003", + "S14000079": "S92000003", + "S14000080": "S92000003", + "S14000081": "S92000003", + "S14000082": "S92000003", + "S14000083": "S92000003", + "S14000084": "S92000003", + "S14000085": "S92000003", + "S14000086": "S92000003", + "S14000087": "S92000003", + "S14000088": "S92000003", + "S14000089": "S92000003", + "S14000090": "S92000003", + "S14000091": "S92000003", + "S14000092": "S92000003", + "S14000093": "S92000003", + "S14000094": "S92000003", + "S14000095": "S92000003", + "S14000096": "S92000003", + "S14000097": "S92000003", + "S14000098": "S92000003", + "S14000099": "S92000003", + "S14000100": "S92000003", + "S14000101": "S92000003", + "S14000102": "S92000003", + "S14000103": "S92000003", + "S14000104": "S92000003", + "S14000105": "S92000003", + "S14000106": "S92000003", + "S14000107": "S92000003", + "S14000108": "S92000003", + "S14000109": "S92000003", + "S14000110": "S92000003", + "S14000111": "S92000003", + "W07000081": "W92000004", + "W07000082": "W92000004", + "W07000083": "W92000004", + "W07000084": "W92000004", + "W07000085": "W92000004", + "W07000086": "W92000004", + "W07000087": "W92000004", + "W07000088": "W92000004", + "W07000089": "W92000004", + "W07000090": "W92000004", + "W07000091": "W92000004", + "W07000092": "W92000004", + "W07000093": "W92000004", + "W07000094": "W92000004", + "W07000095": "W92000004", + "W07000096": "W92000004", + "W07000097": "W92000004", + "W07000098": "W92000004", + "W07000099": "W92000004", + "W07000100": "W92000004", + "W07000101": "W92000004", + "W07000102": "W92000004", + "W07000103": "W92000004", + "W07000104": "W92000004", + "W07000105": "W92000004", + "W07000106": "W92000004", + "W07000107": "W92000004", + "W07000108": "W92000004", + "W07000109": "W92000004", + "W07000110": "W92000004", + "W07000111": "W92000004", + "W07000112": "W92000004" + } }, "local_authority": { "ledger_geography_level": "local_authority", @@ -1094,7 +1746,370 @@ "W06000022", "W06000023", "W06000024" - ] + ], + "region_code_by_area": { + "E06000001": "E12000001", + "E06000002": "E12000001", + "E06000003": "E12000001", + "E06000004": "E12000001", + "E06000005": "E12000001", + "E06000006": "E12000002", + "E06000007": "E12000002", + "E06000008": "E12000002", + "E06000009": "E12000002", + "E06000010": "E12000003", + "E06000011": "E12000003", + "E06000012": "E12000003", + "E06000013": "E12000003", + "E06000014": "E12000003", + "E06000015": "E12000004", + "E06000016": "E12000004", + "E06000017": "E12000004", + "E06000018": "E12000004", + "E06000019": "E12000005", + "E06000020": "E12000005", + "E06000021": "E12000005", + "E06000022": "E12000009", + "E06000023": "E12000009", + "E06000024": "E12000009", + "E06000025": "E12000009", + "E06000026": "E12000009", + "E06000027": "E12000009", + "E06000030": "E12000009", + "E06000031": "E12000006", + "E06000032": "E12000006", + "E06000033": "E12000006", + "E06000034": "E12000006", + "E06000035": "E12000008", + "E06000036": "E12000008", + "E06000037": "E12000008", + "E06000038": "E12000008", + "E06000039": "E12000008", + "E06000040": "E12000008", + "E06000041": "E12000008", + "E06000042": "E12000008", + "E06000043": "E12000008", + "E06000044": "E12000008", + "E06000045": "E12000008", + "E06000046": "E12000008", + "E06000047": "E12000001", + "E06000049": "E12000002", + "E06000050": "E12000002", + "E06000051": "E12000005", + "E06000052": "E12000009", + "E06000053": "E12000009", + "E06000054": "E12000009", + "E06000055": "E12000006", + "E06000056": "E12000006", + "E06000057": "E12000001", + "E06000058": "E12000009", + "E06000059": "E12000009", + "E06000060": "E12000008", + "E06000061": "E12000004", + "E06000062": "E12000004", + "E06000063": "E12000002", + "E06000064": "E12000002", + "E06000065": "E12000003", + "E06000066": "E12000009", + "E07000008": "E12000006", + "E07000009": "E12000006", + "E07000010": "E12000006", + "E07000011": "E12000006", + "E07000012": "E12000006", + "E07000032": "E12000004", + "E07000033": "E12000004", + "E07000034": "E12000004", + "E07000035": "E12000004", + "E07000036": "E12000004", + "E07000037": "E12000004", + "E07000038": "E12000004", + "E07000039": "E12000004", + "E07000040": "E12000009", + "E07000041": "E12000009", + "E07000042": "E12000009", + "E07000043": "E12000009", + "E07000044": "E12000009", + "E07000045": "E12000009", + "E07000046": "E12000009", + "E07000047": "E12000009", + "E07000061": "E12000008", + "E07000062": "E12000008", + "E07000063": "E12000008", + "E07000064": "E12000008", + "E07000065": "E12000008", + "E07000066": "E12000006", + "E07000067": "E12000006", + "E07000068": "E12000006", + "E07000069": "E12000006", + "E07000070": "E12000006", + "E07000071": "E12000006", + "E07000072": "E12000006", + "E07000073": "E12000006", + "E07000074": "E12000006", + "E07000075": "E12000006", + "E07000076": "E12000006", + "E07000077": "E12000006", + "E07000078": "E12000009", + "E07000079": "E12000009", + "E07000080": "E12000009", + "E07000081": "E12000009", + "E07000082": "E12000009", + "E07000083": "E12000009", + "E07000084": "E12000008", + "E07000085": "E12000008", + "E07000086": "E12000008", + "E07000087": "E12000008", + "E07000088": "E12000008", + "E07000089": "E12000008", + "E07000090": "E12000008", + "E07000091": "E12000008", + "E07000092": "E12000008", + "E07000093": "E12000008", + "E07000094": "E12000008", + "E07000095": "E12000006", + "E07000096": "E12000006", + "E07000098": "E12000006", + "E07000099": "E12000006", + "E07000102": "E12000006", + "E07000103": "E12000006", + "E07000105": "E12000008", + "E07000106": "E12000008", + "E07000107": "E12000008", + "E07000108": "E12000008", + "E07000109": "E12000008", + "E07000110": "E12000008", + "E07000111": "E12000008", + "E07000112": "E12000008", + "E07000113": "E12000008", + "E07000114": "E12000008", + "E07000115": "E12000008", + "E07000116": "E12000008", + "E07000117": "E12000002", + "E07000118": "E12000002", + "E07000119": "E12000002", + "E07000120": "E12000002", + "E07000121": "E12000002", + "E07000122": "E12000002", + "E07000123": "E12000002", + "E07000124": "E12000002", + "E07000125": "E12000002", + "E07000126": "E12000002", + "E07000127": "E12000002", + "E07000128": "E12000002", + "E07000129": "E12000004", + "E07000130": "E12000004", + "E07000131": "E12000004", + "E07000132": "E12000004", + "E07000133": "E12000004", + "E07000134": "E12000004", + "E07000135": "E12000004", + "E07000136": "E12000004", + "E07000137": "E12000004", + "E07000138": "E12000004", + "E07000139": "E12000004", + "E07000140": "E12000004", + "E07000141": "E12000004", + "E07000142": "E12000004", + "E07000143": "E12000006", + "E07000144": "E12000006", + "E07000145": "E12000006", + "E07000146": "E12000006", + "E07000147": "E12000006", + "E07000148": "E12000006", + "E07000149": "E12000006", + "E07000170": "E12000004", + "E07000171": "E12000004", + "E07000172": "E12000004", + "E07000173": "E12000004", + "E07000174": "E12000004", + "E07000175": "E12000004", + "E07000176": "E12000004", + "E07000177": "E12000008", + "E07000178": "E12000008", + "E07000179": "E12000008", + "E07000180": "E12000008", + "E07000181": "E12000008", + "E07000192": "E12000005", + "E07000193": "E12000005", + "E07000194": "E12000005", + "E07000195": "E12000005", + "E07000196": "E12000005", + "E07000197": "E12000005", + "E07000198": "E12000005", + "E07000199": "E12000005", + "E07000200": "E12000006", + "E07000202": "E12000006", + "E07000203": "E12000006", + "E07000207": "E12000008", + "E07000208": "E12000008", + "E07000209": "E12000008", + "E07000210": "E12000008", + "E07000211": "E12000008", + "E07000212": "E12000008", + "E07000213": "E12000008", + "E07000214": "E12000008", + "E07000215": "E12000008", + "E07000216": "E12000008", + "E07000217": "E12000008", + "E07000218": "E12000005", + "E07000219": "E12000005", + "E07000220": "E12000005", + "E07000221": "E12000005", + "E07000222": "E12000005", + "E07000223": "E12000008", + "E07000224": "E12000008", + "E07000225": "E12000008", + "E07000226": "E12000008", + "E07000227": "E12000008", + "E07000228": "E12000008", + "E07000229": "E12000008", + "E07000234": "E12000005", + "E07000235": "E12000005", + "E07000236": "E12000005", + "E07000237": "E12000005", + "E07000238": "E12000005", + "E07000239": "E12000005", + "E07000240": "E12000006", + "E07000241": "E12000006", + "E07000242": "E12000006", + "E07000243": "E12000006", + "E07000244": "E12000006", + "E07000245": "E12000006", + "E08000001": "E12000002", + "E08000002": "E12000002", + "E08000003": "E12000002", + "E08000004": "E12000002", + "E08000005": "E12000002", + "E08000006": "E12000002", + "E08000007": "E12000002", + "E08000008": "E12000002", + "E08000009": "E12000002", + "E08000010": "E12000002", + "E08000011": "E12000002", + "E08000012": "E12000002", + "E08000013": "E12000002", + "E08000014": "E12000002", + "E08000015": "E12000002", + "E08000016": "E12000003", + "E08000017": "E12000003", + "E08000018": "E12000003", + "E08000019": "E12000003", + "E08000021": "E12000001", + "E08000022": "E12000001", + "E08000023": "E12000001", + "E08000024": "E12000001", + "E08000025": "E12000005", + "E08000026": "E12000005", + "E08000027": "E12000005", + "E08000028": "E12000005", + "E08000029": "E12000005", + "E08000030": "E12000005", + "E08000031": "E12000005", + "E08000032": "E12000003", + "E08000033": "E12000003", + "E08000034": "E12000003", + "E08000035": "E12000003", + "E08000036": "E12000003", + "E08000037": "E12000001", + "E09000001": "E12000007", + "E09000002": "E12000007", + "E09000003": "E12000007", + "E09000004": "E12000007", + "E09000005": "E12000007", + "E09000006": "E12000007", + "E09000007": "E12000007", + "E09000008": "E12000007", + "E09000009": "E12000007", + "E09000010": "E12000007", + "E09000011": "E12000007", + "E09000012": "E12000007", + "E09000013": "E12000007", + "E09000014": "E12000007", + "E09000015": "E12000007", + "E09000016": "E12000007", + "E09000017": "E12000007", + "E09000018": "E12000007", + "E09000019": "E12000007", + "E09000020": "E12000007", + "E09000021": "E12000007", + "E09000022": "E12000007", + "E09000023": "E12000007", + "E09000024": "E12000007", + "E09000025": "E12000007", + "E09000026": "E12000007", + "E09000027": "E12000007", + "E09000028": "E12000007", + "E09000029": "E12000007", + "E09000030": "E12000007", + "E09000031": "E12000007", + "E09000032": "E12000007", + "E09000033": "E12000007", + "N09000001": "N92000002", + "N09000002": "N92000002", + "N09000003": "N92000002", + "N09000004": "N92000002", + "N09000005": "N92000002", + "N09000006": "N92000002", + "N09000007": "N92000002", + "N09000008": "N92000002", + "N09000009": "N92000002", + "N09000010": "N92000002", + "N09000011": "N92000002", + "S12000005": "S92000003", + "S12000006": "S92000003", + "S12000008": "S92000003", + "S12000010": "S92000003", + "S12000011": "S92000003", + "S12000013": "S92000003", + "S12000014": "S92000003", + "S12000017": "S92000003", + "S12000018": "S92000003", + "S12000019": "S92000003", + "S12000020": "S92000003", + "S12000021": "S92000003", + "S12000023": "S92000003", + "S12000026": "S92000003", + "S12000027": "S92000003", + "S12000028": "S92000003", + "S12000029": "S92000003", + "S12000030": "S92000003", + "S12000033": "S92000003", + "S12000034": "S92000003", + "S12000035": "S92000003", + "S12000036": "S92000003", + "S12000038": "S92000003", + "S12000039": "S92000003", + "S12000040": "S92000003", + "S12000041": "S92000003", + "S12000042": "S92000003", + "S12000045": "S92000003", + "S12000047": "S92000003", + "S12000048": "S92000003", + "S12000049": "S92000003", + "S12000050": "S92000003", + "W06000001": "W92000004", + "W06000002": "W92000004", + "W06000003": "W92000004", + "W06000004": "W92000004", + "W06000005": "W92000004", + "W06000006": "W92000004", + "W06000008": "W92000004", + "W06000009": "W92000004", + "W06000010": "W92000004", + "W06000011": "W92000004", + "W06000012": "W92000004", + "W06000013": "W92000004", + "W06000014": "W92000004", + "W06000015": "W92000004", + "W06000016": "W92000004", + "W06000018": "W92000004", + "W06000019": "W92000004", + "W06000020": "W92000004", + "W06000021": "W92000004", + "W06000022": "W92000004", + "W06000023": "W92000004", + "W06000024": "W92000004" + } } } } diff --git a/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json b/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json index 41e7b4fcbb..2d10042af8 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json @@ -159,19 +159,14 @@ "status": "ported_local_declared" }, { - "classification": "cross_grain_grain_gap", + "classification": "cross_grain_rule", "concern_id": "cross_grain_council_tax_stock_england_region", "covers": [ "policyengine_uk_data.targets.sources.voa_council_tax" ], - "evidence": "Microcosm voa.council_tax_stock.band_* geography_levels include region; CrossGrainRule.grain_precedence is country,constituency,la.", - "fence": { - "origin": "The national contract materializes English VOA stock by region and Wales by country.", - "purpose": "Prevent the LA solve from implicitly choosing between conflicting regional and local stock totals.", - "verdict_basis": "Use exact-signature country reconciliation where a country leg exists; record the England regional leg here until #802 machinery gains an adjudicated region bridge." - }, - "reason": "The incumbent English VOA controls are region-grain, while the #802 rule declares only country > constituency > LA and cannot accept region rows.", - "status": "routed" + "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE.grain_precedence includes region and parent_geography_legs maps every E12 code to itself; the local crosswalk carries region_code_by_area from the ladder.", + "reason": "The English VOA stock rows fan out over the nine English regions and sit at the region grain of the cross-grain rule (country > region > constituency > la); each region is its own leg, so the LA solve reconciles to its region's published stock rather than to a single England row (microcosm#905).", + "status": "ported_national" }, { "classification": "cross_grain_grain_gap", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py index 5730b3cb7b..2430e187b3 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/battery_bindings.py @@ -63,6 +63,7 @@ from microcosm.build.uk_runtime.ledger_targets import ( LOCAL_REGISTRY_PARITY_FIXTURE_RESOURCE, align_uk_local_registry_parity_fixture, + align_uk_national_registry_parity_fixture, ) from microcosm.build.uk_runtime.local_targets import ( load_uk_local_geography_contract, @@ -1256,7 +1257,9 @@ def _load_ledger_compile_parity_fixture(fixture_resource: str) -> dict[str, Any] ) if fixture_resource == LOCAL_REGISTRY_PARITY_FIXTURE_RESOURCE: return align_uk_local_registry_parity_fixture(fixture) - return fixture + # The national fixtures spell the incumbent's regional rows their own way; + # the receipts are signed against the region-tier names (microcosm#905). + return align_uk_national_registry_parity_fixture(fixture) def _ledger_compile_parity_evidence( diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py index 878108d234..e252cb11c7 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py @@ -400,15 +400,10 @@ def _fence(origin: str, purpose: str, verdict_basis: str) -> dict[str, str]: }, { "concern_id": "cross_grain_council_tax_stock_england_region", - "status": "routed", - "classification": "cross_grain_grain_gap", - "reason": "The incumbent English VOA controls are region-grain, while the #802 rule declares only country > constituency > LA and cannot accept region rows.", - "evidence": "Microcosm voa.council_tax_stock.band_* geography_levels include region; CrossGrainRule.grain_precedence is country,constituency,la.", - "fence": _fence( - "The national contract materializes English VOA stock by region and Wales by country.", - "Prevent the LA solve from implicitly choosing between conflicting regional and local stock totals.", - "Use exact-signature country reconciliation where a country leg exists; record the England regional leg here until #802 machinery gains an adjudicated region bridge.", - ), + "status": "ported_national", + "classification": "cross_grain_rule", + "reason": "The English VOA stock rows fan out over the nine English regions and sit at the region grain of the cross-grain rule (country > region > constituency > la); each region is its own leg, so the LA solve reconciles to its region's published stock rather than to a single England row (microcosm#905).", + "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE.grain_precedence includes region and parent_geography_legs maps every E12 code to itself; the local crosswalk carries region_code_by_area from the ladder.", }, { "concern_id": "local_council_tax_band_d_rate", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py index 7f8a368bf5..08d7b65501 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py @@ -30,7 +30,11 @@ ) from microcosm.build.uk_runtime.cgt_calibration import uk_cgt_annual_exempt_amount from microcosm.build.uk_runtime.chronicle_feed import load_uk_chronicle_feed -from microcosm.build.uk_runtime.geography_ladder import UK_ENGLAND_WALES_REGION_CODES +from microcosm.build.uk_runtime.geography_ladder import ( + UK_ENGLAND_WALES_REGION_CODES, + UK_REGION_TIER, + UK_REGION_TIER_ENUM, +) from microcosm.build.uk_runtime.ledger_fact_vendoring import ( feed_identity, load_vendored_resource, @@ -39,7 +43,6 @@ from microcosm.build.uk_runtime.local_target_census import family_for_metric from microcosm.build.uk_runtime.local_targets import ( AREA_TYPE_TO_LEDGER_GEOGRAPHY_LEVEL, - area_groups_from_codes, load_uk_local_geography_contract, metric_names, ) @@ -68,20 +71,84 @@ class UKLedgerTargetCompilation: UK_CENSUS_HOUSEHOLDS_TARGET_ID = "ons.census.households" +#: Every region-tier code is a leg of its own; the national parents cover the +#: tier members they contain (microcosm#905). +UK_REGION_TIER_CODES: tuple[str, ...] = tuple(code for _, code in UK_REGION_TIER) +_UK_ENGLISH_REGION_CODES: tuple[str, ...] = tuple( + code for level, code in UK_REGION_TIER if level == "region" +) +_UK_NATION_LEG_BY_PREFIX = { + "W": "W92000004", + "S": "S92000003", + "N": "N92000002", +} +_UK_CROSSWALK_REGION_BY_AREA: dict[str, str] | None = None + + +def _uk_crosswalk_region_by_area() -> dict[str, str]: + """Area id -> region-tier code from the committed local-area crosswalk.""" + + global _UK_CROSSWALK_REGION_BY_AREA + if _UK_CROSSWALK_REGION_BY_AREA is None: + mapping: dict[str, str] = {} + levels = load_uk_local_area_crosswalk().get("levels") or {} + for level, payload in levels.items(): + by_area = payload.get("region_code_by_area") if payload else None + if not isinstance(by_area, Mapping) or not by_area: + raise ValueError( + f"UK local area crosswalk level {level!r} carries no " + "region_code_by_area; regenerate it from the ladder " + "(tools/generate_uk_local_area_crosswalk.py)." + ) + for area_id, region in by_area.items(): + previous = mapping.setdefault(str(area_id), str(region)) + if previous != str(region): + raise ValueError( + f"UK local area crosswalk maps {area_id!r} to both " + f"{previous!r} and {region!r}." + ) + _UK_CROSSWALK_REGION_BY_AREA = mapping + return _UK_CROSSWALK_REGION_BY_AREA + + def _uk_cross_grain_leg_of_area(area_code: str) -> str: - # area_groups_from_codes maps code -> country group, so the single value is - # this code's leg. It refuses an unknown prefix itself; the explicit miss - # below keeps the refusal fail-closed rather than a bare StopIteration if - # that mapping ever returns nothing for a code. - leg = next(iter(area_groups_from_codes((area_code,)).values()), "") - if not leg: + """The region-tier leg an area belongs to (microcosm#905). + + A region-tier code is its own leg. A Welsh, Scottish or Northern Irish + area maps to its nation by GSS prefix: the tier does not subdivide the + nations. An English constituency or authority resolves through the + crosswalk's ladder-derived region membership, and an English code the + crosswalk does not carry refuses rather than falling back to an + ``England`` leg that no control covers. + """ + + code = str(area_code).strip() + if not code: + raise ValueError("UK cross-grain area code must not be blank.") + if code in UK_REGION_TIER_CODES: + return code + prefix = code[0].upper() + nation = _UK_NATION_LEG_BY_PREFIX.get(prefix) + if nation is not None: + return nation + if prefix != "E": + raise ValueError(f"Unknown UK area code prefix {prefix!r} for code {code!r}.") + region = _uk_crosswalk_region_by_area().get(code) + if region is None: raise ValueError( - f"UK cross-grain area code {area_code!r} maps to no country leg." + f"UK cross-grain area code {code!r} is not in the local-area " + "crosswalk, so it has no region-tier leg." ) - return leg + return region -UK_CROSS_GRAIN_GRAIN_PRECEDENCE = ("country", "constituency", "la") +UK_CROSS_GRAIN_GRAIN_PRECEDENCE = ("country", "region", "constituency", "la") +UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS: dict[str, tuple[str, ...]] = { + **{code: (code,) for code in UK_REGION_TIER_CODES}, + "K02000001": UK_REGION_TIER_CODES, + "K03000001": (*_UK_ENGLISH_REGION_CODES, "W92000004", "S92000003"), + "E92000001": _UK_ENGLISH_REGION_CODES, +} UK_CROSS_GRAIN_BRIDGES = ( CrossGrainBridge( bridge_id="national_household_composition_partition_vs_census_households", @@ -106,11 +173,11 @@ def _uk_cross_grain_leg_of_area(area_code: str) -> str: higher_target_ids=("dwp.uc.households",), lower_side="contract:dwp.uc.households_by_area", ), - # The national ONS controls use inclusive integer-age bands (0--9), while - # local targets use equivalent half-open encodings (0--10), so their - # signatures cannot match directly. These bridges let the K02000001 UK - # control rescale both constituency and local-authority bands over its - # England/Wales/Scotland/Northern Ireland legs. + # The ONS controls use inclusive integer-age bands (0--9), while local + # targets use equivalent half-open encodings (0--10), so their signatures + # cannot match directly. These bridges let the region-tier controls (one + # row per English region and per nation, microcosm#905) rescale both + # constituency and local-authority bands over their twelve legs. CrossGrainBridge( bridge_id="national_age_0_9_vs_local_age_0_10", concept="uk.person.count", @@ -167,17 +234,85 @@ def _uk_cross_grain_leg_of_area(area_code: str) -> str: signature_fields=("concept", "entity", "map_to", "filters"), bridges=UK_CROSS_GRAIN_BRIDGES, leg_of_area=_uk_cross_grain_leg_of_area, - parent_geography_legs={ - "K02000001": ("England", "Wales", "Scotland", "Northern Ireland"), - "K03000001": ("England", "Wales", "Scotland"), - "E92000001": ("England",), - "W92000004": ("Wales",), - "S92000003": ("Scotland",), - "N92000002": ("Northern Ireland",), - }, + parent_geography_legs=UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS, ) +#: The incumbent's regional row spellings: ``ons/_age__`` uses +#: these slugs, ``voa/council_tax//`` the spine's enum names. +_UK_INCUMBENT_REGION_SLUG_CODES: dict[str, str] = { + "north_east": "E12000001", + "north_west": "E12000002", + "yorkshire_and_the_humber": "E12000003", + "east_midlands": "E12000004", + "west_midlands": "E12000005", + "east": "E12000006", + "london": "E12000007", + "south_east": "E12000008", + "south_west": "E12000009", + "wales": "W92000004", + "scotland": "S92000003", + "northern_ireland": "N92000002", +} +_UK_INCUMBENT_REGION_ENUM_CODES: dict[str, str] = { + enum: code for code, enum in UK_REGION_TIER_ENUM.items() +} + + +def align_uk_national_registry_parity_fixture( + fixture: Mapping[str, Any], +) -> dict[str, Any]: + """Align the incumbent's regional rows to the region-tier reference names. + + The incumbent measures ``ons/london_age_0_9`` and + ``voa/council_tax/LONDON/A``; the region tier names the same cells + ``ons.population.age_0_9_by_region@E12000007`` and + ``voa.council_tax_stock.band_a@E12000007`` (microcosm#905). Renaming the + fixture rows lets the compile-parity receipt compare values instead of + recording 189 ``fixture_only`` rows against 189 ``ledger_only`` rows. + Rows that are not regional cells pass through untouched. + """ + + rows: list[dict[str, Any]] = [] + for row in fixture.get("rows", ()): + if not isinstance(row, Mapping): + rows.append(row) + continue + updated = dict(row) + aligned = _uk_region_tier_fixture_name(str(updated.get("name") or "")) + if aligned is not None: + updated["name"] = aligned + updated["measure"] = aligned + updated["contract_target_id"] = aligned.split("@", 1)[0] + rows.append(updated) + result = dict(fixture) + result["rows"] = rows + return result + + +def _uk_region_tier_fixture_name(name: str) -> str | None: + if name.startswith("ons/") and "_age_" in name: + slug, _, band = name.removeprefix("ons/").partition("_age_") + code = _UK_INCUMBENT_REGION_SLUG_CODES.get(slug) + lower, _, upper = band.partition("_") + if code is None or not (lower.isdigit() and upper.isdigit()): + return None + return f"ons.population.age_{lower}_{upper}_by_region@{code}" + if name.startswith("voa/council_tax/"): + parts = name.removeprefix("voa/council_tax/").split("/") + if len(parts) != 2: + return None + region, band = parts + code = _UK_INCUMBENT_REGION_ENUM_CODES.get(region) + if code is None or not code.startswith("E12"): + return None + if band == "total": + return f"voa.council_tax_stock.total@{code}" + if band in tuple("ABCDEFGH"): + return f"voa.council_tax_stock.band_{band.lower()}@{code}" + return None + + def align_uk_local_registry_parity_fixture( fixture: Mapping[str, Any], ) -> dict[str, Any]: @@ -1733,9 +1868,22 @@ def uk_local_target_surface( f"UK national target cell {spec.name!r} has non-finite " f"value {value!r}." ) + # A region-tier row declares the grain the cross-grain operator + # places it at (``cross_grain_grain``): Chronicle stamps the + # Welsh, Scottish and Northern Irish population at ``country``, + # but on the surface those rows are the same ITL1 tier as the + # nine English regions and must not outrank them (microcosm#905). + # The selector and ledger metadata keep Chronicle's level. + grain = str(spec.metadata.get("cross_grain_grain") or geography_level) + if grain not in UK_CROSS_GRAIN_GRAIN_PRECEDENCE: + raise ValueError( + f"UK national target cell {spec.name!r} declares " + f"cross_grain_grain {grain!r}, which is not one of " + f"{UK_CROSS_GRAIN_GRAIN_PRECEDENCE}." + ) national_control_groups.setdefault( (contract_target_id, geography_id), [] - ).append((spec.name, geography_level, value)) + ).append((spec.name, grain, value)) else: raise ValueError( f"UK target {spec.name!r} names unsupported geography_level " diff --git a/packages/microcosm-build/tests/test_uk_ledger_targets.py b/packages/microcosm-build/tests/test_uk_ledger_targets.py index b298dc7a83..20cc9931f0 100644 --- a/packages/microcosm-build/tests/test_uk_ledger_targets.py +++ b/packages/microcosm-build/tests/test_uk_ledger_targets.py @@ -10,11 +10,15 @@ from microcosm.build.uk_runtime.ledger_targets import ( UK_CROSS_GRAIN_BRIDGES, UK_CROSS_GRAIN_GRAIN_PRECEDENCE, + UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS, UK_CROSS_GRAIN_RULE, + UK_REGION_TIER_CODES, _spec_geography, _uk_contract_targets, + _uk_cross_grain_leg_of_area, _uk_licensed_empty_legs_from_membership, align_uk_local_registry_parity_fixture, + align_uk_national_registry_parity_fixture, apply_uk_cross_grain_reconciliation, compile_uk_local_target_registry, compile_uk_target_registry, @@ -49,7 +53,7 @@ def test_uk_local_target_surface_uses_registry_names_and_reconciles() -> None: }, ), TargetSpec( - name="dwp.uc.households_by_area@E14000001", + name="dwp.uc.households_by_area@E14001073", entity="household", value=30.0, measure="uc_households", @@ -59,7 +63,7 @@ def test_uk_local_target_surface_uses_registry_names_and_reconciles() -> None: metadata={ "contract_target_id": "dwp.uc.households_by_area", "geography_level": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", }, ), TargetSpec( @@ -88,7 +92,7 @@ def test_uk_local_target_surface_uses_registry_names_and_reconciles() -> None: uc = surface.loc[surface["metric"] == "uc_households"] assert uc["value"].tolist() == [60.0, 30.0] assert uc["target_name"].tolist() == [ - "dwp.uc.households_by_area@E14000001", + "dwp.uc.households_by_area@E14001073", "dwp.uc.households_by_area@S14000001", ] contract = _uk_contract_targets(national_only=False) @@ -126,9 +130,9 @@ def test_uk_local_target_surface_fires_k020_household_partition_bridge() -> None for position, target_id in enumerate(composition_ids) ] + [ - _household_spec("E14000001", "constituency", 10.0), + _household_spec("E14001073", "constituency", 10.0), _household_spec("S14000001", "constituency", 20.0), - _household_spec("E06000001", "local_authority", 10.0), + _household_spec("E09000001", "local_authority", 10.0), _household_spec("S12000005", "local_authority", 20.0), ], country="uk", @@ -244,7 +248,7 @@ def test_uk_local_target_surface_excludes_fanout_from_cross_grain_controls() -> "geography_id": area, }, ) - for area, value in (("E14000001", 30.0), ("S14000001", 15.0)) + for area, value in (("E14001073", 30.0), ("S14000001", 15.0)) ] ) @@ -371,7 +375,7 @@ def test_uk_local_target_surface_refuses_fanout_across_levels() -> None: ( { "ledger_geography_level": "constituency", - "ledger_geography_id": "E14000001", + "ledger_geography_id": "E14001073", }, "dwp.uc.households.*contract.*country", ), @@ -1025,11 +1029,13 @@ def test_household_condition_still_reduces_group_entities(): def test_uk_cross_grain_rule_constants_are_review_pinned(): assert UK_CROSS_GRAIN_GRAIN_PRECEDENCE == ( "country", + "region", "constituency", "la", ) assert UK_CROSS_GRAIN_RULE.grain_precedence == ( "country", + "region", "constituency", "la", ) @@ -1086,19 +1092,50 @@ def test_uk_age_cross_grain_bridges_are_complete_and_exclude_80_89(): ) -def test_uk_age_bridge_rescales_constituency_and_la_to_uk_control(): +def test_uk_age_bridge_rescales_constituency_and_la_to_region_controls(): + """Region-tier rows are the controls; each leg is one region or nation. + + London and the North East stand for the nine English regions (whose + constituencies and authorities resolve their leg through the crosswalk's + ladder-derived membership); Wales, Scotland and Northern Ireland are + Chronicle ``country`` rows that the surface places at the region grain + (microcosm#905), so here they carry ``grain: region`` directly. + """ + national_id = "ons.population.age_0_9_by_region" local_id = "ons.age.0_10" - constituency_values = (25.0, 25.0, 25.0, 24.999) - la_values = (25.0, 25.0, 25.0, 25.001) + controls = { + "E12000007": 100.0, + "E12000001": 50.0, + "W92000004": 40.0, + "S92000003": 30.0, + "N92000002": 20.0, + } + constituencies = { + "E14001073": 60.0, # London + "E14001101": 20.0, # North East + "W07000041": 30.0, + "S14000001": 25.0, + "N06000001": 15.0, + } + authorities = { + "E09000001": 80.0, # London + "E06000001": 60.0, # North East + "W06000001": 50.0, + "S12000005": 20.0, + "N09000001": 10.0, + } surface = pd.DataFrame( [ - { - "grain": "country", - "geography_id": "K02000001", - "target_id": national_id, - "value": 100.0, - }, + *[ + { + "grain": "region", + "geography_id": code, + "target_id": national_id, + "value": value, + } + for code, value in controls.items() + ], *[ { "grain": "constituency", @@ -1106,11 +1143,7 @@ def test_uk_age_bridge_rescales_constituency_and_la_to_uk_control(): "target_id": local_id, "value": value, } - for area, value in zip( - ("E14000001", "W07000041", "S14000001", "N06000001"), - constituency_values, - strict=True, - ) + for area, value in constituencies.items() ], *[ { @@ -1119,25 +1152,25 @@ def test_uk_age_bridge_rescales_constituency_and_la_to_uk_control(): "target_id": local_id, "value": value, } - for area, value in zip( - ("E06000001", "W06000001", "S12000005", "N09000001"), - la_values, - strict=True, - ) + for area, value in authorities.items() ], ] ) - reconciled, receipt = apply_uk_cross_grain_reconciliation( surface, (national_id,), ) - - assert reconciled.loc[reconciled["grain"] == "constituency", "value"].sum() == ( - pytest.approx(100.0) + expected_controls = list(controls.values()) + assert reconciled.loc[reconciled["grain"] == "region", "value"].tolist() == ( + expected_controls ) - assert reconciled.loc[reconciled["grain"] == "la", "value"].sum() == pytest.approx( - 100.0 + # One lower row per leg at each grain, so each is rescaled onto its own + # region's control, never onto a UK or England total. + assert reconciled.loc[ + reconciled["grain"] == "constituency", "value" + ].tolist() == pytest.approx(expected_controls) + assert reconciled.loc[reconciled["grain"] == "la", "value"].tolist() == ( + pytest.approx(expected_controls) ) groups = [ group @@ -1145,23 +1178,26 @@ def test_uk_age_bridge_rescales_constituency_and_la_to_uk_control(): if group["bridge_id"] == "national_age_0_9_vs_local_age_0_10" ] assert {group["legs"][0]["reason"] for group in groups} == { - "standing cross-grain rule: country controls constituency", - "standing cross-grain rule: country controls la", + "standing cross-grain rule: region controls constituency", + "standing cross-grain rule: region controls la", } - assert all(group["winning_grain"] == "country" for group in groups) + assert all(group["winning_grain"] == "region" for group in groups) for group in groups: - assert len(group["legs"]) == 1 - leg = group["legs"][0] - assert leg["parent_geography_id"] == "K02000001" - assert leg["leg"] == "England+Wales+Scotland+Northern Ireland" - assert leg["new_total"] == pytest.approx(100.0) - assert leg["declared_factor"] == pytest.approx(1.0, abs=2e-5) + assert [leg["leg"] for leg in group["legs"]] == sorted(controls) + for leg in group["legs"]: + assert leg["parent_geography_id"] == leg["leg"] + assert leg["new_total"] == pytest.approx(controls[leg["leg"]]) + london = next( + leg for leg in groups[0]["legs"] if leg["parent_geography_id"] == "E12000007" + ) + assert london["old_total"] in {60.0, 80.0} + assert london["declared_factor"] == pytest.approx(100.0 / london["old_total"]) def test_uk_empty_leg_licences_require_complete_signed_deferral_coverage(): membership = { "areas_by_geography_level": { - "local_authority": ["E06000001", "S12000005", "S12000006"], + "local_authority": ["E09000001", "S12000005", "S12000006"], }, "signed_deferrals": [ { @@ -1178,7 +1214,7 @@ def test_uk_empty_leg_licences_require_complete_signed_deferral_coverage(): } assert _uk_licensed_empty_legs_from_membership(membership) == { - "voa.council_tax_stock.by_area.band_a": frozenset({"Scotland"}), + "voa.council_tax_stock.by_area.band_a": frozenset({"S92000003"}), } @@ -1202,7 +1238,7 @@ def test_committed_contract_detects_exact_uc_payment_partition(): ], { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "dwp.uc.households_by_area", "value": 30.0, }, @@ -1274,7 +1310,7 @@ def test_real_uk_bridges_resolve_contract_lower_sides(): ], { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "ons.census.households", "value": 40.0, }, @@ -1304,7 +1340,7 @@ def test_real_uk_bridges_resolve_contract_lower_sides(): }, { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "dwp.uc.households_by_area", "value": 30.0, }, @@ -1351,7 +1387,7 @@ def test_partially_bound_household_composition_bridge_stays_unbound_with_reviewe ], { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "ons.census.households", "value": 40.0, }, @@ -1461,7 +1497,7 @@ def test_uk_front_door_reconciles_per_country_legs_and_builds_uniform_surface(): }, { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "dwp.uc.households_by_area", "value": 30.0, }, @@ -1483,7 +1519,7 @@ def test_uk_front_door_reconciles_per_country_legs_and_builds_uniform_surface(): index=pd.Index([1, 2], name="household_id"), ) assigned = pd.Series( - ["E14000001", "S14000001"], + ["E14001073", "S14000001"], index=metrics.index, ) @@ -1623,13 +1659,13 @@ def _census_household_registry(*extra: TargetSpec) -> TargetRegistry: return TargetRegistry( [ _household_spec( - "E14000001", "constituency", 10.0, from_period=2021, to_period=2025 + "E14001073", "constituency", 10.0, from_period=2021, to_period=2025 ), _household_spec( "S14000001", "constituency", 20.0, from_period=2022, to_period=2025 ), _household_spec( - "E06000001", "local_authority", 12.0, from_period=2021, to_period=2025 + "E09000001", "local_authority", 12.0, from_period=2021, to_period=2025 ), _household_spec( "S12000005", "local_authority", 18.0, from_period=2022, to_period=2025 @@ -1698,7 +1734,7 @@ def test_uk_local_target_surface_uprates_households_and_tenure_by_grain() -> Non } registry = _census_household_registry( composition_spec, - _tenure_spec("E06000001", 5.0, from_period=2021, to_period=2025), + _tenure_spec("E09000001", 5.0, from_period=2021, to_period=2025), _tenure_spec("S12000005", 4.0, from_period=2022, to_period=2025), _tenure_spec("E06000002", 3.0), ) @@ -1749,7 +1785,7 @@ def test_uk_local_target_surface_refuses_ineligible_household_denominator() -> N uprating = uk_census_household_uprating(registry, reference, period=2025) bad_specs = list(registry.specs) bad_specs[0] = _household_spec( - "E14000001", "constituency", 10.0, from_period=2020, to_period=2025 + "E14001073", "constituency", 10.0, from_period=2020, to_period=2025 ) with pytest.raises(ValueError, match="denominator.*not eligible"): uk_local_target_surface( @@ -1765,7 +1801,7 @@ def _private_rent_target_frame() -> pd.DataFrame: [ { "area_type": "la", - "area_code": "E06000001", + "area_code": "E09000001", "metric": "rent/private_rent", "family": "private_rent", "value": 1_000.0, @@ -1773,7 +1809,7 @@ def _private_rent_target_frame() -> pd.DataFrame: }, { "area_type": "la", - "area_code": "E06000001", + "area_code": "E09000001", "metric": "tenure/private_rent", "family": "tenure", "value": 20.0, @@ -1838,7 +1874,7 @@ def test_uk_private_rent_mean_to_total_composes_and_receipts_cells() -> None: "renter_count_source": "ons.tenure.private_rent (A17-uprated)", "cells_detail": [ { - "area_code": "E06000001", + "area_code": "E09000001", "mean_monthly_rent": 1_000.0, "renter_households": 20.0, "total": 240_000.0, @@ -1876,10 +1912,10 @@ def test_uk_private_rent_mean_to_total_refuses_invalid_inputs_by_area( ) -> None: frame = _private_rent_target_frame() frame.loc[ - (frame["area_code"] == "E06000001") & (frame["metric"] == metric), "value" + (frame["area_code"] == "E09000001") & (frame["metric"] == metric), "value" ] = value - with pytest.raises(ValueError, match="E06000001"): + with pytest.raises(ValueError, match="E09000001"): uk_private_rent_mean_to_total(frame) @@ -1910,7 +1946,7 @@ def spec(name, metric, value): metadata={ "contract_target_id": name.split("@", 1)[0], "geography_level": "local_authority", - "geography_id": "E06000001", + "geography_id": "E09000001", "uprating_from_period": 2021, "uprating_to_period": 2025, }, @@ -1972,7 +2008,7 @@ def test_tenure_receipt_counts_attempted_and_skipped_holds( from_period, to_period, reason, eligible ): registry = _census_household_registry( - _tenure_spec("E06000001", 5.0, from_period=from_period, to_period=to_period) + _tenure_spec("E09000001", 5.0, from_period=from_period, to_period=to_period) ) reference = uk_ledger_households_total( (_households_total_fact(2025, 33.0),), period=2025 @@ -1995,3 +2031,192 @@ def test_tenure_receipt_counts_attempted_and_skipped_holds( assert surface.loc[ surface["metric"] == "tenure/social_rent", "value" ].tolist() == pytest.approx([5.5 if eligible else 5.0]) + + +def test_uk_cross_grain_legs_are_the_region_tier() -> None: + codes = list(UK_REGION_TIER_CODES) + assert len(codes) == 12 + english = [code for code in codes if code.startswith("E12")] + assert len(english) == 9 + legs = UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS + for code in codes: + assert legs[code] == (code,) + assert legs["K02000001"] == tuple(codes) + assert legs["K03000001"] == (*english, "W92000004", "S92000003") + assert legs["E92000001"] == tuple(english) + assert UK_CROSS_GRAIN_RULE.parent_geography_legs is legs + assert "England" not in {leg for legs_ in legs.values() for leg in legs_} + + +def test_uk_cross_grain_leg_of_area_resolves_regions_nations_and_refuses() -> None: + # Tier codes are their own leg. + assert _uk_cross_grain_leg_of_area("E12000007") == "E12000007" + assert _uk_cross_grain_leg_of_area("W92000004") == "W92000004" + # Nations resolve by GSS prefix without a crosswalk lookup. + assert _uk_cross_grain_leg_of_area("W07000041") == "W92000004" + assert _uk_cross_grain_leg_of_area("S14000001") == "S92000003" + assert _uk_cross_grain_leg_of_area("N06000001") == "N92000002" + # English areas resolve through the crosswalk's ladder-derived membership. + assert _uk_cross_grain_leg_of_area("E14001073") == "E12000007" + assert _uk_cross_grain_leg_of_area("E09000001") == "E12000007" + assert _uk_cross_grain_leg_of_area("E06000001") == "E12000001" + with pytest.raises(ValueError, match="not in the local-area crosswalk"): + _uk_cross_grain_leg_of_area("E14000001") + with pytest.raises(ValueError, match="Unknown UK area code prefix"): + _uk_cross_grain_leg_of_area("X12345678") + with pytest.raises(ValueError, match="must not be blank"): + _uk_cross_grain_leg_of_area(" ") + + +def test_align_uk_national_registry_parity_fixture_renames_regional_rows() -> None: + fixture = { + "rows": [ + {"name": "ons/london_age_0_9", "value": 1.0, "period": 2025}, + {"name": "ons/yorkshire_and_the_humber_age_80_89", "value": 2.0}, + {"name": "ons/northern_ireland_age_10_19", "value": 3.0}, + {"name": "voa/council_tax/NORTH_EAST/A", "value": 4.0}, + {"name": "voa/council_tax/LONDON/total", "value": 5.0}, + {"name": "voa/council_tax/WALES/A", "value": 6.0}, + {"name": "ons/female_0_4", "value": 7.0}, + {"name": "ons/uk_population", "value": 8.0}, + "not-a-row", + ] + } + aligned = align_uk_national_registry_parity_fixture(fixture) + assert [ + row if isinstance(row, str) else row["name"] for row in aligned["rows"] + ] == [ + "ons.population.age_0_9_by_region@E12000007", + "ons.population.age_80_89_by_region@E12000003", + "ons.population.age_10_19_by_region@N92000002", + "voa.council_tax_stock.band_a@E12000001", + "voa.council_tax_stock.total@E12000007", + "voa/council_tax/WALES/A", + "ons/female_0_4", + "ons/uk_population", + "not-a-row", + ] + london = aligned["rows"][0] + assert london["measure"] == london["name"] + assert london["contract_target_id"] == "ons.population.age_0_9_by_region" + assert london["value"] == 1.0 and london["period"] == 2025 + # The input is never mutated. + assert fixture["rows"][0]["name"] == "ons/london_age_0_9" + + +def _region_tier_control_spec( + area: str, + value: float, + *, + ledger_level: str, + cross_grain_grain: str | None, +) -> TargetSpec: + metadata = { + "contract_target_id": "ons.population.age_0_9_by_region", + "ledger_geography_level": ledger_level, + "ledger_geography_id": area, + } + if cross_grain_grain is not None: + metadata["cross_grain_grain"] = cross_grain_grain + return TargetSpec( + name=f"ons.population.age_0_9_by_region@{area}", + entity="person", + value=value, + measure=f"ons.population.age_0_9_by_region@{area}", + period=2025, + source="synthetic region tier", + family="ons_population", + metadata=metadata, + ) + + +def _local_age_spec(area: str, value: float) -> TargetSpec: + return TargetSpec( + name=f"ons.age.0_10@{area}", + entity="person", + value=value, + measure="age/0_10", + period=2025, + source="synthetic local age", + family="ons_population", + metadata={ + "contract_target_id": "ons.age.0_10", + "geography_level": "constituency", + "geography_id": area, + }, + ) + + +def test_uk_local_target_surface_places_nation_rows_at_the_region_grain() -> None: + """Chronicle stamps Wales at ``country``; the stamp must not outrank London.""" + + registry = TargetRegistry( + [ + _region_tier_control_spec( + "E12000007", 100.0, ledger_level="region", cross_grain_grain="region" + ), + _region_tier_control_spec( + "W92000004", 40.0, ledger_level="country", cross_grain_grain="region" + ), + _local_age_spec("E14001073", 60.0), + _local_age_spec("W07000041", 30.0), + ], + country="uk", + ) + surface, receipt = uk_local_target_surface( + registry, + bound_national_target_ids=("ons.population.age_0_9_by_region",), + period=2025, + ) + age = surface.loc[surface["metric"] == "age/0_10"] + assert age["value"].tolist() == pytest.approx([100.0, 40.0]) + group = next( + group + for group in receipt["groups"] + if group["bridge_id"] == "national_age_0_9_vs_local_age_0_10" + ) + assert group["winning_grain"] == "region" + assert [leg["parent_geography_id"] for leg in group["legs"]] == [ + "E12000007", + "W92000004", + ] + + +def test_uk_local_target_surface_refuses_a_nation_row_left_at_country_grain() -> None: + registry = TargetRegistry( + [ + _region_tier_control_spec( + "E12000007", 100.0, ledger_level="region", cross_grain_grain="region" + ), + _region_tier_control_spec( + "W92000004", 40.0, ledger_level="country", cross_grain_grain=None + ), + _local_age_spec("E14001073", 60.0), + _local_age_spec("W07000041", 30.0), + ], + country="uk", + ) + with pytest.raises(ValueError, match="unparented lower-grain leg"): + uk_local_target_surface( + registry, + bound_national_target_ids=("ons.population.age_0_9_by_region",), + period=2025, + ) + + +def test_uk_local_target_surface_refuses_an_unknown_cross_grain_grain() -> None: + registry = TargetRegistry( + [ + _region_tier_control_spec( + "E12000007", 100.0, ledger_level="region", cross_grain_grain="itl2" + ), + _local_age_spec("E14001073", 60.0), + ], + country="uk", + ) + with pytest.raises(ValueError, match="cross_grain_grain 'itl2'"): + uk_local_target_surface( + registry, + bound_national_target_ids=("ons.population.age_0_9_by_region",), + period=2025, + ) diff --git a/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py b/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py index 1a2a9e800e..f4b9b84293 100644 --- a/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py +++ b/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py @@ -9,6 +9,7 @@ import pytest from microcosm.build.country_spec import load_country_spec +from microcosm.build.uk_runtime.geography_ladder import UK_REGION_TIER from tools.generate_uk_local_area_crosswalk import build_local_area_crosswalk LADDER_ARTIFACT = Path("build/uk/uk_oa_ladder_2021.npz") @@ -102,3 +103,28 @@ def test_uk_local_area_crosswalk_pins_rosters_and_vintages() -> None: "S12", "W06", } + + +def test_uk_local_area_crosswalk_carries_region_tier_membership() -> None: + resource = _load() + tier = {code for _, code in UK_REGION_TIER} + nation_by_prefix = {"W": "W92000004", "S": "S92000003", "N": "N92000002"} + for payload in resource["levels"].values(): + by_area = payload["region_code_by_area"] + assert set(by_area) == set(payload["area_ids"]) + assert set(by_area.values()) <= tier + for area_id, region in by_area.items(): + if area_id.startswith("E"): + assert region.startswith("E12"), (area_id, region) + else: + assert region == nation_by_prefix[area_id[0]], (area_id, region) + constituency = resource["levels"]["constituency"]["region_code_by_area"] + local_authority = resource["levels"]["local_authority"]["region_code_by_area"] + # London: 75 constituencies and 33 authorities (32 boroughs + the City); + # the North East holds 12 authorities. Nation counts follow the rosters. + assert sum(region == "E12000007" for region in constituency.values()) == 75 + assert sum(region == "E12000007" for region in local_authority.values()) == 33 + assert sum(region == "E12000001" for region in local_authority.values()) == 12 + assert sum(region == "S92000003" for region in local_authority.values()) == 32 + assert sum(region == "W92000004" for region in local_authority.values()) == 22 + assert sum(region == "N92000002" for region in local_authority.values()) == 11 diff --git a/packages/microcosm-build/tests/test_uk_target_references.py b/packages/microcosm-build/tests/test_uk_target_references.py index 76e10881e8..d35f0cf5a7 100644 --- a/packages/microcosm-build/tests/test_uk_target_references.py +++ b/packages/microcosm-build/tests/test_uk_target_references.py @@ -37,6 +37,10 @@ from microcosm.build.uk_runtime.chronicle_feed import ( load_uk_chronicle_feed, ) +from microcosm.build.uk_runtime.geography_ladder import ( + UK_REGION_TIER, + UK_REGION_TIER_ENUM, +) from microcosm.build.uk_runtime.local_target_census import _LEDGER_FACT_FEED_PIN from microcosm.calibrate.matrix import build_constraint_matrix from microcosm.frame import EntitySchema, Frame, WeightKind, Weights diff --git a/tools/build_uk_ledger_compile_parity_signed_differences.py b/tools/build_uk_ledger_compile_parity_signed_differences.py index 0a3f2acf63..0f798f0f8f 100644 --- a/tools/build_uk_ledger_compile_parity_signed_differences.py +++ b/tools/build_uk_ledger_compile_parity_signed_differences.py @@ -12,6 +12,7 @@ from microcosm.build.uk_runtime.ledger_targets import ( LOCAL_REGISTRY_PARITY_FIXTURE_RESOURCE, align_uk_local_registry_parity_fixture, + align_uk_national_registry_parity_fixture, compile_uk_local_target_registry, compile_uk_target_registry, ) @@ -382,6 +383,18 @@ def _aligned_fixture(fixture: dict) -> dict: return aligned +_REGION_TIER_ONS_DRIFT_RATIONALE = ( + "Region-tier ONS population cell (microcosm#905): the Ledger row binds the " + "ONS mid-year estimate by single year of age at Chronicle's region or " + "country stamp, held to the comparison period as identity, while the " + "incumbent's regional row is an ONS subnational projection rounded to the " + "nearest thousand. The difference is projection-versus-estimate vintage " + "and rounding, never area or band definition: the nine English regions " + "and three nations sum exactly to the retired UK-wide row of the same " + "publication." +) + + def _add_signed_rationale_notes( report: dict[str, object], *, @@ -414,6 +427,8 @@ def _add_signed_rationale_notes( "baseline; it does not redatum the observations to the comparison " "year or create a new year ruling." ) + elif "_by_region@" in name and row.get("kind") == "calibration_drift": + row["reason"] = _REGION_TIER_ONS_DRIFT_RATIONALE elif fixture_resource != "registry_parity_fixture_2025.json": continue elif name in _CGT_OBSERVED_RATIONALES: @@ -475,7 +490,7 @@ def _fixture_for_receipt(spec: ParityReceiptSpec) -> dict: fixture = _aligned_fixture(_load_fixture(spec.fixture_resource)) if spec.surface == "local": return align_uk_local_registry_parity_fixture(fixture) - return fixture + return align_uk_national_registry_parity_fixture(fixture) def main() -> None: diff --git a/tools/generate_uk_local_area_crosswalk.py b/tools/generate_uk_local_area_crosswalk.py index c35bd022e9..938e2fcc08 100644 --- a/tools/generate_uk_local_area_crosswalk.py +++ b/tools/generate_uk_local_area_crosswalk.py @@ -11,6 +11,11 @@ import numpy as np +from microcosm.build.uk_runtime.geography_ladder import ( + UK_LADDER_NATION_REGION_CODES, + UK_REGION_TIER, +) + DEFAULT_LADDER_ARTIFACT = Path("build/uk/uk_oa_ladder_2021.npz") DEFAULT_LADDER_SUMMARY = Path("build/uk/ladder_summary.json") DEFAULT_OUTPUT = Path( @@ -131,13 +136,19 @@ def _level_payload( ) -> dict[str, Any]: if code_column not in payload.files: raise ValueError(f"UK OA ladder artifact is missing {code_column!r}.") - area_ids = sorted({str(value) for value in np.asarray(payload[code_column])}) + if "region_code" not in payload.files: + raise ValueError("UK OA ladder artifact is missing 'region_code'.") + codes = np.asarray(payload[code_column]).astype(str) + area_ids = sorted(set(codes)) expected = EXPECTED_COUNTS[level] if len(area_ids) != expected: raise ValueError( f"UK OA ladder {level} roster has {len(area_ids)} area id(s), " f"expected {expected}." ) + region_code_by_area = _region_tier_by_area( + codes, np.asarray(payload["region_code"]).astype(str), level=level + ) layers = metadata.get("layers") or {} layer = layers.get(ladder_layer) or {} ladder_vintage = str(layer.get("vintage") or "") @@ -172,9 +183,42 @@ def _level_payload( "expected_vintage": EXPECTED_FACT_VINTAGE[level], "area_count": len(area_ids), "area_ids": area_ids, + "region_code_by_area": region_code_by_area, } +def _region_tier_by_area( + codes: np.ndarray, + regions: np.ndarray, + *, + level: str, +) -> dict[str, str]: + """Map every area id to the one region-tier code its output areas carry. + + The ladder stamps each OA with a region code (``E12`` for England, the + nation pseudo-codes elsewhere). The region tier nests constituencies and + authorities exactly, so an area whose OAs disagree is a ladder defect and + refuses here rather than becoming a leg that belongs to two controls. + """ + + tier_codes = {code for _, code in UK_REGION_TIER} + region_by_area: dict[str, str] = {} + for area_id, region in zip(codes.tolist(), regions.tolist(), strict=True): + tier = UK_LADDER_NATION_REGION_CODES.get(region, region) + if tier not in tier_codes: + raise ValueError( + f"UK OA ladder {level} area {area_id!r} carries region code " + f"{region!r}, which is outside the region tier." + ) + previous = region_by_area.setdefault(area_id, tier) + if previous != tier: + raise ValueError( + f"UK OA ladder {level} area {area_id!r} spans region-tier codes " + f"{previous!r} and {tier!r}; the region tier must nest." + ) + return dict(sorted(region_by_area.items())) + + def _sha256(path: Path) -> str: digest = hashlib.sha256() with path.open("rb") as file: From 37b857ea16f986b79cfce03e3fa573d964ff2e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:48:15 +0200 Subject: [PATCH 04/12] Record the region-tier calibration comparison on the spine-q pool (#905) Two tools/calibrate_uk_national_dataset.py runs on spine-q.h5 with the same overrides (epochs 1500, family_equal, lr 0.02): this branch's 595-reference register against PR #904's 424-reference register. All 108 ONS region cells and 78 of 81 VOA cells fit within 5% (median |error| < 0.1%); the three band-H cells with no band-H household on the spine sit at -100%, the class already signed for the local band-H family. Common-row fit is unchanged within run noise. Co-Authored-By: Claude Fable 5.1 --- .../calibration-comparison.json | 1309 +++++++++++++++++ 1 file changed, 1309 insertions(+) create mode 100644 docs/evidence/uk-region-tier-905/calibration-comparison.json diff --git a/docs/evidence/uk-region-tier-905/calibration-comparison.json b/docs/evidence/uk-region-tier-905/calibration-comparison.json new file mode 100644 index 0000000000..78b2096f40 --- /dev/null +++ b/docs/evidence/uk-region-tier-905/calibration-comparison.json @@ -0,0 +1,1309 @@ +{ + "issue": "microcosm#905", + "pr": "microcosm#906", + "arm": { + "tool": "tools/calibrate_uk_national_dataset.py", + "input_h5": "spine-q.h5 (sha256 cf1f9dda198a06819241ed3358f68dd99c675eb7ca45fa766a3ed4b07eb0337f, the 2026-09-10 spine-q national pool)", + "chronicle_feed": "c6f9361 (facts 45bda3ae730d4ae3\u2026)", + "doctrine_overrides": { + "epochs": 1500, + "target_weight_rule": "family_equal", + "learning_rate": 0.02 + }, + "measure_exclusions": "packaged register (50 entries)", + "baseline": "PR #904 head a256c880 register (424 references, 374 after exclusions), run from the same code line with the same overrides", + "candidate": "this branch (595 references, 545 after exclusions)", + "run_date": "2026-09-11" + }, + "summary": { + "new": { + "final_loss": 0.012833430074165722, + "fraction_within_10pct": 0.9651376146788991, + "effective_sample_size": 10469.196661388754, + "n_nonzero": 52846, + "n_targets": 545, + "epochs": 1500, + "lr": 0.02, + "rule": "family_equal" + }, + "base": { + "final_loss": 0.011201580832300414, + "fraction_within_10pct": 0.9572192513368984, + "effective_sample_size": 10350.410607719752, + "n_nonzero": 52846, + "n_targets": 374, + "epochs": 1500, + "lr": 0.02, + "rule": "family_equal" + } + }, + "region_cells": { + "ons_population": { + "count": 108, + "bands": { + "within_5pct": 108 + }, + "median_abs_relative_error": 0.0008058624515383759, + "max_abs_relative_error": 0.0053138121847288 + }, + "council_tax_stock": { + "count": 81, + "bands": { + "within_5pct": 78, + "outside_25pct": 3 + }, + "median_abs_relative_error": 0.0008923704864915138, + "max_abs_relative_error": 1.0 + } + }, + "region_cells_outside_bound": [ + { + "name": "voa.council_tax_stock.band_h@E12000001@2025", + "target": 1570.0, + "final_estimate": 0.0, + "relative_error": -1.0 + }, + { + "name": "voa.council_tax_stock.band_h@E12000002@2025", + "target": 7350.0, + "final_estimate": 0.0, + "relative_error": -1.0 + }, + { + "name": "voa.council_tax_stock.band_h@E12000003@2025", + "target": 3770.0, + "final_estimate": 0.0, + "relative_error": -1.0 + } + ], + "common_rows": { + "count": 356, + "abs_relative_error_bands": { + "base": { + "\u22645%": 332, + "\u226425%": 16, + "\u226410%": 8 + }, + "new": { + "\u22645%": 329, + "\u226425%": 15, + "\u226410%": 11, + ">25%": 1 + } + }, + "largest_movers": [ + { + "name": "obr.fuel_duties_cars@2025", + "baseline_relative_error": -0.14874191635126816, + "candidate_relative_error": -0.2387073236943142 + }, + { + "name": "dwp.uc.households_children_2@2025", + "baseline_relative_error": -0.07423798754008737, + "candidate_relative_error": -0.11569793290357122 + }, + { + "name": "hmrc/self_employment_income_income_band_50_000_to_70_000@2025", + "baseline_relative_error": 0.10902101291923244, + "candidate_relative_error": 0.07925852300729519 + }, + { + "name": "hmrc/state_pension_income_band_50_000_to_70_000@2025", + "baseline_relative_error": 0.04892218279337719, + "candidate_relative_error": 0.07014864401180938 + }, + { + "name": "hmrc/employment_income_income_band_50_000_to_70_000@2025", + "baseline_relative_error": 0.005328092560829776, + "candidate_relative_error": 0.02569959647002753 + }, + { + "name": "dwp.uc.households_children_1@2025", + "baseline_relative_error": -0.1808694470241334, + "candidate_relative_error": -0.1624071771211329 + }, + { + "name": "hmrc/employment_income_count_income_band_50_000_to_70_000@2025", + "baseline_relative_error": 0.006782008244633626, + "candidate_relative_error": 0.02216570303239588 + }, + { + "name": "hmrc/self_employment_income_income_band_20_000_to_30_000@2025", + "baseline_relative_error": 0.23605705188216192, + "candidate_relative_error": 0.25002720010212287 + }, + { + "name": "hmrc/state_pension_count_income_band_50_000_to_70_000@2025", + "baseline_relative_error": -0.018344147739413747, + "candidate_relative_error": -0.0047736985374449556 + }, + { + "name": "obr.child_benefit@2025", + "baseline_relative_error": 0.17894631373311598, + "candidate_relative_error": 0.1916386692045426 + }, + { + "name": "hmrc/state_pension_income_band_30_000_to_40_000@2025", + "baseline_relative_error": 0.13063666449127925, + "candidate_relative_error": 0.14228621539638722 + }, + { + "name": "hmrc/private_pension_income_income_band_300_000_to_500_000@2025", + "baseline_relative_error": -0.1018267139192942, + "candidate_relative_error": -0.11249834732979813 + } + ] + }, + "terminal_gate_messages": { + "candidate": [ + "microcosm_uk_2024: voa.council_tax_stock.band_h@E12000001@2025 relative error -100.0% exceeds 25%.", + "microcosm_uk_2024: voa.council_tax_stock.band_h@E12000002@2025 relative error -100.0% exceeds 25%.", + "microcosm_uk_2024: voa.council_tax_stock.band_h@E12000003@2025 relative error -100.0% exceeds 25%.", + "microcosm_uk_2024: hmrc/self_employment_income_income_band_20_000_to_30_000@2025 relative error +25.0% exceeds 25%.", + "Stale reviewed target-fit exclusions are back inside the bound; remove them: ['obr.fuel_duties_cars@2025']." + ], + "baseline": [] + }, + "reading": [ + "Every ONS region cell and 78 of 81 VOA cells fit within 5%; the tier binds as published.", + "The three band-H cells at -100% (North East, North West, Yorkshire and the Humber) have no band-H household on the spine (spine-m carried 170 band-H households from 49 raw FRS households, none in those regions; microcosm#762 A14), the class already signed for the local band-H family; they need a reviewed measure exclusion or a spine vintage with broader band-H support (microcosm#796).", + "Common-row fit is unchanged within run noise (332->329 within 5%, 16->15 within 25%); hmrc/self_employment_income_income_band_20_000_to_30_000 sits at the 25% bound (+23.6% -> +25.0%) and obr.fuel_duties_cars moves -14.9% -> -23.9% while staying inside its reviewed target-fit exclusion, which the gate now reports as stale; both belong to the #890/PR-S lane.", + "The baseline run refused to stage for want of MICROCOSM_UK_TERMINAL_GATE_SIGNING_KEY (an unsigned full-scale run under the #904 round-2 runner); its solve and diagnostics completed." + ], + "region_cell_rows": [ + { + "name": "ons.population.age_0_9_by_region@E12000001@2025", + "target": 285165.0, + "final_estimate": 285503.6717033386, + "relative_error": 0.0011876341884124034 + }, + { + "name": "ons.population.age_0_9_by_region@E12000002@2025", + "target": 865892.0, + "final_estimate": 866269.0863260374, + "relative_error": 0.0004354888670150748 + }, + { + "name": "ons.population.age_0_9_by_region@E12000003@2025", + "target": 626938.0, + "final_estimate": 627769.9211111069, + "relative_error": 0.0013269591428608132 + }, + { + "name": "ons.population.age_0_9_by_region@E12000004@2025", + "target": 543004.0, + "final_estimate": 543452.6816167831, + "relative_error": 0.0008262952331532403 + }, + { + "name": "ons.population.age_0_9_by_region@E12000005@2025", + "target": 718837.0, + "final_estimate": 719058.727563858, + "relative_error": 0.0003084531873818852 + }, + { + "name": "ons.population.age_0_9_by_region@E12000006@2025", + "target": 744698.0, + "final_estimate": 745749.9893870722, + "relative_error": 0.001412638931583215 + }, + { + "name": "ons.population.age_0_9_by_region@E12000007@2025", + "target": 1054493.0, + "final_estimate": 1054461.0709514618, + "relative_error": -3.0279052149429163e-05 + }, + { + "name": "ons.population.age_0_9_by_region@E12000008@2025", + "target": 1059434.0, + "final_estimate": 1059683.762228012, + "relative_error": 0.0002357506253453117 + }, + { + "name": "ons.population.age_0_9_by_region@E12000009@2025", + "target": 575506.0, + "final_estimate": 575860.0710201263, + "relative_error": 0.0006152342810089604 + }, + { + "name": "ons.population.age_0_9_by_region@W92000004@2025", + "target": 321552.0, + "final_estimate": 321505.325094223, + "relative_error": -0.0001451550784227047 + }, + { + "name": "ons.population.age_0_9_by_region@S92000003@2025", + "target": 527989.0, + "final_estimate": 528191.4859447479, + "relative_error": 0.00038350409714582085 + }, + { + "name": "ons.population.age_0_9_by_region@N92000002@2025", + "target": 229505.0, + "final_estimate": 230063.32855772972, + "relative_error": 0.0024327511719993947 + }, + { + "name": "ons.population.age_10_19_by_region@E12000001@2025", + "target": 326306.0, + "final_estimate": 326587.9696941376, + "relative_error": 0.0008641265993808672 + }, + { + "name": "ons.population.age_10_19_by_region@E12000002@2025", + "target": 952864.0, + "final_estimate": 953203.7975921631, + "relative_error": 0.0003566066009032621 + }, + { + "name": "ons.population.age_10_19_by_region@E12000003@2025", + "target": 696780.0, + "final_estimate": 696736.0747246742, + "relative_error": -6.304037906624063e-05 + }, + { + "name": "ons.population.age_10_19_by_region@E12000004@2025", + "target": 615630.0, + "final_estimate": 616242.5096559525, + "relative_error": 0.0009949314620022638 + }, + { + "name": "ons.population.age_10_19_by_region@E12000005@2025", + "target": 785062.0, + "final_estimate": 784612.4041187649, + "relative_error": -0.0005726883752303478 + }, + { + "name": "ons.population.age_10_19_by_region@E12000006@2025", + "target": 785091.0, + "final_estimate": 785450.1543215238, + "relative_error": 0.0004574683973244489 + }, + { + "name": "ons.population.age_10_19_by_region@E12000007@2025", + "target": 1068691.0, + "final_estimate": 1069357.7120399475, + "relative_error": 0.0006238585708567862 + }, + { + "name": "ons.population.age_10_19_by_region@E12000008@2025", + "target": 1183235.0, + "final_estimate": 1183354.6526260376, + "relative_error": 0.00010112329844671401 + }, + { + "name": "ons.population.age_10_19_by_region@E12000009@2025", + "target": 677228.0, + "final_estimate": 676662.3395547867, + "relative_error": -0.0008352585026214478 + }, + { + "name": "ons.population.age_10_19_by_region@W92000004@2025", + "target": 374851.0, + "final_estimate": 374520.50541210175, + "relative_error": -0.0008816692176311505 + }, + { + "name": "ons.population.age_10_19_by_region@S92000003@2025", + "target": 612935.0, + "final_estimate": 612301.4511246243, + "relative_error": -0.0010336314215628913 + }, + { + "name": "ons.population.age_10_19_by_region@N92000002@2025", + "target": 252764.0, + "final_estimate": 253121.90686798096, + "relative_error": 0.0014159724801829257 + }, + { + "name": "ons.population.age_20_29_by_region@E12000001@2025", + "target": 343015.0, + "final_estimate": 343298.21336364746, + "relative_error": 0.0008256588302186812 + }, + { + "name": "ons.population.age_20_29_by_region@E12000002@2025", + "target": 986590.0, + "final_estimate": 986167.8848876953, + "relative_error": -0.00042785261588368774 + }, + { + "name": "ons.population.age_20_29_by_region@E12000003@2025", + "target": 717479.0, + "final_estimate": 717730.1658706665, + "relative_error": 0.0003500672084709154 + }, + { + "name": "ons.population.age_20_29_by_region@E12000004@2025", + "target": 612108.0, + "final_estimate": 612938.680683136, + "relative_error": 0.0013570818926333039 + }, + { + "name": "ons.population.age_20_29_by_region@E12000005@2025", + "target": 766058.0, + "final_estimate": 766312.226764679, + "relative_error": 0.00033186359868176443 + }, + { + "name": "ons.population.age_20_29_by_region@E12000006@2025", + "target": 727218.0, + "final_estimate": 727559.2016601562, + "relative_error": 0.0004691875890809221 + }, + { + "name": "ons.population.age_20_29_by_region@E12000007@2025", + "target": 1508607.0, + "final_estimate": 1510816.1218609917, + "relative_error": 0.001464345492889598 + }, + { + "name": "ons.population.age_20_29_by_region@E12000008@2025", + "target": 1066121.0, + "final_estimate": 1068449.0147972107, + "relative_error": 0.0021836309360857664 + }, + { + "name": "ons.population.age_20_29_by_region@E12000009@2025", + "target": 684393.0, + "final_estimate": 684963.9525032043, + "relative_error": 0.0008342465560056074 + }, + { + "name": "ons.population.age_20_29_by_region@W92000004@2025", + "target": 380557.0, + "final_estimate": 380159.77042007446, + "relative_error": -0.0010438109926385196 + }, + { + "name": "ons.population.age_20_29_by_region@S92000003@2025", + "target": 703554.0, + "final_estimate": 703981.9755580189, + "relative_error": 0.0006083052019019065 + }, + { + "name": "ons.population.age_20_29_by_region@N92000002@2025", + "target": 219525.0, + "final_estimate": 219936.16009140015, + "relative_error": 0.0018729533829866599 + }, + { + "name": "ons.population.age_30_39_by_region@E12000001@2025", + "target": 363357.0, + "final_estimate": 364567.0047531128, + "relative_error": 0.003330071398412011 + }, + { + "name": "ons.population.age_30_39_by_region@E12000002@2025", + "target": 1064968.0, + "final_estimate": 1066027.3056228848, + "relative_error": 0.0009946830542183153 + }, + { + "name": "ons.population.age_30_39_by_region@E12000003@2025", + "target": 770809.0, + "final_estimate": 771402.2469630241, + "relative_error": 0.0007696419774861729 + }, + { + "name": "ons.population.age_30_39_by_region@E12000004@2025", + "target": 676709.0, + "final_estimate": 677005.1930160522, + "relative_error": 0.0004376962860731069 + }, + { + "name": "ons.population.age_30_39_by_region@E12000005@2025", + "target": 839114.0, + "final_estimate": 840639.6241629766, + "relative_error": 0.0018181369432241983 + }, + { + "name": "ons.population.age_30_39_by_region@E12000006@2025", + "target": 895639.0, + "final_estimate": 896961.1368701642, + "relative_error": 0.0014761939466282636 + }, + { + "name": "ons.population.age_30_39_by_region@E12000007@2025", + "target": 1537372.0, + "final_estimate": 1538795.013685714, + "relative_error": 0.0009256144158433923 + }, + { + "name": "ons.population.age_30_39_by_region@E12000008@2025", + "target": 1284552.0, + "final_estimate": 1284663.5725822449, + "relative_error": 8.685719398270606e-05 + }, + { + "name": "ons.population.age_30_39_by_region@E12000009@2025", + "target": 742082.0, + "final_estimate": 742972.1592845917, + "relative_error": 0.0011995430216494604 + }, + { + "name": "ons.population.age_30_39_by_region@W92000004@2025", + "target": 410248.0, + "final_estimate": 410132.7368373871, + "relative_error": -0.00028095971854321056 + }, + { + "name": "ons.population.age_30_39_by_region@S92000003@2025", + "target": 733480.0, + "final_estimate": 733564.972164154, + "relative_error": 0.00011584796334467571 + }, + { + "name": "ons.population.age_30_39_by_region@N92000002@2025", + "target": 254067.0, + "final_estimate": 254869.61031079292, + "relative_error": 0.0031590498206887276 + }, + { + "name": "ons.population.age_40_49_by_region@E12000001@2025", + "target": 320860.0, + "final_estimate": 320975.78416252136, + "relative_error": 0.0003608557081635676 + }, + { + "name": "ons.population.age_40_49_by_region@E12000002@2025", + "target": 930967.0, + "final_estimate": 931396.6014080048, + "relative_error": 0.00046145718162379627 + }, + { + "name": "ons.population.age_40_49_by_region@E12000003@2025", + "target": 674349.0, + "final_estimate": 674647.2358136177, + "relative_error": 0.0004422573676504396 + }, + { + "name": "ons.population.age_40_49_by_region@E12000004@2025", + "target": 610611.0, + "final_estimate": 611337.200507164, + "relative_error": 0.001189301383637048 + }, + { + "name": "ons.population.age_40_49_by_region@E12000005@2025", + "target": 746341.0, + "final_estimate": 746218.2220117175, + "relative_error": -0.00016450655703290851 + }, + { + "name": "ons.population.age_40_49_by_region@E12000006@2025", + "target": 838578.0, + "final_estimate": 839668.7938147325, + "relative_error": 0.0013007660763011434 + }, + { + "name": "ons.population.age_40_49_by_region@E12000007@2025", + "target": 1268973.0, + "final_estimate": 1270481.8430976868, + "relative_error": 0.0011890269514692334 + }, + { + "name": "ons.population.age_40_49_by_region@E12000008@2025", + "target": 1255951.0, + "final_estimate": 1256642.5409812927, + "relative_error": 0.0005506114341186278 + }, + { + "name": "ons.population.age_40_49_by_region@E12000009@2025", + "target": 688417.0, + "final_estimate": 688900.0536308289, + "relative_error": 0.0007016875394257512 + }, + { + "name": "ons.population.age_40_49_by_region@W92000004@2025", + "target": 365951.0, + "final_estimate": 365862.95921230316, + "relative_error": -0.00024058080917073154 + }, + { + "name": "ons.population.age_40_49_by_region@S92000003@2025", + "target": 675368.0, + "final_estimate": 675214.5873394012, + "relative_error": -0.00022715417461110815 + }, + { + "name": "ons.population.age_40_49_by_region@N92000002@2025", + "target": 246140.0, + "final_estimate": 246747.6231725216, + "relative_error": 0.0024686079975688273 + }, + { + "name": "ons.population.age_50_59_by_region@E12000001@2025", + "target": 360074.0, + "final_estimate": 359825.19343185425, + "relative_error": -0.0006909873196780438 + }, + { + "name": "ons.population.age_50_59_by_region@E12000002@2025", + "target": 995810.0, + "final_estimate": 994948.3113002777, + "relative_error": -0.0008653143669196835 + }, + { + "name": "ons.population.age_50_59_by_region@E12000003@2025", + "target": 736903.0, + "final_estimate": 735827.5324363708, + "relative_error": -0.001459442509569306 + }, + { + "name": "ons.population.age_50_59_by_region@E12000004@2025", + "target": 676307.0, + "final_estimate": 675744.0666751862, + "relative_error": -0.0008323635934772859 + }, + { + "name": "ons.population.age_50_59_by_region@E12000005@2025", + "target": 794143.0, + "final_estimate": 793910.0475769043, + "relative_error": -0.000293338130658714 + }, + { + "name": "ons.population.age_50_59_by_region@E12000006@2025", + "target": 866946.0, + "final_estimate": 866431.3785972595, + "relative_error": -0.0005936026035537144 + }, + { + "name": "ons.population.age_50_59_by_region@E12000007@2025", + "target": 1087518.0, + "final_estimate": 1087629.167104721, + "relative_error": 0.00010222093309818259 + }, + { + "name": "ons.population.age_50_59_by_region@E12000008@2025", + "target": 1287719.0, + "final_estimate": 1287543.7127552032, + "relative_error": -0.00013612227884868744 + }, + { + "name": "ons.population.age_50_59_by_region@E12000009@2025", + "target": 784718.0, + "final_estimate": 784617.0222520828, + "relative_error": -0.00012868030033359154 + }, + { + "name": "ons.population.age_50_59_by_region@W92000004@2025", + "target": 424694.0, + "final_estimate": 424227.1545767784, + "relative_error": -0.0010992512802667053 + }, + { + "name": "ons.population.age_50_59_by_region@S92000003@2025", + "target": 766715.0, + "final_estimate": 767274.7197431207, + "relative_error": 0.0007300232069552792 + }, + { + "name": "ons.population.age_50_59_by_region@N92000002@2025", + "target": 255269.0, + "final_estimate": 255798.89809417725, + "relative_error": 0.0020758419321470533 + }, + { + "name": "ons.population.age_60_69_by_region@E12000001@2025", + "target": 349719.0, + "final_estimate": 348729.34380340576, + "relative_error": -0.0028298611073297084 + }, + { + "name": "ons.population.age_60_69_by_region@E12000002@2025", + "target": 884043.0, + "final_estimate": 882292.1419252501, + "relative_error": -0.0019805123447048803 + }, + { + "name": "ons.population.age_60_69_by_region@E12000003@2025", + "target": 652931.0, + "final_estimate": 651494.4082927704, + "relative_error": -0.0022002197892727017 + }, + { + "name": "ons.population.age_60_69_by_region@E12000004@2025", + "target": 591429.0, + "final_estimate": 591306.7802658081, + "relative_error": -0.0002066515747315308 + }, + { + "name": "ons.population.age_60_69_by_region@E12000005@2025", + "target": 677922.0, + "final_estimate": 677424.5865535736, + "relative_error": -0.0007337325627821366 + }, + { + "name": "ons.population.age_60_69_by_region@E12000006@2025", + "target": 744651.0, + "final_estimate": 744065.6551127802, + "relative_error": -0.0007860660728580706 + }, + { + "name": "ons.population.age_60_69_by_region@E12000007@2025", + "target": 787666.0, + "final_estimate": 787745.8823032379, + "relative_error": 0.0001014164674340584 + }, + { + "name": "ons.population.age_60_69_by_region@E12000008@2025", + "target": 1089421.0, + "final_estimate": 1087074.4476203918, + "relative_error": -0.0021539445077781265 + }, + { + "name": "ons.population.age_60_69_by_region@E12000009@2025", + "target": 736639.0, + "final_estimate": 735123.1935815811, + "relative_error": -0.002057733052986448 + }, + { + "name": "ons.population.age_60_69_by_region@W92000004@2025", + "target": 401775.0, + "final_estimate": 401460.9463453293, + "relative_error": -0.0007816654960381192 + }, + { + "name": "ons.population.age_60_69_by_region@S92000003@2025", + "target": 721727.0, + "final_estimate": 722740.1344937405, + "relative_error": 0.0014037641570018972 + }, + { + "name": "ons.population.age_60_69_by_region@N92000002@2025", + "target": 223111.0, + "final_estimate": 224101.41501760483, + "relative_error": 0.004439113345396811 + }, + { + "name": "ons.population.age_70_79_by_region@E12000001@2025", + "target": 265573.0, + "final_estimate": 265280.5176811218, + "relative_error": -0.001101325507028854 + }, + { + "name": "ons.population.age_70_79_by_region@E12000002@2025", + "target": 669277.0, + "final_estimate": 668989.6631317139, + "relative_error": -0.0004293242831983361 + }, + { + "name": "ons.population.age_70_79_by_region@E12000003@2025", + "target": 504131.0, + "final_estimate": 503835.57861709595, + "relative_error": -0.0005860012236979133 + }, + { + "name": "ons.population.age_70_79_by_region@E12000004@2025", + "target": 466530.0, + "final_estimate": 466326.4743976593, + "relative_error": -0.000436254050844958 + }, + { + "name": "ons.population.age_70_79_by_region@E12000005@2025", + "target": 528207.0, + "final_estimate": 528311.2268753052, + "relative_error": 0.0001973220258443674 + }, + { + "name": "ons.population.age_70_79_by_region@E12000006@2025", + "target": 599882.0, + "final_estimate": 599961.2317267198, + "relative_error": 0.00013207885337410523 + }, + { + "name": "ons.population.age_70_79_by_region@E12000007@2025", + "target": 485057.0, + "final_estimate": 485003.3707332611, + "relative_error": -0.00011056281372888465 + }, + { + "name": "ons.population.age_70_79_by_region@E12000008@2025", + "target": 865392.0, + "final_estimate": 864743.6456069946, + "relative_error": -0.0007492031276061843 + }, + { + "name": "ons.population.age_70_79_by_region@E12000009@2025", + "target": 618254.0, + "final_estimate": 618299.5177974701, + "relative_error": 7.362313461796086e-05 + }, + { + "name": "ons.population.age_70_79_by_region@W92000004@2025", + "target": 321668.0, + "final_estimate": 322086.0869140625, + "relative_error": 0.001299746676892013 + }, + { + "name": "ons.population.age_70_79_by_region@S92000003@2025", + "target": 519252.0, + "final_estimate": 518412.3359107971, + "relative_error": -0.0016170647184852074 + }, + { + "name": "ons.population.age_70_79_by_region@N92000002@2025", + "target": 155382.0, + "final_estimate": 156030.98895168304, + "relative_error": 0.004176731871664958 + }, + { + "name": "ons.population.age_80_89_by_region@E12000001@2025", + "target": 122118.0, + "final_estimate": 122116.24346160889, + "relative_error": -1.4383943326235946e-05 + }, + { + "name": "ons.population.age_80_89_by_region@E12000002@2025", + "target": 324141.0, + "final_estimate": 325005.86228695966, + "relative_error": 0.0026681668994655364 + }, + { + "name": "ons.population.age_80_89_by_region@E12000003@2025", + "target": 243274.0, + "final_estimate": 243290.26535224915, + "relative_error": 6.686021625469844e-05 + }, + { + "name": "ons.population.age_80_89_by_region@E12000004@2025", + "target": 225626.0, + "final_estimate": 225324.1164894104, + "relative_error": -0.0013379819284550522 + }, + { + "name": "ons.population.age_80_89_by_region@E12000005@2025", + "target": 275030.0, + "final_estimate": 275270.5272216797, + "relative_error": 0.0008745490371220867 + }, + { + "name": "ons.population.age_80_89_by_region@E12000006@2025", + "target": 305691.0, + "final_estimate": 305619.07409477234, + "relative_error": -0.00023528957420290795 + }, + { + "name": "ons.population.age_80_89_by_region@E12000007@2025", + "target": 237061.0, + "final_estimate": 236716.1509409168, + "relative_error": -0.0014546849084548195 + }, + { + "name": "ons.population.age_80_89_by_region@E12000008@2025", + "target": 447958.0, + "final_estimate": 447086.0356311798, + "relative_error": -0.001946531524875525 + }, + { + "name": "ons.population.age_80_89_by_region@E12000009@2025", + "target": 313605.0, + "final_estimate": 312918.1152534485, + "relative_error": -0.002190286336479054 + }, + { + "name": "ons.population.age_80_89_by_region@W92000004@2025", + "target": 154319.0, + "final_estimate": 154446.5887966156, + "relative_error": 0.0008267860510734296 + }, + { + "name": "ons.population.age_80_89_by_region@S92000003@2025", + "target": 238904.0, + "final_estimate": 239228.98740386963, + "relative_error": 0.001360326339741607 + }, + { + "name": "ons.population.age_80_89_by_region@N92000002@2025", + "target": 77441.0, + "final_estimate": 77852.50692939758, + "relative_error": 0.0053138121847288 + }, + { + "name": "voa.council_tax_stock.band_a@E12000001@2025", + "target": 667540.0, + "final_estimate": 668483.2188777924, + "relative_error": 0.0014129773164040483 + }, + { + "name": "voa.council_tax_stock.band_a@E12000002@2025", + "target": 1386260.0, + "final_estimate": 1386668.9609966278, + "relative_error": 0.00029501031309264324 + }, + { + "name": "voa.council_tax_stock.band_a@E12000003@2025", + "target": 1070830.0, + "final_estimate": 1071106.2345056534, + "relative_error": 0.00025796298726537485 + }, + { + "name": "voa.council_tax_stock.band_a@E12000004@2025", + "target": 804340.0, + "final_estimate": 804955.8544216156, + "relative_error": 0.0007656642982017562 + }, + { + "name": "voa.council_tax_stock.band_a@E12000005@2025", + "target": 786010.0, + "final_estimate": 785828.5106182098, + "relative_error": -0.00023089958370779142 + }, + { + "name": "voa.council_tax_stock.band_a@E12000006@2025", + "target": 403180.0, + "final_estimate": 403643.102900285, + "relative_error": 0.0011486256765836172 + }, + { + "name": "voa.council_tax_stock.band_a@E12000007@2025", + "target": 144550.0, + "final_estimate": 144528.54875183105, + "relative_error": -0.00014840019487336777 + }, + { + "name": "voa.council_tax_stock.band_a@E12000008@2025", + "target": 367610.0, + "final_estimate": 367448.1831378937, + "relative_error": -0.00044018623570175793 + }, + { + "name": "voa.council_tax_stock.band_a@E12000009@2025", + "target": 473020.0, + "final_estimate": 472912.6387939453, + "relative_error": -0.0002269696969571847 + }, + { + "name": "voa.council_tax_stock.band_b@E12000001@2025", + "target": 206790.0, + "final_estimate": 207272.93676757812, + "relative_error": 0.0023353971061372647 + }, + { + "name": "voa.council_tax_stock.band_b@E12000002@2025", + "target": 705450.0, + "final_estimate": 706093.857217227, + "relative_error": 0.0009126900804124918 + }, + { + "name": "voa.council_tax_stock.band_b@E12000003@2025", + "target": 514190.0, + "final_estimate": 513757.2696018219, + "relative_error": -0.0008415768454814379 + }, + { + "name": "voa.council_tax_stock.band_b@E12000004@2025", + "target": 505610.0, + "final_estimate": 505420.2009305954, + "relative_error": -0.00037538630447301685 + }, + { + "name": "voa.council_tax_stock.band_b@E12000005@2025", + "target": 654140.0, + "final_estimate": 654350.6381837451, + "relative_error": 0.00032200780222137453 + }, + { + "name": "voa.council_tax_stock.band_b@E12000006@2025", + "target": 598950.0, + "final_estimate": 598901.5974283218, + "relative_error": -8.081237445222743e-05 + }, + { + "name": "voa.council_tax_stock.band_b@E12000007@2025", + "target": 499130.0, + "final_estimate": 499755.10285949707, + "relative_error": 0.0012523848686656189 + }, + { + "name": "voa.council_tax_stock.band_b@E12000008@2025", + "target": 687430.0, + "final_estimate": 686701.6530418396, + "relative_error": -0.0010595216358907822 + }, + { + "name": "voa.council_tax_stock.band_b@E12000009@2025", + "target": 644890.0, + "final_estimate": 644656.4423274994, + "relative_error": -0.00036216668346634366 + }, + { + "name": "voa.council_tax_stock.band_c@E12000001@2025", + "target": 196180.0, + "final_estimate": 195561.16912078857, + "relative_error": -0.0031544035029637363 + }, + { + "name": "voa.council_tax_stock.band_c@E12000002@2025", + "target": 616070.0, + "final_estimate": 615056.9691366301, + "relative_error": -0.0016443437651077499 + }, + { + "name": "voa.council_tax_stock.band_c@E12000003@2025", + "target": 432290.0, + "final_estimate": 432190.8517436981, + "relative_error": -0.00022935588679330978 + }, + { + "name": "voa.council_tax_stock.band_c@E12000004@2025", + "target": 403840.0, + "final_estimate": 403513.7962150574, + "relative_error": -0.0008077550142200549 + }, + { + "name": "voa.council_tax_stock.band_c@E12000005@2025", + "target": 526260.0, + "final_estimate": 526829.0571471017, + "relative_error": 0.0010813231997524645 + }, + { + "name": "voa.council_tax_stock.band_c@E12000006@2025", + "target": 739570.0, + "final_estimate": 738989.6436042786, + "relative_error": -0.0007847213863751038 + }, + { + "name": "voa.council_tax_stock.band_c@E12000007@2025", + "target": 1040280.0, + "final_estimate": 1040911.5495267023, + "relative_error": 0.0006070957114452487 + }, + { + "name": "voa.council_tax_stock.band_c@E12000008@2025", + "target": 1075940.0, + "final_estimate": 1076367.3417282104, + "relative_error": 0.0003971798875499091 + }, + { + "name": "voa.council_tax_stock.band_c@E12000009@2025", + "target": 624030.0, + "final_estimate": 623910.069527626, + "relative_error": -0.00019218703006900693 + }, + { + "name": "voa.council_tax_stock.band_d@E12000001@2025", + "target": 113460.0, + "final_estimate": 113535.91244125366, + "relative_error": 0.0006690678763763627 + }, + { + "name": "voa.council_tax_stock.band_d@E12000002@2025", + "target": 363970.0, + "final_estimate": 364172.2722206116, + "relative_error": 0.000555738716409518 + }, + { + "name": "voa.council_tax_stock.band_d@E12000003@2025", + "target": 249530.0, + "final_estimate": 249682.00863170624, + "relative_error": 0.0006091797848204136 + }, + { + "name": "voa.council_tax_stock.band_d@E12000004@2025", + "target": 247850.0, + "final_estimate": 248075.7066001892, + "relative_error": 0.0009106580600734677 + }, + { + "name": "voa.council_tax_stock.band_d@E12000005@2025", + "target": 302500.0, + "final_estimate": 302494.9650115967, + "relative_error": -1.6644589763042356e-05 + }, + { + "name": "voa.council_tax_stock.band_d@E12000006@2025", + "target": 506540.0, + "final_estimate": 507094.8383417863, + "relative_error": 0.0010953495119561995 + }, + { + "name": "voa.council_tax_stock.band_d@E12000007@2025", + "target": 975750.0, + "final_estimate": 975893.4482135773, + "relative_error": 0.00014701328575687472 + }, + { + "name": "voa.council_tax_stock.band_d@E12000008@2025", + "target": 843560.0, + "final_estimate": 843906.1500854492, + "relative_error": 0.0004103443565949295 + }, + { + "name": "voa.council_tax_stock.band_d@E12000009@2025", + "target": 432070.0, + "final_estimate": 431523.3204908371, + "relative_error": -0.0012652568083016706 + }, + { + "name": "voa.council_tax_stock.band_e@E12000001@2025", + "target": 61090.0, + "final_estimate": 60841.29301071167, + "relative_error": -0.004071157133546081 + }, + { + "name": "voa.council_tax_stock.band_e@E12000002@2025", + "target": 216990.0, + "final_estimate": 217100.37469482422, + "relative_error": 0.000508662587327613 + }, + { + "name": "voa.council_tax_stock.band_e@E12000003@2025", + "target": 158600.0, + "final_estimate": 158287.07346630096, + "relative_error": -0.0019730550674592414 + }, + { + "name": "voa.council_tax_stock.band_e@E12000004@2025", + "target": 154970.0, + "final_estimate": 154614.54171562195, + "relative_error": -0.002293723200477846 + }, + { + "name": "voa.council_tax_stock.band_e@E12000005@2025", + "target": 193700.0, + "final_estimate": 193850.2388496399, + "relative_error": 0.0007756264823949023 + }, + { + "name": "voa.council_tax_stock.band_e@E12000006@2025", + "target": 313840.0, + "final_estimate": 313707.998315371, + "relative_error": -0.00042060185007968746 + }, + { + "name": "voa.council_tax_stock.band_e@E12000007@2025", + "target": 585130.0, + "final_estimate": 586220.793222915, + "relative_error": 0.0018641895355135303 + }, + { + "name": "voa.council_tax_stock.band_e@E12000008@2025", + "target": 551730.0, + "final_estimate": 551237.652431488, + "relative_error": -0.0008923704864915138 + }, + { + "name": "voa.council_tax_stock.band_e@E12000009@2025", + "target": 292090.0, + "final_estimate": 292151.2358722687, + "relative_error": 0.000209647274020599 + }, + { + "name": "voa.council_tax_stock.band_f@E12000001@2025", + "target": 26600.0, + "final_estimate": 26478.172035217285, + "relative_error": -0.004579998676041912 + }, + { + "name": "voa.council_tax_stock.band_f@E12000002@2025", + "target": 104330.0, + "final_estimate": 104026.50525665283, + "relative_error": -0.0029089882425684653 + }, + { + "name": "voa.council_tax_stock.band_f@E12000003@2025", + "target": 75690.0, + "final_estimate": 75540.59925603867, + "relative_error": -0.0019738504949310906 + }, + { + "name": "voa.council_tax_stock.band_f@E12000004@2025", + "target": 73920.0, + "final_estimate": 73899.63159942627, + "relative_error": -0.00027554654455804205 + }, + { + "name": "voa.council_tax_stock.band_f@E12000005@2025", + "target": 105630.0, + "final_estimate": 105265.54351615906, + "relative_error": -0.0034503122582688855 + }, + { + "name": "voa.council_tax_stock.band_f@E12000006@2025", + "target": 172960.0, + "final_estimate": 172699.23252487183, + "relative_error": -0.0015076750412128458 + }, + { + "name": "voa.council_tax_stock.band_f@E12000007@2025", + "target": 298920.0, + "final_estimate": 298466.0869884491, + "relative_error": -0.001518510007864657 + }, + { + "name": "voa.council_tax_stock.band_f@E12000008@2025", + "target": 337260.0, + "final_estimate": 336325.5570526123, + "relative_error": -0.002770690112636231 + }, + { + "name": "voa.council_tax_stock.band_f@E12000009@2025", + "target": 147920.0, + "final_estimate": 148004.26309013367, + "relative_error": 0.0005696531242135411 + }, + { + "name": "voa.council_tax_stock.band_g@E12000001@2025", + "target": 14600.0, + "final_estimate": 14568.463012695312, + "relative_error": -0.0021600676236087327 + }, + { + "name": "voa.council_tax_stock.band_g@E12000002@2025", + "target": 65750.0, + "final_estimate": 65524.22173118591, + "relative_error": -0.003433890019986113 + }, + { + "name": "voa.council_tax_stock.band_g@E12000003@2025", + "target": 42180.0, + "final_estimate": 42097.12434768677, + "relative_error": -0.0019648092060984453 + }, + { + "name": "voa.council_tax_stock.band_g@E12000004@2025", + "target": 39400.0, + "final_estimate": 39448.5912399292, + "relative_error": 0.001233280201248711 + }, + { + "name": "voa.council_tax_stock.band_g@E12000005@2025", + "target": 62780.0, + "final_estimate": 62430.973487854004, + "relative_error": -0.005559517555686462 + }, + { + "name": "voa.council_tax_stock.band_g@E12000006@2025", + "target": 113720.0, + "final_estimate": 113626.11828231812, + "relative_error": -0.0008255515096894545 + }, + { + "name": "voa.council_tax_stock.band_g@E12000007@2025", + "target": 225170.0, + "final_estimate": 225394.21272850037, + "relative_error": 0.000995748672116029 + }, + { + "name": "voa.council_tax_stock.band_g@E12000008@2025", + "target": 265610.0, + "final_estimate": 265154.20303344727, + "relative_error": -0.0017160384268391038 + }, + { + "name": "voa.council_tax_stock.band_g@E12000009@2025", + "target": 81960.0, + "final_estimate": 81830.3019065857, + "relative_error": -0.0015824559957821698 + }, + { + "name": "voa.council_tax_stock.band_h@E12000001@2025", + "target": 1570.0, + "final_estimate": 0.0, + "relative_error": -1.0 + }, + { + "name": "voa.council_tax_stock.band_h@E12000002@2025", + "target": 7350.0, + "final_estimate": 0.0, + "relative_error": -1.0 + }, + { + "name": "voa.council_tax_stock.band_h@E12000003@2025", + "target": 3770.0, + "final_estimate": 0.0, + "relative_error": -1.0 + }, + { + "name": "voa.council_tax_stock.band_h@E12000004@2025", + "target": 3480.0, + "final_estimate": 3481.85693359375, + "relative_error": 0.0005336016073994253 + }, + { + "name": "voa.council_tax_stock.band_h@E12000005@2025", + "target": 6170.0, + "final_estimate": 6156.091949462891, + "relative_error": -0.0022541410919139993 + }, + { + "name": "voa.council_tax_stock.band_h@E12000006@2025", + "target": 14830.0, + "final_estimate": 14852.746398925781, + "relative_error": 0.001533809772473449 + }, + { + "name": "voa.council_tax_stock.band_h@E12000007@2025", + "target": 68500.0, + "final_estimate": 68412.60824584961, + "relative_error": -0.0012757920313925639 + }, + { + "name": "voa.council_tax_stock.band_h@E12000008@2025", + "target": 40390.0, + "final_estimate": 40385.87062072754, + "relative_error": -0.0001022376645818504 + }, + { + "name": "voa.council_tax_stock.band_h@E12000009@2025", + "target": 8430.0, + "final_estimate": 8410.222473144531, + "relative_error": -0.0023460885949547748 + }, + { + "name": "voa.council_tax_stock.total@E12000001@2025", + "target": 1287830.0, + "final_estimate": 1286741.165266037, + "relative_error": -0.0008454801751496803 + }, + { + "name": "voa.council_tax_stock.total@E12000002@2025", + "target": 3466140.0, + "final_estimate": 3458643.1612537596, + "relative_error": -0.002162878229454195 + }, + { + "name": "voa.council_tax_stock.total@E12000003@2025", + "target": 2547080.0, + "final_estimate": 2542661.161552906, + "relative_error": -0.0017348644122265353 + }, + { + "name": "voa.council_tax_stock.total@E12000004@2025", + "target": 2233400.0, + "final_estimate": 2233410.1796560287, + "relative_error": 4.5579188809651465e-06 + }, + { + "name": "voa.council_tax_stock.total@E12000005@2025", + "target": 2637190.0, + "final_estimate": 2637206.0187637694, + "relative_error": 6.074178868196073e-06 + }, + { + "name": "voa.council_tax_stock.total@E12000006@2025", + "target": 2863600.0, + "final_estimate": 2863515.277796158, + "relative_error": -2.958590719440515e-05 + }, + { + "name": "voa.council_tax_stock.total@E12000007@2025", + "target": 3837430.0, + "final_estimate": 3839582.350537322, + "relative_error": 0.0005608833352848119 + }, + { + "name": "voa.council_tax_stock.total@E12000008@2025", + "target": 4169520.0, + "final_estimate": 4167526.611131668, + "relative_error": -0.0004780859351512666 + }, + { + "name": "voa.council_tax_stock.total@E12000009@2025", + "target": 2704390.0, + "final_estimate": 2703398.4944820404, + "relative_error": -0.0003666281556874544 + } + ] +} \ No newline at end of file From 0de9d333d4af2bdac944ca195744c44e60a210ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:58:37 +0200 Subject: [PATCH 05/12] Regenerate the region-tier receipts on the 474a0ae feed (#905) After the rebase onto #904's re-pin (chronicle 474a0ae, consumer_fact.v2 labels, the schema-8 hierarchy from #855) the national register regenerates byte-identically: 595 active, every one of the 189 region-tier cells resolves, because the twelve tier codes are all catalogued in UK_GEOGRAPHY_ID_TO_LABEL and need no Chronicle geography.name. The 2023 compile-parity receipt is regenerated on the same feed (2025 was already identical). The household-composition bridge test main added since the branch point moves from a 2010 constituency code to a crosswalk one, as the older tests did when English areas started resolving their region leg. Co-Authored-By: Claude Fable 5.1 --- ...ty_production_2023_signed_differences.json | 2373 +++++++++-------- .../tests/test_target_materialization.py | 1 + .../tests/test_uk_ledger_targets.py | 2 +- 3 files changed, 1211 insertions(+), 1165 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_production_2023_signed_differences.json b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_production_2023_signed_differences.json index 559cfcad0a..a9477d4ce5 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_production_2023_signed_differences.json +++ b/packages/microcosm-build/src/microcosm/build/uk/ledger_compile_parity_production_2023_signed_differences.json @@ -1,11 +1,11 @@ { - "compiled_count": 238, + "compiled_count": 337, "counts_by_kind": { - "calibration_drift": 12, - "fixture_only": 125, - "ledger_only": 214 + "calibration_drift": 120, + "fixture_only": 17, + "ledger_only": 205 }, - "difference_count": 351, + "difference_count": 342, "differences": [ { "fixture_value": 82000.0, @@ -15,2394 +15,2439 @@ "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 730000.0, + "fixture_value": 290045387683.9658, "kind": "fixture_only", - "name": "ons/east_age_0_9", + "name": "ons/household_land_value/EAST_MIDLANDS", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 745000.0, + "fixture_value": 516403292240.49414, "kind": "fixture_only", - "name": "ons/east_age_10_19", + "name": "ons/household_land_value/EAST_OF_ENGLAND", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 729000.0, + "fixture_value": 1130653075012.1692, "kind": "fixture_only", - "name": "ons/east_age_20_29", + "name": "ons/household_land_value/LONDON", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 868000.0, + "fixture_value": 113814239475.71474, "kind": "fixture_only", - "name": "ons/east_age_30_39", + "name": "ons/household_land_value/NORTH_EAST", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 829000.0, + "fixture_value": 402421888791.4934, "kind": "fixture_only", - "name": "ons/east_age_40_49", + "name": "ons/household_land_value/NORTH_WEST", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 873000.0, + "fixture_value": 266822289184.47226, "kind": "fixture_only", - "name": "ons/east_age_50_59", + "name": "ons/household_land_value/SCOTLAND", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 721000.0, + "fixture_value": 842967388093.2286, "kind": "fixture_only", - "name": "ons/east_age_60_69", + "name": "ons/household_land_value/SOUTH_EAST", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 612000.0, + "fixture_value": 434617600950.541, "kind": "fixture_only", - "name": "ons/east_age_70_79", + "name": "ons/household_land_value/SOUTH_WEST", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 360000.0, + "fixture_value": 170639951561.47794, "kind": "fixture_only", - "name": "ons/east_age_80_89", + "name": "ons/household_land_value/WALES", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 535000.0, + "fixture_value": 346703742992.981, "kind": "fixture_only", - "name": "ons/east_midlands_age_0_9", + "name": "ons/household_land_value/WEST_MIDLANDS", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 588000.0, + "fixture_value": 283675747954.8778, "kind": "fixture_only", - "name": "ons/east_midlands_age_10_19", + "name": "ons/household_land_value/YORKSHIRE", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 614000.0, + "fixture_value": 8298342.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_20_29", + "name": "ons/tenure_england_owned_outright", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 652000.0, + "fixture_value": 7597225.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_30_39", + "name": "ons/tenure_england_owned_with_mortgage", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 605000.0, + "fixture_value": 5251573.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_40_49", + "name": "ons/tenure_england_rented_privately", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 686000.0, + "fixture_value": 4247906.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_50_59", + "name": "ons/tenure_england_social_rent", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 572000.0, + "fixture_value": 25395046.0, "kind": "fixture_only", - "name": "ons/east_midlands_age_60_69", + "name": "ons/tenure_england_total", "period": 2023, "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." }, { - "fixture_value": 475000.0, - "kind": "fixture_only", - "name": "ons/east_midlands_age_70_79", + "kind": "ledger_only", + "ledger_value": 124211.0, + "name": "dfe.funded_childcare.early_learning_2_year_olds", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 260000.0, - "kind": "fixture_only", - "name": "ons/east_midlands_age_80_89", + "kind": "ledger_only", + "ledger_value": 437147.0, + "name": "dfe.funded_childcare.universal_only_children", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 290045387683.9658, - "kind": "fixture_only", - "name": "ons/household_land_value/EAST_MIDLANDS", + "kind": "ledger_only", + "ledger_value": 135820000.0, + "name": "dfi_ni.bus.passenger_receipts", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 516403292240.49414, - "kind": "fixture_only", - "name": "ons/household_land_value/EAST_OF_ENGLAND", + "kind": "ledger_only", + "ledger_value": 3258254371.1953297, + "name": "dft.bus_fare_receipts.england", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1130653075012.1692, - "kind": "fixture_only", - "name": "ons/household_land_value/LONDON", + "kind": "ledger_only", + "ledger_value": 1338986541.2373116, + "name": "dft.bus_fare_receipts.london", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 113814239475.71474, - "kind": "fixture_only", - "name": "ons/household_land_value/NORTH_EAST", + "kind": "ledger_only", + "ledger_value": 2651721003.6800003, + "name": "dft.bus_net_support.england", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 402421888791.4934, - "kind": "fixture_only", - "name": "ons/household_land_value/NORTH_WEST", + "kind": "ledger_only", + "ledger_value": 954406918.7, + "name": "dft.bus_net_support.london", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 266822289184.47226, - "kind": "fixture_only", - "name": "ons/household_land_value/SCOTLAND", + "kind": "ledger_only", + "ledger_value": 6197311.0, + "name": "dwp.uc.households", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 842967388093.2286, - "kind": "fixture_only", - "name": "ons/household_land_value/SOUTH_EAST", + "kind": "ledger_only", + "ledger_value": 1190123.8333333333, + "name": "dwp.uc.households_children_1", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 434617600950.541, - "kind": "fixture_only", - "name": "ons/household_land_value/SOUTH_WEST", + "kind": "ledger_only", + "ledger_value": 1049895.5, + "name": "dwp.uc.households_children_2", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 170639951561.47794, - "kind": "fixture_only", - "name": "ons/household_land_value/WALES", + "kind": "ledger_only", + "ledger_value": 477887.6666666667, + "name": "dwp.uc.households_children_3", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 346703742992.981, - "kind": "fixture_only", - "name": "ons/household_land_value/WEST_MIDLANDS", + "kind": "ledger_only", + "ledger_value": 170713.66666666666, + "name": "dwp.uc.households_children_4", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 283675747954.8778, - "kind": "fixture_only", - "name": "ons/household_land_value/YORKSHIRE", + "kind": "ledger_only", + "ledger_value": 76320.08333333333, + "name": "dwp.uc.households_children_5_or_more", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1047000.0, - "kind": "fixture_only", - "name": "ons/london_age_0_9", + "kind": "ledger_only", + "ledger_value": 241130.91666666666, + "name": "dwp.uc.households_couple_no_children", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1043000.0, - "kind": "fixture_only", - "name": "ons/london_age_10_19", + "kind": "ledger_only", + "ledger_value": 826160.8333333334, + "name": "dwp.uc.households_couple_with_children", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1429000.0, - "kind": "fixture_only", - "name": "ons/london_age_20_29", + "kind": "ledger_only", + "ledger_value": 2990070.1666666665, + "name": "dwp.uc.households_single_no_children", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1545000.0, - "kind": "fixture_only", - "name": "ons/london_age_30_39", + "kind": "ledger_only", + "ledger_value": 2138780.1666666665, + "name": "dwp.uc.households_single_with_children", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." }, { - "fixture_value": 1280000.0, - "kind": "fixture_only", - "name": "ons/london_age_40_49", + "kind": "ledger_only", + "ledger_value": 624500000.0, + "name": "hmrc.tfc.government_top_up", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1086000.0, - "kind": "fixture_only", - "name": "ons/london_age_50_59", + "kind": "ledger_only", + "ledger_value": 222000.0, + "name": "hmrc/dividend_income_count_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 751000.0, - "kind": "fixture_only", - "name": "ons/london_age_60_69", + "kind": "ledger_only", + "ledger_value": 115000.0, + "name": "hmrc/dividend_income_count_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 484000.0, - "kind": "fixture_only", - "name": "ons/london_age_70_79", + "kind": "ledger_only", + "ledger_value": 92000.0, + "name": "hmrc/dividend_income_count_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 289000.0, - "kind": "fixture_only", - "name": "ons/london_age_80_89", + "kind": "ledger_only", + "ledger_value": 372000.0, + "name": "hmrc/dividend_income_count_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 283000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_0_9", + "kind": "ledger_only", + "ledger_value": 19000.0, + "name": "hmrc/dividend_income_count_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 312000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_10_19", + "kind": "ledger_only", + "ledger_value": 75000.0, + "name": "hmrc/dividend_income_count_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 333000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_20_29", + "kind": "ledger_only", + "ledger_value": 843000.0, + "name": "hmrc/dividend_income_count_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 347000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_30_39", + "kind": "ledger_only", + "ledger_value": 49000.0, + "name": "hmrc/dividend_income_count_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 314000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_40_49", + "kind": "ledger_only", + "ledger_value": 667000.0, + "name": "hmrc/dividend_income_count_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 371000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_50_59", + "kind": "ledger_only", + "ledger_value": 627000.0, + "name": "hmrc/dividend_income_count_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 341000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_60_69", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 264000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_70_79", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 145000.0, - "kind": "fixture_only", - "name": "ons/north_east_age_80_89", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 851000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_0_9", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 906000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_10_19", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 958000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_20_29", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1029000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_30_39", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 914000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_40_49", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 1018000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_50_59", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 858000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_60_69", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 680000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_70_79", - "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." - }, - { - "fixture_value": 379000.0, - "kind": "fixture_only", - "name": "ons/north_west_age_80_89", + "kind": "ledger_only", + "ledger_value": 32000.0, + "name": "hmrc/dividend_income_count_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 235000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_0_9", + "kind": "ledger_only", + "ledger_value": 643000.0, + "name": "hmrc/dividend_income_count_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 245000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_10_19", + "kind": "ledger_only", + "ledger_value": 336000.0, + "name": "hmrc/dividend_income_count_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 224000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_20_29", + "kind": "ledger_only", + "ledger_value": 6870000000.0, + "name": "hmrc/dividend_income_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 258000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_30_39", + "kind": "ledger_only", + "ledger_value": 175000000.0, + "name": "hmrc/dividend_income_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 247000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_40_49", + "kind": "ledger_only", + "ledger_value": 3450000000.0, + "name": "hmrc/dividend_income_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 258000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_50_59", + "kind": "ledger_only", + "ledger_value": 855000000.0, + "name": "hmrc/dividend_income_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 217000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_60_69", + "kind": "ledger_only", + "ledger_value": 11100000000.0, + "name": "hmrc/dividend_income_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 157000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_70_79", + "kind": "ledger_only", + "ledger_value": 3700000000.0, + "name": "hmrc/dividend_income_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 89000.0, - "kind": "fixture_only", - "name": "ons/northern_ireland_age_80_89", + "kind": "ledger_only", + "ledger_value": 3330000000.0, + "name": "hmrc/dividend_income_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 528000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_0_9", + "kind": "ledger_only", + "ledger_value": 3430000000.0, + "name": "hmrc/dividend_income_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 600000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_10_19", + "kind": "ledger_only", + "ledger_value": 4700000000.0, + "name": "hmrc/dividend_income_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 689000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_20_29", + "kind": "ledger_only", + "ledger_value": 8400000000.0, + "name": "hmrc/dividend_income_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 717000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_30_39", + "kind": "ledger_only", + "ledger_value": 3820000000.0, + "name": "hmrc/dividend_income_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 673000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_40_49", + "kind": "ledger_only", + "ledger_value": 12500000000.0, + "name": "hmrc/dividend_income_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 793000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_50_59", + "kind": "ledger_only", + "ledger_value": 9440000000.0, + "name": "hmrc/dividend_income_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 702000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_60_69", + "kind": "ledger_only", + "ledger_value": 791000.0, + "name": "hmrc/employment_income_count_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 520000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_70_79", + "kind": "ledger_only", + "ledger_value": 1360000.0, + "name": "hmrc/employment_income_count_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 282000.0, - "kind": "fixture_only", - "name": "ons/scotland_age_80_89", + "kind": "ledger_only", + "ledger_value": 264000.0, + "name": "hmrc/employment_income_count_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1044000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_0_9", + "kind": "ledger_only", + "ledger_value": 3100000.0, + "name": "hmrc/employment_income_count_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1119000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_10_19", + "kind": "ledger_only", + "ledger_value": 21000.0, + "name": "hmrc/employment_income_count_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1062000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_20_29", + "kind": "ledger_only", + "ledger_value": 180000.0, + "name": "hmrc/employment_income_count_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1250000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_30_39", + "kind": "ledger_only", + "ledger_value": 7470000.0, + "name": "hmrc/employment_income_count_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1241000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_40_49", + "kind": "ledger_only", + "ledger_value": 93000.0, + "name": "hmrc/employment_income_count_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1296000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_50_59", + "kind": "ledger_only", + "ledger_value": 5370000.0, + "name": "hmrc/employment_income_count_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 1052000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_60_69", + "kind": "ledger_only", + "ledger_value": 3500000.0, + "name": "hmrc/employment_income_count_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 882000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_70_79", + "kind": "ledger_only", + "ledger_value": 44000.0, + "name": "hmrc/employment_income_count_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 531000.0, - "kind": "fixture_only", - "name": "ons/south_east_age_80_89", + "kind": "ledger_only", + "ledger_value": 3430000.0, + "name": "hmrc/employment_income_count_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 579000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_0_9", + "kind": "ledger_only", + "ledger_value": 1640000.0, + "name": "hmrc/employment_income_count_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 650000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_10_19", + "kind": "ledger_only", + "ledger_value": 82300000000.0, + "name": "hmrc/employment_income_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 675000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_20_29", + "kind": "ledger_only", + "ledger_value": 16900000000.0, + "name": "hmrc/employment_income_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 724000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_30_39", + "kind": "ledger_only", + "ledger_value": 39200000000.0, + "name": "hmrc/employment_income_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 686000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_40_49", + "kind": "ledger_only", + "ledger_value": 48600000000.0, + "name": "hmrc/employment_income_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 800000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_50_59", + "kind": "ledger_only", + "ledger_value": 35500000000.0, + "name": "hmrc/employment_income_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 716000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_60_69", + "kind": "ledger_only", + "ledger_value": 36600000000.0, + "name": "hmrc/employment_income_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 630000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_70_79", + "kind": "ledger_only", + "ledger_value": 172000000000.0, + "name": "hmrc/employment_income_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 369000.0, - "kind": "fixture_only", - "name": "ons/south_west_age_80_89", + "kind": "ledger_only", + "ledger_value": 29000000000.0, + "name": "hmrc/employment_income_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 8298342.0, - "kind": "fixture_only", - "name": "ons/tenure_england_owned_outright", + "kind": "ledger_only", + "ledger_value": 170000000000.0, + "name": "hmrc/employment_income_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 7597225.0, - "kind": "fixture_only", - "name": "ons/tenure_england_owned_with_mortgage", + "kind": "ledger_only", + "ledger_value": 139000000000.0, + "name": "hmrc/employment_income_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 5251573.0, - "kind": "fixture_only", - "name": "ons/tenure_england_rented_privately", + "kind": "ledger_only", + "ledger_value": 23100000000.0, + "name": "hmrc/employment_income_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 4247906.0, - "kind": "fixture_only", - "name": "ons/tenure_england_social_rent", + "kind": "ledger_only", + "ledger_value": 174000000000.0, + "name": "hmrc/employment_income_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 25395046.0, - "kind": "fixture_only", - "name": "ons/tenure_england_total", + "kind": "ledger_only", + "ledger_value": 118000000000.0, + "name": "hmrc/employment_income_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 326000.0, - "kind": "fixture_only", - "name": "ons/wales_age_0_9", + "kind": "ledger_only", + "ledger_value": 109000.0, + "name": "hmrc/private_pension_income_count_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 364000.0, - "kind": "fixture_only", - "name": "ons/wales_age_10_19", + "kind": "ledger_only", + "ledger_value": 1070000.0, + "name": "hmrc/private_pension_income_count_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 378000.0, - "kind": "fixture_only", - "name": "ons/wales_age_20_29", + "kind": "ledger_only", + "ledger_value": 29000.0, + "name": "hmrc/private_pension_income_count_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 398000.0, - "kind": "fixture_only", - "name": "ons/wales_age_30_39", + "kind": "ledger_only", + "ledger_value": 2140000.0, + "name": "hmrc/private_pension_income_count_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 364000.0, - "kind": "fixture_only", - "name": "ons/wales_age_40_49", + "kind": "ledger_only", + "ledger_value": 2000.0, + "name": "hmrc/private_pension_income_count_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 436000.0, - "kind": "fixture_only", - "name": "ons/wales_age_50_59", + "kind": "ledger_only", + "ledger_value": 20000.0, + "name": "hmrc/private_pension_income_count_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 393000.0, - "kind": "fixture_only", - "name": "ons/wales_age_60_69", + "kind": "ledger_only", + "ledger_value": 2660000.0, + "name": "hmrc/private_pension_income_count_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 327000.0, - "kind": "fixture_only", - "name": "ons/wales_age_70_79", + "kind": "ledger_only", + "ledger_value": 10000.0, + "name": "hmrc/private_pension_income_count_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 181000.0, - "kind": "fixture_only", - "name": "ons/wales_age_80_89", + "kind": "ledger_only", + "ledger_value": 1450000.0, + "name": "hmrc/private_pension_income_count_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 703000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_0_9", + "kind": "ledger_only", + "ledger_value": 779000.0, + "name": "hmrc/private_pension_income_count_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 747000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_10_19", + "kind": "ledger_only", + "ledger_value": 4000.0, + "name": "hmrc/private_pension_income_count_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 753000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_20_29", + "kind": "ledger_only", + "ledger_value": 643000.0, + "name": "hmrc/private_pension_income_count_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 813000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_30_39", + "kind": "ledger_only", + "ledger_value": 259000.0, + "name": "hmrc/private_pension_income_count_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 739000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_40_49", + "kind": "ledger_only", + "ledger_value": 5430000000.0, + "name": "hmrc/private_pension_income_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 805000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_50_59", + "kind": "ledger_only", + "ledger_value": 4350000000.0, + "name": "hmrc/private_pension_income_income_band_12_570_to_15_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 661000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_60_69", + "kind": "ledger_only", + "ledger_value": 1810000000.0, + "name": "hmrc/private_pension_income_income_band_150_000_to_200_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 542000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_70_79", + "kind": "ledger_only", + "ledger_value": 13600000000.0, + "name": "hmrc/private_pension_income_income_band_15_000_to_20_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 321000.0, - "kind": "fixture_only", - "name": "ons/west_midlands_age_80_89", + "kind": "ledger_only", + "ledger_value": 370000000.0, + "name": "hmrc/private_pension_income_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 621000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_0_9", + "kind": "ledger_only", + "ledger_value": 1570000000.0, + "name": "hmrc/private_pension_income_income_band_200_000_to_300_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 669000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_10_19", + "kind": "ledger_only", + "ledger_value": 30200000000.0, + "name": "hmrc/private_pension_income_income_band_20_000_to_30_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 713000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_20_29", + "kind": "ledger_only", + "ledger_value": 1120000000.0, + "name": "hmrc/private_pension_income_income_band_300_000_to_500_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 745000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_30_39", + "kind": "ledger_only", + "ledger_value": 24900000000.0, + "name": "hmrc/private_pension_income_income_band_30_000_to_40_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 668000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_40_49", + "kind": "ledger_only", + "ledger_value": 16900000000.0, + "name": "hmrc/private_pension_income_income_band_40_000_to_50_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 751000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_50_59", + "kind": "ledger_only", + "ledger_value": 640000000.0, + "name": "hmrc/private_pension_income_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 635000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_60_69", + "kind": "ledger_only", + "ledger_value": 17400000000.0, + "name": "hmrc/private_pension_income_income_band_50_000_to_70_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 510000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_70_79", + "kind": "ledger_only", + "ledger_value": 9470000000.0, + "name": "hmrc/private_pension_income_income_band_70_000_to_100_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "fixture_value": 287000.0, - "kind": "fixture_only", - "name": "ons/yorkshire_and_the_humber_age_80_89", + "kind": "ledger_only", + "ledger_value": 137000.0, + "name": "hmrc/property_income_count_income_band_100_000_to_150_000", "period": 2023, - "reason": "Fixture row has no Ledger-compiled counterpart at this comparison period." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 124211.0, - "name": "dfe.funded_childcare.early_learning_2_year_olds", + "ledger_value": 101000.0, + "name": "hmrc/property_income_count_income_band_12_570_to_15_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 437147.0, - "name": "dfe.funded_childcare.universal_only_children", + "ledger_value": 54000.0, + "name": "hmrc/property_income_count_income_band_150_000_to_200_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 135820000.0, - "name": "dfi_ni.bus.passenger_receipts", + "ledger_value": 232000.0, + "name": "hmrc/property_income_count_income_band_15_000_to_20_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3258254371.1953297, - "name": "dft.bus_fare_receipts.england", + "ledger_value": 7000.0, + "name": "hmrc/property_income_count_income_band_1_000_000_to_inf", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1338986541.2373116, - "name": "dft.bus_fare_receipts.london", + "ledger_value": 41000.0, + "name": "hmrc/property_income_count_income_band_200_000_to_300_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2651721003.6800003, - "name": "dft.bus_net_support.england", + "ledger_value": 431000.0, + "name": "hmrc/property_income_count_income_band_20_000_to_30_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 954406918.7, - "name": "dft.bus_net_support.london", + "ledger_value": 23000.0, + "name": "hmrc/property_income_count_income_band_300_000_to_500_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 6197311.0, - "name": "dwp.uc.households", + "ledger_value": 364000.0, + "name": "hmrc/property_income_count_income_band_30_000_to_40_000", "period": 2023, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1190123.8333333333, - "name": "dwp.uc.households_children_1", + "ledger_value": 325000.0, + "name": "hmrc/property_income_count_income_band_40_000_to_50_000", "period": 2023, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1049895.5, - "name": "dwp.uc.households_children_2", + "ledger_value": 13000.0, + "name": "hmrc/property_income_count_income_band_500_000_to_1_000_000", "period": 2023, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 477887.6666666667, - "name": "dwp.uc.households_children_3", + "ledger_value": 397000.0, + "name": "hmrc/property_income_count_income_band_50_000_to_70_000", "period": 2023, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 170713.66666666666, - "name": "dwp.uc.households_children_4", + "ledger_value": 226000.0, + "name": "hmrc/property_income_count_income_band_70_000_to_100_000", "period": 2023, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 76320.08333333333, - "name": "dwp.uc.households_children_5_or_more", + "ledger_value": 85000.0, + "name": "hmrc/self_employment_income_count_income_band_100_000_to_150_000", "period": 2023, - "reason": "Inherited PR #891 contract with #892 source-window averaging: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 241130.91666666666, - "name": "dwp.uc.households_couple_no_children", + "ledger_value": 444000.0, + "name": "hmrc/self_employment_income_count_income_band_12_570_to_15_000", "period": 2023, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 826160.8333333334, - "name": "dwp.uc.households_couple_with_children", + "ledger_value": 40000.0, + "name": "hmrc/self_employment_income_count_income_band_150_000_to_200_000", "period": 2023, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2990070.1666666665, - "name": "dwp.uc.households_single_no_children", + "ledger_value": 651000.0, + "name": "hmrc/self_employment_income_count_income_band_15_000_to_20_000", "period": 2023, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2138780.1666666665, - "name": "dwp.uc.households_single_with_children", + "ledger_value": 11000.0, + "name": "hmrc/self_employment_income_count_income_band_1_000_000_to_inf", "period": 2023, - "reason": "Inherited PR #891 contract: current paid-UC counts use the explicit January-December 2025 source windows on the ec7169 national feed. This compares that declaration with the frozen 2023 production baseline; it does not redatum the observations to the comparison year or create a new year ruling." + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 624500000.0, - "name": "hmrc.tfc.government_top_up", + "ledger_value": 34000.0, + "name": "hmrc/self_employment_income_count_income_band_200_000_to_300_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 222000.0, - "name": "hmrc/dividend_income_count_income_band_100_000_to_150_000", + "ledger_value": 961000.0, + "name": "hmrc/self_employment_income_count_income_band_20_000_to_30_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 115000.0, - "name": "hmrc/dividend_income_count_income_band_12_570_to_15_000", + "ledger_value": 21000.0, + "name": "hmrc/self_employment_income_count_income_band_300_000_to_500_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 92000.0, - "name": "hmrc/dividend_income_count_income_band_150_000_to_200_000", + "ledger_value": 595000.0, + "name": "hmrc/self_employment_income_count_income_band_30_000_to_40_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 372000.0, - "name": "hmrc/dividend_income_count_income_band_15_000_to_20_000", + "ledger_value": 359000.0, + "name": "hmrc/self_employment_income_count_income_band_40_000_to_50_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 19000.0, - "name": "hmrc/dividend_income_count_income_band_1_000_000_to_inf", + "ledger_value": 15000.0, + "name": "hmrc/self_employment_income_count_income_band_500_000_to_1_000_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 75000.0, - "name": "hmrc/dividend_income_count_income_band_200_000_to_300_000", + "ledger_value": 311000.0, + "name": "hmrc/self_employment_income_count_income_band_50_000_to_70_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 843000.0, - "name": "hmrc/dividend_income_count_income_band_20_000_to_30_000", + "ledger_value": 143000.0, + "name": "hmrc/self_employment_income_count_income_band_70_000_to_100_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 49000.0, - "name": "hmrc/dividend_income_count_income_band_300_000_to_500_000", + "ledger_value": 4980000000.0, + "name": "hmrc/self_employment_income_income_band_100_000_to_150_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 667000.0, - "name": "hmrc/dividend_income_count_income_band_30_000_to_40_000", + "ledger_value": 4810000000.0, + "name": "hmrc/self_employment_income_income_band_12_570_to_15_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 627000.0, - "name": "hmrc/dividend_income_count_income_band_40_000_to_50_000", + "ledger_value": 3650000000.0, + "name": "hmrc/self_employment_income_income_band_150_000_to_200_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 32000.0, - "name": "hmrc/dividend_income_count_income_band_500_000_to_1_000_000", + "ledger_value": 8030000000.0, + "name": "hmrc/self_employment_income_income_band_15_000_to_20_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 643000.0, - "name": "hmrc/dividend_income_count_income_band_50_000_to_70_000", + "ledger_value": 19500000000.0, + "name": "hmrc/self_employment_income_income_band_1_000_000_to_inf", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 336000.0, - "name": "hmrc/dividend_income_count_income_band_70_000_to_100_000", + "ledger_value": 4390000000.0, + "name": "hmrc/self_employment_income_income_band_200_000_to_300_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 6870000000.0, - "name": "hmrc/dividend_income_income_band_100_000_to_150_000", + "ledger_value": 15700000000.0, + "name": "hmrc/self_employment_income_income_band_20_000_to_30_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 175000000.0, - "name": "hmrc/dividend_income_income_band_12_570_to_15_000", + "ledger_value": 4840000000.0, + "name": "hmrc/self_employment_income_income_band_300_000_to_500_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3450000000.0, - "name": "hmrc/dividend_income_income_band_150_000_to_200_000", + "ledger_value": 12600000000.0, + "name": "hmrc/self_employment_income_income_band_30_000_to_40_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 855000000.0, - "name": "hmrc/dividend_income_income_band_15_000_to_20_000", + "ledger_value": 8730000000.0, + "name": "hmrc/self_employment_income_income_band_40_000_to_50_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 11100000000.0, - "name": "hmrc/dividend_income_income_band_1_000_000_to_inf", + "ledger_value": 6670000000.0, + "name": "hmrc/self_employment_income_income_band_500_000_to_1_000_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3700000000.0, - "name": "hmrc/dividend_income_income_band_200_000_to_300_000", + "ledger_value": 8220000000.0, + "name": "hmrc/self_employment_income_income_band_50_000_to_70_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3330000000.0, - "name": "hmrc/dividend_income_income_band_20_000_to_30_000", + "ledger_value": 5360000000.0, + "name": "hmrc/self_employment_income_income_band_70_000_to_100_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3430000000.0, - "name": "hmrc/dividend_income_income_band_300_000_to_500_000", + "ledger_value": 74000.0, + "name": "hmrc/state_pension_count_income_band_100_000_to_150_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 4700000000.0, - "name": "hmrc/dividend_income_income_band_30_000_to_40_000", + "ledger_value": 1140000.0, + "name": "hmrc/state_pension_count_income_band_12_570_to_15_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 8400000000.0, - "name": "hmrc/dividend_income_income_band_40_000_to_50_000", + "ledger_value": 21000.0, + "name": "hmrc/state_pension_count_income_band_150_000_to_200_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3820000000.0, - "name": "hmrc/dividend_income_income_band_500_000_to_1_000_000", + "ledger_value": 2050000.0, + "name": "hmrc/state_pension_count_income_band_15_000_to_20_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 12500000000.0, - "name": "hmrc/dividend_income_income_band_50_000_to_70_000", + "ledger_value": 2000.0, + "name": "hmrc/state_pension_count_income_band_1_000_000_to_inf", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 9440000000.0, - "name": "hmrc/dividend_income_income_band_70_000_to_100_000", + "ledger_value": 14000.0, + "name": "hmrc/state_pension_count_income_band_200_000_to_300_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 791000.0, - "name": "hmrc/employment_income_count_income_band_100_000_to_150_000", + "ledger_value": 2320000.0, + "name": "hmrc/state_pension_count_income_band_20_000_to_30_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1360000.0, - "name": "hmrc/employment_income_count_income_band_12_570_to_15_000", + "ledger_value": 8000.0, + "name": "hmrc/state_pension_count_income_band_300_000_to_500_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 264000.0, - "name": "hmrc/employment_income_count_income_band_150_000_to_200_000", + "ledger_value": 1160000.0, + "name": "hmrc/state_pension_count_income_band_30_000_to_40_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3100000.0, - "name": "hmrc/employment_income_count_income_band_15_000_to_20_000", + "ledger_value": 568000.0, + "name": "hmrc/state_pension_count_income_band_40_000_to_50_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 21000.0, - "name": "hmrc/employment_income_count_income_band_1_000_000_to_inf", + "ledger_value": 3000.0, + "name": "hmrc/state_pension_count_income_band_500_000_to_1_000_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 180000.0, - "name": "hmrc/employment_income_count_income_band_200_000_to_300_000", + "ledger_value": 441000.0, + "name": "hmrc/state_pension_count_income_band_50_000_to_70_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 7470000.0, - "name": "hmrc/employment_income_count_income_band_20_000_to_30_000", + "ledger_value": 176000.0, + "name": "hmrc/state_pension_count_income_band_70_000_to_100_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 93000.0, - "name": "hmrc/employment_income_count_income_band_300_000_to_500_000", + "ledger_value": 847000000.0, + "name": "hmrc/state_pension_income_band_100_000_to_150_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 5370000.0, - "name": "hmrc/employment_income_count_income_band_30_000_to_40_000", + "ledger_value": 11800000000.0, + "name": "hmrc/state_pension_income_band_12_570_to_15_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3500000.0, - "name": "hmrc/employment_income_count_income_band_40_000_to_50_000", + "ledger_value": 265000000.0, + "name": "hmrc/state_pension_income_band_150_000_to_200_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 44000.0, - "name": "hmrc/employment_income_count_income_band_500_000_to_1_000_000", + "ledger_value": 22200000000.0, + "name": "hmrc/state_pension_income_band_15_000_to_20_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 3430000.0, - "name": "hmrc/employment_income_count_income_band_50_000_to_70_000", + "ledger_value": 20000000.0, + "name": "hmrc/state_pension_income_band_1_000_000_to_inf", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1640000.0, - "name": "hmrc/employment_income_count_income_band_70_000_to_100_000", + "ledger_value": 179000000.0, + "name": "hmrc/state_pension_income_band_200_000_to_300_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 82300000000.0, - "name": "hmrc/employment_income_income_band_100_000_to_150_000", + "ledger_value": 24900000000.0, + "name": "hmrc/state_pension_income_band_20_000_to_30_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 16900000000.0, - "name": "hmrc/employment_income_income_band_12_570_to_15_000", + "ledger_value": 96000000.0, + "name": "hmrc/state_pension_income_band_300_000_to_500_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 39200000000.0, - "name": "hmrc/employment_income_income_band_150_000_to_200_000", + "ledger_value": 12300000000.0, + "name": "hmrc/state_pension_income_band_30_000_to_40_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 48600000000.0, - "name": "hmrc/employment_income_income_band_15_000_to_20_000", + "ledger_value": 6020000000.0, + "name": "hmrc/state_pension_income_band_40_000_to_50_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 35500000000.0, - "name": "hmrc/employment_income_income_band_1_000_000_to_inf", + "ledger_value": 43000000.0, + "name": "hmrc/state_pension_income_band_500_000_to_1_000_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 36600000000.0, - "name": "hmrc/employment_income_income_band_200_000_to_300_000", + "ledger_value": 4660000000.0, + "name": "hmrc/state_pension_income_band_50_000_to_70_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 172000000000.0, - "name": "hmrc/employment_income_income_band_20_000_to_30_000", + "ledger_value": 1890000000.0, + "name": "hmrc/state_pension_income_band_70_000_to_100_000", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 29000000000.0, - "name": "hmrc/employment_income_income_band_300_000_to_500_000", + "ledger_value": 99200000.0, + "name": "nithc.public_transport_support", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 170000000000.0, - "name": "hmrc/employment_income_income_band_30_000_to_40_000", + "ledger_value": 52505000000.0, + "name": "ons.household_energy_expenditure", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 139000000000.0, - "name": "hmrc/employment_income_income_band_40_000_to_50_000", + "ledger_value": 1742660.0, + "name": "ons.population.female_0_4", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 23100000000.0, - "name": "hmrc/employment_income_income_band_500_000_to_1_000_000", + "ledger_value": 2025209.0, + "name": "ons.population.female_10_14", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 174000000000.0, - "name": "hmrc/employment_income_income_band_50_000_to_70_000", + "ledger_value": 1947075.0, + "name": "ons.population.female_15_19", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 118000000000.0, - "name": "hmrc/employment_income_income_band_70_000_to_100_000", + "ledger_value": 2008105.0, + "name": "ons.population.female_20_24", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 109000.0, - "name": "hmrc/private_pension_income_count_income_band_100_000_to_150_000", + "ledger_value": 2232408.0, + "name": "ons.population.female_25_29", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1070000.0, - "name": "hmrc/private_pension_income_count_income_band_12_570_to_15_000", + "ledger_value": 2417082.0, + "name": "ons.population.female_30_34", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 29000.0, - "name": "hmrc/private_pension_income_count_income_band_150_000_to_200_000", + "ledger_value": 2396290.0, + "name": "ons.population.female_35_39", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2140000.0, - "name": "hmrc/private_pension_income_count_income_band_15_000_to_20_000", + "ledger_value": 2282889.0, + "name": "ons.population.female_40_44", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2000.0, - "name": "hmrc/private_pension_income_count_income_band_1_000_000_to_inf", + "ledger_value": 2056833.0, + "name": "ons.population.female_45_49", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 20000.0, - "name": "hmrc/private_pension_income_count_income_band_200_000_to_300_000", + "ledger_value": 2304569.0, + "name": "ons.population.female_50_54", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 2660000.0, - "name": "hmrc/private_pension_income_count_income_band_20_000_to_30_000", + "ledger_value": 2360196.0, + "name": "ons.population.female_55_59", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 10000.0, - "name": "hmrc/private_pension_income_count_income_band_300_000_to_500_000", + "ledger_value": 1916898.0, + "name": "ons.population.female_5_9", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1450000.0, - "name": "hmrc/private_pension_income_count_income_band_30_000_to_40_000", + "ledger_value": 2133183.0, + "name": "ons.population.female_60_64", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 779000.0, - "name": "hmrc/private_pension_income_count_income_band_40_000_to_50_000", + "ledger_value": 1794961.0, + "name": "ons.population.female_65_69", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 4000.0, - "name": "hmrc/private_pension_income_count_income_band_500_000_to_1_000_000", + "ledger_value": 1633749.0, + "name": "ons.population.female_70_74", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 643000.0, - "name": "hmrc/private_pension_income_count_income_band_50_000_to_70_000", + "ledger_value": 1518990.0, + "name": "ons.population.female_75_79", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 259000.0, - "name": "hmrc/private_pension_income_count_income_band_70_000_to_100_000", + "ledger_value": 985351.0, + "name": "ons.population.female_80_84", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 5430000000.0, - "name": "hmrc/private_pension_income_income_band_100_000_to_150_000", + "ledger_value": 650117.0, + "name": "ons.population.female_85_89", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 4350000000.0, - "name": "hmrc/private_pension_income_income_band_12_570_to_15_000", + "ledger_value": 408216.0, + "name": "ons.population.female_90_plus", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1810000000.0, - "name": "hmrc/private_pension_income_income_band_150_000_to_200_000", + "ledger_value": 1829347.0, + "name": "ons.population.male_0_4", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 13600000000.0, - "name": "hmrc/private_pension_income_income_band_15_000_to_20_000", + "ledger_value": 2125078.0, + "name": "ons.population.male_10_14", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 370000000.0, - "name": "hmrc/private_pension_income_income_band_1_000_000_to_inf", + "ledger_value": 2064393.0, + "name": "ons.population.male_15_19", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1570000000.0, - "name": "hmrc/private_pension_income_income_band_200_000_to_300_000", + "ledger_value": 2089437.0, + "name": "ons.population.male_20_24", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 30200000000.0, - "name": "hmrc/private_pension_income_income_band_20_000_to_30_000", + "ledger_value": 2195339.0, + "name": "ons.population.male_25_29", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 1120000000.0, - "name": "hmrc/private_pension_income_income_band_300_000_to_500_000", + "ledger_value": 2283116.0, + "name": "ons.population.male_30_34", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 24900000000.0, - "name": "hmrc/private_pension_income_income_band_30_000_to_40_000", + "ledger_value": 2240303.0, + "name": "ons.population.male_35_39", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 16900000000.0, - "name": "hmrc/private_pension_income_income_band_40_000_to_50_000", + "ledger_value": 2163337.0, + "name": "ons.population.male_40_44", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 640000000.0, - "name": "hmrc/private_pension_income_income_band_500_000_to_1_000_000", + "ledger_value": 1986409.0, + "name": "ons.population.male_45_49", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 17400000000.0, - "name": "hmrc/private_pension_income_income_band_50_000_to_70_000", + "ledger_value": 2218309.0, + "name": "ons.population.male_50_54", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 9470000000.0, - "name": "hmrc/private_pension_income_income_band_70_000_to_100_000", + "ledger_value": 2265069.0, + "name": "ons.population.male_55_59", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 137000.0, - "name": "hmrc/property_income_count_income_band_100_000_to_150_000", + "ledger_value": 2009023.0, + "name": "ons.population.male_5_9", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 101000.0, - "name": "hmrc/property_income_count_income_band_12_570_to_15_000", + "ledger_value": 2048486.0, + "name": "ons.population.male_60_64", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 54000.0, - "name": "hmrc/property_income_count_income_band_150_000_to_200_000", + "ledger_value": 1694748.0, + "name": "ons.population.male_65_69", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 232000.0, - "name": "hmrc/property_income_count_income_band_15_000_to_20_000", + "ledger_value": 1486710.0, + "name": "ons.population.male_70_74", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 7000.0, - "name": "hmrc/property_income_count_income_band_1_000_000_to_inf", + "ledger_value": 1324325.0, + "name": "ons.population.male_75_79", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 41000.0, - "name": "hmrc/property_income_count_income_band_200_000_to_300_000", + "ledger_value": 777961.0, + "name": "ons.population.male_80_84", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 431000.0, - "name": "hmrc/property_income_count_income_band_20_000_to_30_000", + "ledger_value": 445535.0, + "name": "ons.population.male_85_89", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 23000.0, - "name": "hmrc/property_income_count_income_band_300_000_to_500_000", + "ledger_value": 203503.0, + "name": "ons.population.male_90_plus", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 364000.0, - "name": "hmrc/property_income_count_income_band_30_000_to_40_000", + "ledger_value": 68265209.0, + "name": "ons.population.uk_total", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 325000.0, - "name": "hmrc/property_income_count_income_band_40_000_to_50_000", + "ledger_value": 23120884840.50285, + "name": "orr.rail_government_support", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 13000.0, - "name": "hmrc/property_income_count_income_band_500_000_to_1_000_000", + "ledger_value": 438893000.0, + "name": "scotgov.bus.government_support", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { "kind": "ledger_only", - "ledger_value": 397000.0, - "name": "hmrc/property_income_count_income_band_50_000_to_70_000", + "ledger_value": 97426240.0, + "name": "welshgov.bus.public_support", "period": 2023, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 226000.0, - "name": "hmrc/property_income_count_income_band_70_000_to_100_000", + "fixture_value": 557000.0, + "kind": "calibration_drift", + "ledger_value": 554243.0, + "name": "isc.private_school_students", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 85000.0, - "name": "hmrc/self_employment_income_count_income_band_100_000_to_150_000", + "fixture_value": 1957550396058.5835, + "kind": "calibration_drift", + "ledger_value": 1976893000000.0, + "name": "ons.land.corporate_land_value", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 444000.0, - "name": "hmrc/self_employment_income_count_income_band_12_570_to_15_000", + "fixture_value": 4798764603941.416, + "kind": "calibration_drift", + "ledger_value": 4383082000000.0, + "name": "ons.land.household_land_value", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Ledger-compiled value differs from the fixture value at this comparison period." }, { - "kind": "ledger_only", - "ledger_value": 40000.0, - "name": "hmrc/self_employment_income_count_income_band_150_000_to_200_000", + "fixture_value": 283000.0, + "kind": "calibration_drift", + "ledger_value": 282659.0, + "name": "ons.population.age_0_9_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 651000.0, - "name": "hmrc/self_employment_income_count_income_band_15_000_to_20_000", + "fixture_value": 851000.0, + "kind": "calibration_drift", + "ledger_value": 855531.0, + "name": "ons.population.age_0_9_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 11000.0, - "name": "hmrc/self_employment_income_count_income_band_1_000_000_to_inf", + "fixture_value": 621000.0, + "kind": "calibration_drift", + "ledger_value": 621826.0, + "name": "ons.population.age_0_9_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 34000.0, - "name": "hmrc/self_employment_income_count_income_band_200_000_to_300_000", + "fixture_value": 535000.0, + "kind": "calibration_drift", + "ledger_value": 538271.0, + "name": "ons.population.age_0_9_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 961000.0, - "name": "hmrc/self_employment_income_count_income_band_20_000_to_30_000", + "fixture_value": 703000.0, + "kind": "calibration_drift", + "ledger_value": 708449.0, + "name": "ons.population.age_0_9_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 21000.0, - "name": "hmrc/self_employment_income_count_income_band_300_000_to_500_000", + "fixture_value": 730000.0, + "kind": "calibration_drift", + "ledger_value": 735229.0, + "name": "ons.population.age_0_9_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 595000.0, - "name": "hmrc/self_employment_income_count_income_band_30_000_to_40_000", + "fixture_value": 1047000.0, + "kind": "calibration_drift", + "ledger_value": 1046493.0, + "name": "ons.population.age_0_9_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 359000.0, - "name": "hmrc/self_employment_income_count_income_band_40_000_to_50_000", + "fixture_value": 1044000.0, + "kind": "calibration_drift", + "ledger_value": 1049550.0, + "name": "ons.population.age_0_9_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 15000.0, - "name": "hmrc/self_employment_income_count_income_band_500_000_to_1_000_000", + "fixture_value": 579000.0, + "kind": "calibration_drift", + "ledger_value": 575396.0, + "name": "ons.population.age_0_9_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 311000.0, - "name": "hmrc/self_employment_income_count_income_band_50_000_to_70_000", + "fixture_value": 235000.0, + "kind": "calibration_drift", + "ledger_value": 232833.0, + "name": "ons.population.age_0_9_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 143000.0, - "name": "hmrc/self_employment_income_count_income_band_70_000_to_100_000", + "fixture_value": 528000.0, + "kind": "calibration_drift", + "ledger_value": 527966.0, + "name": "ons.population.age_0_9_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 4980000000.0, - "name": "hmrc/self_employment_income_income_band_100_000_to_150_000", + "fixture_value": 326000.0, + "kind": "calibration_drift", + "ledger_value": 323725.0, + "name": "ons.population.age_0_9_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 4810000000.0, - "name": "hmrc/self_employment_income_income_band_12_570_to_15_000", + "fixture_value": 312000.0, + "kind": "calibration_drift", + "ledger_value": 317901.0, + "name": "ons.population.age_10_19_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 3650000000.0, - "name": "hmrc/self_employment_income_income_band_150_000_to_200_000", + "fixture_value": 906000.0, + "kind": "calibration_drift", + "ledger_value": 927958.0, + "name": "ons.population.age_10_19_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8030000000.0, - "name": "hmrc/self_employment_income_income_band_15_000_to_20_000", + "fixture_value": 669000.0, + "kind": "calibration_drift", + "ledger_value": 683509.0, + "name": "ons.population.age_10_19_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 19500000000.0, - "name": "hmrc/self_employment_income_income_band_1_000_000_to_inf", + "fixture_value": 588000.0, + "kind": "calibration_drift", + "ledger_value": 601285.0, + "name": "ons.population.age_10_19_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 4390000000.0, - "name": "hmrc/self_employment_income_income_band_200_000_to_300_000", + "fixture_value": 747000.0, + "kind": "calibration_drift", + "ledger_value": 765407.0, + "name": "ons.population.age_10_19_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 15700000000.0, - "name": "hmrc/self_employment_income_income_band_20_000_to_30_000", + "fixture_value": 745000.0, + "kind": "calibration_drift", + "ledger_value": 766334.0, + "name": "ons.population.age_10_19_by_region@E12000006", + "period": 2023, + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." + }, + { + "fixture_value": 1043000.0, + "kind": "calibration_drift", + "ledger_value": 1057772.0, + "name": "ons.population.age_10_19_by_region@E12000007", + "period": 2023, + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." + }, + { + "fixture_value": 1119000.0, + "kind": "calibration_drift", + "ledger_value": 1151908.0, + "name": "ons.population.age_10_19_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 4840000000.0, - "name": "hmrc/self_employment_income_income_band_300_000_to_500_000", + "fixture_value": 650000.0, + "kind": "calibration_drift", + "ledger_value": 661929.0, + "name": "ons.population.age_10_19_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 12600000000.0, - "name": "hmrc/self_employment_income_income_band_30_000_to_40_000", + "fixture_value": 245000.0, + "kind": "calibration_drift", + "ledger_value": 250006.0, + "name": "ons.population.age_10_19_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8730000000.0, - "name": "hmrc/self_employment_income_income_band_40_000_to_50_000", + "fixture_value": 600000.0, + "kind": "calibration_drift", + "ledger_value": 606067.0, + "name": "ons.population.age_10_19_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 6670000000.0, - "name": "hmrc/self_employment_income_income_band_500_000_to_1_000_000", + "fixture_value": 364000.0, + "kind": "calibration_drift", + "ledger_value": 371679.0, + "name": "ons.population.age_10_19_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8220000000.0, - "name": "hmrc/self_employment_income_income_band_50_000_to_70_000", + "fixture_value": 333000.0, + "kind": "calibration_drift", + "ledger_value": 332989.0, + "name": "ons.population.age_20_29_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 5360000000.0, - "name": "hmrc/self_employment_income_income_band_70_000_to_100_000", + "fixture_value": 958000.0, + "kind": "calibration_drift", + "ledger_value": 959563.0, + "name": "ons.population.age_20_29_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 74000.0, - "name": "hmrc/state_pension_count_income_band_100_000_to_150_000", + "fixture_value": 713000.0, + "kind": "calibration_drift", + "ledger_value": 706311.0, + "name": "ons.population.age_20_29_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1140000.0, - "name": "hmrc/state_pension_count_income_band_12_570_to_15_000", + "fixture_value": 614000.0, + "kind": "calibration_drift", + "ledger_value": 608545.0, + "name": "ons.population.age_20_29_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 21000.0, - "name": "hmrc/state_pension_count_income_band_150_000_to_200_000", + "fixture_value": 753000.0, + "kind": "calibration_drift", + "ledger_value": 746782.0, + "name": "ons.population.age_20_29_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2050000.0, - "name": "hmrc/state_pension_count_income_band_15_000_to_20_000", + "fixture_value": 729000.0, + "kind": "calibration_drift", + "ledger_value": 717130.0, + "name": "ons.population.age_20_29_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2000.0, - "name": "hmrc/state_pension_count_income_band_1_000_000_to_inf", + "fixture_value": 1429000.0, + "kind": "calibration_drift", + "ledger_value": 1444048.0, + "name": "ons.population.age_20_29_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 14000.0, - "name": "hmrc/state_pension_count_income_band_200_000_to_300_000", + "fixture_value": 1062000.0, + "kind": "calibration_drift", + "ledger_value": 1047994.0, + "name": "ons.population.age_20_29_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2320000.0, - "name": "hmrc/state_pension_count_income_band_20_000_to_30_000", + "fixture_value": 675000.0, + "kind": "calibration_drift", + "ledger_value": 670859.0, + "name": "ons.population.age_20_29_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8000.0, - "name": "hmrc/state_pension_count_income_band_300_000_to_500_000", + "fixture_value": 224000.0, + "kind": "calibration_drift", + "ledger_value": 219166.0, + "name": "ons.population.age_20_29_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1160000.0, - "name": "hmrc/state_pension_count_income_band_30_000_to_40_000", + "fixture_value": 689000.0, + "kind": "calibration_drift", + "ledger_value": 690464.0, + "name": "ons.population.age_20_29_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 568000.0, - "name": "hmrc/state_pension_count_income_band_40_000_to_50_000", + "fixture_value": 378000.0, + "kind": "calibration_drift", + "ledger_value": 381438.0, + "name": "ons.population.age_20_29_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 3000.0, - "name": "hmrc/state_pension_count_income_band_500_000_to_1_000_000", + "fixture_value": 347000.0, + "kind": "calibration_drift", + "ledger_value": 350720.0, + "name": "ons.population.age_30_39_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 441000.0, - "name": "hmrc/state_pension_count_income_band_50_000_to_70_000", + "fixture_value": 1029000.0, + "kind": "calibration_drift", + "ledger_value": 1032427.0, + "name": "ons.population.age_30_39_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 176000.0, - "name": "hmrc/state_pension_count_income_band_70_000_to_100_000", + "fixture_value": 745000.0, + "kind": "calibration_drift", + "ledger_value": 749846.0, + "name": "ons.population.age_30_39_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 847000000.0, - "name": "hmrc/state_pension_income_band_100_000_to_150_000", + "fixture_value": 652000.0, + "kind": "calibration_drift", + "ledger_value": 656771.0, + "name": "ons.population.age_30_39_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 11800000000.0, - "name": "hmrc/state_pension_income_band_12_570_to_15_000", + "fixture_value": 813000.0, + "kind": "calibration_drift", + "ledger_value": 814710.0, + "name": "ons.population.age_30_39_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 265000000.0, - "name": "hmrc/state_pension_income_band_150_000_to_200_000", + "fixture_value": 868000.0, + "kind": "calibration_drift", + "ledger_value": 869971.0, + "name": "ons.population.age_30_39_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 22200000000.0, - "name": "hmrc/state_pension_income_band_15_000_to_20_000", + "fixture_value": 1545000.0, + "kind": "calibration_drift", + "ledger_value": 1516452.0, + "name": "ons.population.age_30_39_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 20000000.0, - "name": "hmrc/state_pension_income_band_1_000_000_to_inf", + "fixture_value": 1250000.0, + "kind": "calibration_drift", + "ledger_value": 1249719.0, + "name": "ons.population.age_30_39_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 179000000.0, - "name": "hmrc/state_pension_income_band_200_000_to_300_000", + "fixture_value": 724000.0, + "kind": "calibration_drift", + "ledger_value": 723707.0, + "name": "ons.population.age_30_39_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 24900000000.0, - "name": "hmrc/state_pension_income_band_20_000_to_30_000", + "fixture_value": 258000.0, + "kind": "calibration_drift", + "ledger_value": 254018.0, + "name": "ons.population.age_30_39_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 96000000.0, - "name": "hmrc/state_pension_income_band_300_000_to_500_000", + "fixture_value": 717000.0, + "kind": "calibration_drift", + "ledger_value": 718109.0, + "name": "ons.population.age_30_39_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 12300000000.0, - "name": "hmrc/state_pension_income_band_30_000_to_40_000", + "fixture_value": 398000.0, + "kind": "calibration_drift", + "ledger_value": 400341.0, + "name": "ons.population.age_30_39_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 6020000000.0, - "name": "hmrc/state_pension_income_band_40_000_to_50_000", + "fixture_value": 314000.0, + "kind": "calibration_drift", + "ledger_value": 312822.0, + "name": "ons.population.age_40_49_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 43000000.0, - "name": "hmrc/state_pension_income_band_500_000_to_1_000_000", + "fixture_value": 914000.0, + "kind": "calibration_drift", + "ledger_value": 909169.0, + "name": "ons.population.age_40_49_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 4660000000.0, - "name": "hmrc/state_pension_income_band_50_000_to_70_000", + "fixture_value": 668000.0, + "kind": "calibration_drift", + "ledger_value": 662244.0, + "name": "ons.population.age_40_49_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1890000000.0, - "name": "hmrc/state_pension_income_band_70_000_to_100_000", + "fixture_value": 605000.0, + "kind": "calibration_drift", + "ledger_value": 600162.0, + "name": "ons.population.age_40_49_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 99200000.0, - "name": "nithc.public_transport_support", + "fixture_value": 739000.0, + "kind": "calibration_drift", + "ledger_value": 733710.0, + "name": "ons.population.age_40_49_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 52505000000.0, - "name": "ons.household_energy_expenditure", + "fixture_value": 829000.0, + "kind": "calibration_drift", + "ledger_value": 822990.0, + "name": "ons.population.age_40_49_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 7497928.0, - "name": "ons.population.age_0_9_by_region", + "fixture_value": 1280000.0, + "kind": "calibration_drift", + "ledger_value": 1264515.0, + "name": "ons.population.age_40_49_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8161755.0, - "name": "ons.population.age_10_19_by_region", + "fixture_value": 1241000.0, + "kind": "calibration_drift", + "ledger_value": 1233676.0, + "name": "ons.population.age_40_49_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8525289.0, - "name": "ons.population.age_20_29_by_region", + "fixture_value": 686000.0, + "kind": "calibration_drift", + "ledger_value": 678388.0, + "name": "ons.population.age_40_49_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 9336791.0, - "name": "ons.population.age_30_39_by_region", + "fixture_value": 247000.0, + "kind": "calibration_drift", + "ledger_value": 244462.0, + "name": "ons.population.age_40_49_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 8489468.0, - "name": "ons.population.age_40_49_by_region", + "fixture_value": 673000.0, + "kind": "calibration_drift", + "ledger_value": 666581.0, + "name": "ons.population.age_40_49_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 9148143.0, - "name": "ons.population.age_50_59_by_region", + "fixture_value": 364000.0, + "kind": "calibration_drift", + "ledger_value": 360749.0, + "name": "ons.population.age_40_49_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 7671378.0, - "name": "ons.population.age_60_69_by_region", + "fixture_value": 371000.0, + "kind": "calibration_drift", + "ledger_value": 367103.0, + "name": "ons.population.age_50_59_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 5963774.0, - "name": "ons.population.age_70_79_by_region", + "fixture_value": 1018000.0, + "kind": "calibration_drift", + "ledger_value": 1011356.0, + "name": "ons.population.age_50_59_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2858964.0, - "name": "ons.population.age_80_89_by_region", + "fixture_value": 751000.0, + "kind": "calibration_drift", + "ledger_value": 747499.0, + "name": "ons.population.age_50_59_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1742660.0, - "name": "ons.population.female_0_4", + "fixture_value": 686000.0, + "kind": "calibration_drift", + "ledger_value": 684525.0, + "name": "ons.population.age_50_59_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2025209.0, - "name": "ons.population.female_10_14", + "fixture_value": 805000.0, + "kind": "calibration_drift", + "ledger_value": 804649.0, + "name": "ons.population.age_50_59_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1947075.0, - "name": "ons.population.female_15_19", + "fixture_value": 873000.0, + "kind": "calibration_drift", + "ledger_value": 873937.0, + "name": "ons.population.age_50_59_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2008105.0, - "name": "ons.population.female_20_24", + "fixture_value": 1086000.0, + "kind": "calibration_drift", + "ledger_value": 1090827.0, + "name": "ons.population.age_50_59_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2232408.0, - "name": "ons.population.female_25_29", + "fixture_value": 1296000.0, + "kind": "calibration_drift", + "ledger_value": 1296339.0, + "name": "ons.population.age_50_59_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2417082.0, - "name": "ons.population.female_30_34", + "fixture_value": 800000.0, + "kind": "calibration_drift", + "ledger_value": 796631.0, + "name": "ons.population.age_50_59_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2396290.0, - "name": "ons.population.female_35_39", + "fixture_value": 258000.0, + "kind": "calibration_drift", + "ledger_value": 258467.0, + "name": "ons.population.age_50_59_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2282889.0, - "name": "ons.population.female_40_44", + "fixture_value": 793000.0, + "kind": "calibration_drift", + "ledger_value": 783721.0, + "name": "ons.population.age_50_59_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2056833.0, - "name": "ons.population.female_45_49", + "fixture_value": 436000.0, + "kind": "calibration_drift", + "ledger_value": 433089.0, + "name": "ons.population.age_50_59_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2304569.0, - "name": "ons.population.female_50_54", + "fixture_value": 341000.0, + "kind": "calibration_drift", + "ledger_value": 342756.0, + "name": "ons.population.age_60_69_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2360196.0, - "name": "ons.population.female_55_59", + "fixture_value": 858000.0, + "kind": "calibration_drift", + "ledger_value": 862704.0, + "name": "ons.population.age_60_69_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1916898.0, - "name": "ons.population.female_5_9", + "fixture_value": 635000.0, + "kind": "calibration_drift", + "ledger_value": 638531.0, + "name": "ons.population.age_60_69_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2133183.0, - "name": "ons.population.female_60_64", + "fixture_value": 572000.0, + "kind": "calibration_drift", + "ledger_value": 576856.0, + "name": "ons.population.age_60_69_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1794961.0, - "name": "ons.population.female_65_69", + "fixture_value": 661000.0, + "kind": "calibration_drift", + "ledger_value": 663774.0, + "name": "ons.population.age_60_69_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1633749.0, - "name": "ons.population.female_70_74", + "fixture_value": 721000.0, + "kind": "calibration_drift", + "ledger_value": 726180.0, + "name": "ons.population.age_60_69_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1518990.0, - "name": "ons.population.female_75_79", + "fixture_value": 751000.0, + "kind": "calibration_drift", + "ledger_value": 762738.0, + "name": "ons.population.age_60_69_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 985351.0, - "name": "ons.population.female_80_84", + "fixture_value": 1052000.0, + "kind": "calibration_drift", + "ledger_value": 1060436.0, + "name": "ons.population.age_60_69_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 650117.0, - "name": "ons.population.female_85_89", + "fixture_value": 716000.0, + "kind": "calibration_drift", + "ledger_value": 719639.0, + "name": "ons.population.age_60_69_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 408216.0, - "name": "ons.population.female_90_plus", + "fixture_value": 217000.0, + "kind": "calibration_drift", + "ledger_value": 218137.0, + "name": "ons.population.age_60_69_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1829347.0, - "name": "ons.population.male_0_4", + "fixture_value": 702000.0, + "kind": "calibration_drift", + "ledger_value": 706151.0, + "name": "ons.population.age_60_69_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2125078.0, - "name": "ons.population.male_10_14", + "fixture_value": 393000.0, + "kind": "calibration_drift", + "ledger_value": 393476.0, + "name": "ons.population.age_60_69_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2064393.0, - "name": "ons.population.male_15_19", + "fixture_value": 264000.0, + "kind": "calibration_drift", + "ledger_value": 261974.0, + "name": "ons.population.age_70_79_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2089437.0, - "name": "ons.population.male_20_24", + "fixture_value": 680000.0, + "kind": "calibration_drift", + "ledger_value": 666252.0, + "name": "ons.population.age_70_79_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2195339.0, - "name": "ons.population.male_25_29", + "fixture_value": 510000.0, + "kind": "calibration_drift", + "ledger_value": 500504.0, + "name": "ons.population.age_70_79_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2283116.0, - "name": "ons.population.male_30_34", + "fixture_value": 475000.0, + "kind": "calibration_drift", + "ledger_value": 465125.0, + "name": "ons.population.age_70_79_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2240303.0, - "name": "ons.population.male_35_39", + "fixture_value": 542000.0, + "kind": "calibration_drift", + "ledger_value": 528806.0, + "name": "ons.population.age_70_79_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2163337.0, - "name": "ons.population.male_40_44", + "fixture_value": 612000.0, + "kind": "calibration_drift", + "ledger_value": 597762.0, + "name": "ons.population.age_70_79_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1986409.0, - "name": "ons.population.male_45_49", + "fixture_value": 484000.0, + "kind": "calibration_drift", + "ledger_value": 477581.0, + "name": "ons.population.age_70_79_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2218309.0, - "name": "ons.population.male_50_54", + "fixture_value": 882000.0, + "kind": "calibration_drift", + "ledger_value": 862580.0, + "name": "ons.population.age_70_79_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2265069.0, - "name": "ons.population.male_55_59", + "fixture_value": 630000.0, + "kind": "calibration_drift", + "ledger_value": 616535.0, + "name": "ons.population.age_70_79_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2009023.0, - "name": "ons.population.male_5_9", + "fixture_value": 157000.0, + "kind": "calibration_drift", + "ledger_value": 154231.0, + "name": "ons.population.age_70_79_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 2048486.0, - "name": "ons.population.male_60_64", + "fixture_value": 520000.0, + "kind": "calibration_drift", + "ledger_value": 512152.0, + "name": "ons.population.age_70_79_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1694748.0, - "name": "ons.population.male_65_69", + "fixture_value": 327000.0, + "kind": "calibration_drift", + "ledger_value": 320272.0, + "name": "ons.population.age_70_79_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1486710.0, - "name": "ons.population.male_70_74", + "fixture_value": 145000.0, + "kind": "calibration_drift", + "ledger_value": 118542.0, + "name": "ons.population.age_80_89_by_region@E12000001", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 1324325.0, - "name": "ons.population.male_75_79", + "fixture_value": 379000.0, + "kind": "calibration_drift", + "ledger_value": 313411.0, + "name": "ons.population.age_80_89_by_region@E12000002", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 777961.0, - "name": "ons.population.male_80_84", + "fixture_value": 287000.0, + "kind": "calibration_drift", + "ledger_value": 235572.0, + "name": "ons.population.age_80_89_by_region@E12000003", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 445535.0, - "name": "ons.population.male_85_89", + "fixture_value": 260000.0, + "kind": "calibration_drift", + "ledger_value": 215547.0, + "name": "ons.population.age_80_89_by_region@E12000004", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 203503.0, - "name": "ons.population.male_90_plus", + "fixture_value": 321000.0, + "kind": "calibration_drift", + "ledger_value": 264102.0, + "name": "ons.population.age_80_89_by_region@E12000005", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 68265209.0, - "name": "ons.population.uk_total", + "fixture_value": 360000.0, + "kind": "calibration_drift", + "ledger_value": 293202.0, + "name": "ons.population.age_80_89_by_region@E12000006", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 23120884840.50285, - "name": "orr.rail_government_support", + "fixture_value": 289000.0, + "kind": "calibration_drift", + "ledger_value": 231678.0, + "name": "ons.population.age_80_89_by_region@E12000007", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 438893000.0, - "name": "scotgov.bus.government_support", + "fixture_value": 531000.0, + "kind": "calibration_drift", + "ledger_value": 429759.0, + "name": "ons.population.age_80_89_by_region@E12000008", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "kind": "ledger_only", - "ledger_value": 97426240.0, - "name": "welshgov.bus.public_support", + "fixture_value": 369000.0, + "kind": "calibration_drift", + "ledger_value": 299993.0, + "name": "ons.population.age_80_89_by_region@E12000009", "period": 2023, - "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 557000.0, + "fixture_value": 89000.0, "kind": "calibration_drift", - "ledger_value": 554243.0, - "name": "isc.private_school_students", + "ledger_value": 74648.0, + "name": "ons.population.age_80_89_by_region@N92000002", "period": 2023, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 1957550396058.5835, + "fixture_value": 282000.0, "kind": "calibration_drift", - "ledger_value": 1976893000000.0, - "name": "ons.land.corporate_land_value", + "ledger_value": 233342.0, + "name": "ons.population.age_80_89_by_region@S92000003", "period": 2023, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { - "fixture_value": 4798764603941.416, + "fixture_value": 181000.0, "kind": "calibration_drift", - "ledger_value": 4383082000000.0, - "name": "ons.land.household_land_value", + "ledger_value": 149168.0, + "name": "ons.population.age_80_89_by_region@W92000004", "period": 2023, - "reason": "Ledger-compiled value differs from the fixture value at this comparison period." + "reason": "Region-tier ONS population cell (microcosm#905): the Ledger row binds the ONS mid-year estimate by single year of age at Chronicle's region or country stamp, held to the comparison period as identity, while the incumbent's regional row is an ONS subnational projection rounded to the nearest thousand. The difference is projection-versus-estimate vintage and rounding, never area or band definition: the nine English regions and three nations sum exactly to the retired UK-wide row of the same publication." }, { "fixture_value": 46000.0, diff --git a/packages/microcosm-build/tests/test_target_materialization.py b/packages/microcosm-build/tests/test_target_materialization.py index 88523e5463..cc8e338896 100644 --- a/packages/microcosm-build/tests/test_target_materialization.py +++ b/packages/microcosm-build/tests/test_target_materialization.py @@ -1,4 +1,5 @@ import json + import numpy as np import pandas as pd import pytest diff --git a/packages/microcosm-build/tests/test_uk_ledger_targets.py b/packages/microcosm-build/tests/test_uk_ledger_targets.py index 20cc9931f0..c4ca7d769e 100644 --- a/packages/microcosm-build/tests/test_uk_ledger_targets.py +++ b/packages/microcosm-build/tests/test_uk_ledger_targets.py @@ -1444,7 +1444,7 @@ def test_fully_bound_household_composition_bridge_reconciles_census_cells(): ], { "grain": "constituency", - "geography_id": "E14000001", + "geography_id": "E14001073", "target_id": "ons.census.households", "value": 40.0, }, From 624645f7167eb854de22341b98b4cee8c155bb7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:58:37 +0200 Subject: [PATCH 06/12] Move the region tier constants to the shared geography constants module (#905) UK_REGION_TIER, UK_REGION_TIER_ENUM and UK_LADDER_NATION_REGION_CODES are static code-system data used by the build package's generator, ledger rule, crosswalk tool and tests, so they live beside UK_GEOGRAPHY_ID_TO_LABEL in microcosm.calibrate.geography_constants (docs/shared-constants.md) as immutable mappings, and every consumer imports them from there; the ladder module and the uk_runtime package no longer carry copies. The consistency test now also asserts every tier code is a catalogued geography, which is what lets the schema-8 hierarchy label a region-tier cell. Co-Authored-By: Claude Fable 5.1 --- docs/shared-constants.md | 3 + .../microcosm/build/uk_runtime/__init__.py | 6 -- .../build/uk_runtime/geography_ladder.py | 49 ---------------- .../build/uk_runtime/ledger_targets.py | 10 ++-- .../tests/test_uk_council_tax_targets.py | 2 +- .../tests/test_uk_geography_ladder.py | 6 ++ .../tests/test_uk_local_area_crosswalk.py | 2 +- .../tests/test_uk_target_references.py | 4 +- .../calibrate/geography_constants.py | 57 +++++++++++++++++++ tools/generate_uk_local_area_crosswalk.py | 2 +- tools/generate_uk_target_references.py | 6 +- 11 files changed, 79 insertions(+), 68 deletions(-) diff --git a/docs/shared-constants.md b/docs/shared-constants.md index d9144ca2df..02442f68ee 100644 --- a/docs/shared-constants.md +++ b/docs/shared-constants.md @@ -33,6 +33,9 @@ is the shared source for geography code mappings used by both the calibration and build packages. It currently defines: - `UK_GEOGRAPHY_ID_TO_LABEL` +- `UK_REGION_TIER`, `UK_REGION_TIER_ENUM` and `UK_LADDER_NATION_REGION_CODES` (the + twelve-area region tier UK national references fan out over, its spine + `region` enum names, and the ladder's nation pseudo-codes; microcosm#905) - `US_STATE_FIPS_TO_POSTAL` - `US_STATE_NUMERIC_FIPS_TO_POSTAL` - `US_STATE_POSTAL_TO_NUMERIC_FIPS` diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py index 4a57e2f06f..187310e402 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py @@ -154,9 +154,6 @@ UK_ENGLAND_WALES_REGION_CODES, UK_GEOGRAPHY_LADDER_COLUMNS, UK_LONDON_REGION_CODE, - UK_LADDER_NATION_REGION_CODES, - UK_REGION_TIER, - UK_REGION_TIER_ENUM, UK_OA_LADDER_DERIVED_LAYERS, UK_OA_LADDER_KIND, UK_OA_LADDER_SCHEMA_VERSION, @@ -715,9 +712,6 @@ "UK_GEOGRAPHY_LADDER_COLUMNS", "UK_HMRC_INCOME_SOURCE_STAGES_RESOURCE", "UK_LONDON_REGION_CODE", - "UK_LADDER_NATION_REGION_CODES", - "UK_REGION_TIER", - "UK_REGION_TIER_ENUM", "UK_LOADER_INPUT_ALIASES", "UK_OA_LADDER_DERIVED_LAYERS", "UK_OA_LADDER_KIND", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py index 9c028ca38f..4d8bf08c80 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py @@ -143,55 +143,6 @@ #: collapse to zero is caught the way the US ladder catches an NYC collapse). UK_LONDON_REGION_CODE = "E12000007" -#: The twelve-area region tier of the national calibration surface, in the -#: order the FRS ``gvtregno`` coding and the incumbent's regional rows use: -#: the nine English regions at Chronicle's ``region`` level, then Wales, -#: Scotland and Northern Ireland, which Chronicle stamps at ``country`` (their -#: GSS codes are country codes) but which sit at the same ITL1 tier as the -#: English regions. Two-level (country + region) contract targets fan out -#: over this roster (microcosm#905). -UK_REGION_TIER: tuple[tuple[str, str], ...] = ( - ("region", "E12000001"), # North East - ("region", "E12000002"), # North West - ("region", "E12000003"), # Yorkshire and The Humber - ("region", "E12000004"), # East Midlands - ("region", "E12000005"), # West Midlands - ("region", "E12000006"), # East of England - ("region", "E12000007"), # London - ("region", "E12000008"), # South East - ("region", "E12000009"), # South West - ("country", "W92000004"), # Wales - ("country", "S92000003"), # Scotland - ("country", "N92000002"), # Northern Ireland -) - -#: Region-tier GSS code -> the spine's ``region`` enum name (``REGION_MAP`` in -#: ``frs_spine``), the value a fan-out row's geography predicate compares -#: against. Kept beside the roster so the two cannot drift apart. -UK_REGION_TIER_ENUM: dict[str, str] = { - "E12000001": "NORTH_EAST", - "E12000002": "NORTH_WEST", - "E12000003": "YORKSHIRE", - "E12000004": "EAST_MIDLANDS", - "E12000005": "WEST_MIDLANDS", - "E12000006": "EAST_OF_ENGLAND", - "E12000007": "LONDON", - "E12000008": "SOUTH_EAST", - "E12000009": "SOUTH_WEST", - "W92000004": "WALES", - "S92000003": "SCOTLAND", - "N92000002": "NORTHERN_IRELAND", -} - -#: The ladder's nation pseudo region codes -> the GSS country code the region -#: tier uses for the same area, so an OA-derived region membership can be -#: expressed in tier codes. -UK_LADDER_NATION_REGION_CODES: dict[str, str] = { - "W99999999": "W92000004", - "S99999999": "S92000003", - "N99999999": "N92000002", -} - UK_OA_LADDER_SCHEMA_VERSION = 1 UK_OA_LADDER_KIND = "uk_oa_ladder" diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py index 08d7b65501..b992179c51 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py @@ -30,11 +30,7 @@ ) from microcosm.build.uk_runtime.cgt_calibration import uk_cgt_annual_exempt_amount from microcosm.build.uk_runtime.chronicle_feed import load_uk_chronicle_feed -from microcosm.build.uk_runtime.geography_ladder import ( - UK_ENGLAND_WALES_REGION_CODES, - UK_REGION_TIER, - UK_REGION_TIER_ENUM, -) +from microcosm.build.uk_runtime.geography_ladder import UK_ENGLAND_WALES_REGION_CODES from microcosm.build.uk_runtime.ledger_fact_vendoring import ( feed_identity, load_vendored_resource, @@ -50,6 +46,10 @@ validate_uc_source_month_coverage, ) from microcosm.calibrate import TargetRegistry, TargetSpec +from microcosm.calibrate.geography_constants import ( + UK_REGION_TIER, + UK_REGION_TIER_ENUM, +) from microcosm.frame import Frame diff --git a/packages/microcosm-build/tests/test_uk_council_tax_targets.py b/packages/microcosm-build/tests/test_uk_council_tax_targets.py index dd8c8d3710..d578bfbee8 100644 --- a/packages/microcosm-build/tests/test_uk_council_tax_targets.py +++ b/packages/microcosm-build/tests/test_uk_council_tax_targets.py @@ -9,13 +9,13 @@ import pytest from microcosm.build.country_spec import load_country_spec -from microcosm.build.uk_runtime.geography_ladder import UK_REGION_TIER_ENUM from microcosm.build.uk_runtime.ledger_targets import ( UKFrameTargetAdapter, materialize_uk_ledger_targets, ) from microcosm.build.uk_runtime.local_targets import load_uk_population_contract from microcosm.calibrate import TargetRegistry, TargetSpec +from microcosm.calibrate.geography_constants import UK_REGION_TIER_ENUM from microcosm.calibrate.matrix import build_constraint_matrix from microcosm.frame import EntitySchema, Frame, WeightKind, Weights from tools.generate_uk_local_target_references import _area_signed_deferrals diff --git a/packages/microcosm-build/tests/test_uk_geography_ladder.py b/packages/microcosm-build/tests/test_uk_geography_ladder.py index 679a349dd8..43433feda1 100644 --- a/packages/microcosm-build/tests/test_uk_geography_ladder.py +++ b/packages/microcosm-build/tests/test_uk_geography_ladder.py @@ -668,6 +668,9 @@ def test_region_tier_roster_and_enum_table_are_consistent() -> None: from microcosm.build.uk_runtime.frs_spine import REGION_MAP from microcosm.build.uk_runtime.geography_ladder import ( UK_ENGLAND_WALES_REGION_CODES, + ) + from microcosm.calibrate.geography_constants import ( + UK_GEOGRAPHY_ID_TO_LABEL, UK_LADDER_NATION_REGION_CODES, UK_REGION_TIER, UK_REGION_TIER_ENUM, @@ -675,6 +678,9 @@ def test_region_tier_roster_and_enum_table_are_consistent() -> None: codes = [code for _, code in UK_REGION_TIER] assert len(codes) == 12 == len(set(codes)) + # Every tier code is a catalogued geography, so the schema-8 hierarchy can + # label a region-tier cell without a Chronicle geography.name. + assert set(codes) <= set(UK_GEOGRAPHY_ID_TO_LABEL) assert [code for level, code in UK_REGION_TIER if level == "region"] == [ code for code in UK_ENGLAND_WALES_REGION_CODES if code.startswith("E12") ] diff --git a/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py b/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py index f4b9b84293..6b4086af6f 100644 --- a/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py +++ b/packages/microcosm-build/tests/test_uk_local_area_crosswalk.py @@ -9,7 +9,7 @@ import pytest from microcosm.build.country_spec import load_country_spec -from microcosm.build.uk_runtime.geography_ladder import UK_REGION_TIER +from microcosm.calibrate.geography_constants import UK_REGION_TIER from tools.generate_uk_local_area_crosswalk import build_local_area_crosswalk LADDER_ARTIFACT = Path("build/uk/uk_oa_ladder_2021.npz") diff --git a/packages/microcosm-build/tests/test_uk_target_references.py b/packages/microcosm-build/tests/test_uk_target_references.py index d35f0cf5a7..776cc98a3f 100644 --- a/packages/microcosm-build/tests/test_uk_target_references.py +++ b/packages/microcosm-build/tests/test_uk_target_references.py @@ -37,11 +37,11 @@ from microcosm.build.uk_runtime.chronicle_feed import ( load_uk_chronicle_feed, ) -from microcosm.build.uk_runtime.geography_ladder import ( +from microcosm.build.uk_runtime.local_target_census import _LEDGER_FACT_FEED_PIN +from microcosm.calibrate.geography_constants import ( UK_REGION_TIER, UK_REGION_TIER_ENUM, ) -from microcosm.build.uk_runtime.local_target_census import _LEDGER_FACT_FEED_PIN from microcosm.calibrate.matrix import build_constraint_matrix from microcosm.frame import EntitySchema, Frame, WeightKind, Weights from tools.build_uk_ledger_compile_parity_signed_differences import ( diff --git a/packages/microcosm-calibrate/src/microcosm/calibrate/geography_constants.py b/packages/microcosm-calibrate/src/microcosm/calibrate/geography_constants.py index 172c587951..058cd6c941 100644 --- a/packages/microcosm-calibrate/src/microcosm/calibrate/geography_constants.py +++ b/packages/microcosm-calibrate/src/microcosm/calibrate/geography_constants.py @@ -12,6 +12,9 @@ __all__ = [ "UK_GEOGRAPHY_ID_TO_LABEL", + "UK_LADDER_NATION_REGION_CODES", + "UK_REGION_TIER", + "UK_REGION_TIER_ENUM", "US_STATE_FIPS_TO_POSTAL", "US_STATE_NUMERIC_FIPS_TO_POSTAL", "US_STATE_POSTAL_TO_NUMERIC_FIPS", @@ -41,6 +44,60 @@ ) +#: The twelve-area region tier of the national calibration surface, in the +#: order the FRS ``gvtregno`` coding and the incumbent's regional rows use: +#: the nine English regions at Chronicle's ``region`` level, then Wales, +#: Scotland and Northern Ireland, which Chronicle stamps at ``country`` (their +#: GSS codes are country codes) but which sit at the same ITL1 tier as the +#: English regions. Two-level (country + region) contract targets fan out +#: over this roster (microcosm#905); every code is a key of +#: ``UK_GEOGRAPHY_ID_TO_LABEL``, so the schema-8 hierarchy can label it. +UK_REGION_TIER: tuple[tuple[str, str], ...] = ( + ("region", "E12000001"), # North East + ("region", "E12000002"), # North West + ("region", "E12000003"), # Yorkshire and The Humber + ("region", "E12000004"), # East Midlands + ("region", "E12000005"), # West Midlands + ("region", "E12000006"), # East of England + ("region", "E12000007"), # London + ("region", "E12000008"), # South East + ("region", "E12000009"), # South West + ("country", "W92000004"), # Wales + ("country", "S92000003"), # Scotland + ("country", "N92000002"), # Northern Ireland +) + +#: Region-tier GSS code -> the spine's ``region`` enum name (``REGION_MAP`` in +#: ``frs_spine``), the value a fan-out row's geography predicate compares +#: against. Kept beside the roster so the two cannot drift apart. +UK_REGION_TIER_ENUM: Mapping[str, str] = MappingProxyType( + { + "E12000001": "NORTH_EAST", + "E12000002": "NORTH_WEST", + "E12000003": "YORKSHIRE", + "E12000004": "EAST_MIDLANDS", + "E12000005": "WEST_MIDLANDS", + "E12000006": "EAST_OF_ENGLAND", + "E12000007": "LONDON", + "E12000008": "SOUTH_EAST", + "E12000009": "SOUTH_WEST", + "W92000004": "WALES", + "S92000003": "SCOTLAND", + "N92000002": "NORTHERN_IRELAND", + } +) + +#: The ladder's nation pseudo region codes -> the GSS country code the region +#: tier uses for the same area, so an OA-derived region membership can be +#: expressed in tier codes. +UK_LADDER_NATION_REGION_CODES: Mapping[str, str] = MappingProxyType( + { + "W99999999": "W92000004", + "S99999999": "S92000003", + "N99999999": "N92000002", + } +) + # Two-character Census state FIPS code -> USPS postal abbreviation. This # project treats the District of Columbia as a state-level geography. US_STATE_FIPS_TO_POSTAL: Mapping[str, str] = MappingProxyType( diff --git a/tools/generate_uk_local_area_crosswalk.py b/tools/generate_uk_local_area_crosswalk.py index 938e2fcc08..62af2b02ec 100644 --- a/tools/generate_uk_local_area_crosswalk.py +++ b/tools/generate_uk_local_area_crosswalk.py @@ -11,7 +11,7 @@ import numpy as np -from microcosm.build.uk_runtime.geography_ladder import ( +from microcosm.calibrate.geography_constants import ( UK_LADDER_NATION_REGION_CODES, UK_REGION_TIER, ) diff --git a/tools/generate_uk_target_references.py b/tools/generate_uk_target_references.py index 3bcb304a92..3b344d11a5 100644 --- a/tools/generate_uk_target_references.py +++ b/tools/generate_uk_target_references.py @@ -21,12 +21,12 @@ author_target_references, target_references_resource, ) -from microcosm.build.uk_runtime.geography_ladder import ( +from microcosm.build.uk_runtime.ledger_targets import UK_UPRATING_APPLIERS +from microcosm.build.uk_runtime.uc_source_periods import uc_source_month_metadata +from microcosm.calibrate.geography_constants import ( UK_REGION_TIER, UK_REGION_TIER_ENUM, ) -from microcosm.build.uk_runtime.ledger_targets import UK_UPRATING_APPLIERS -from microcosm.build.uk_runtime.uc_source_periods import uc_source_month_metadata UK_GEOGRAPHY_IDS = { "uk": "K02000001", From f3cece1b196c80a36340c1aaf0f7dd4f11f4c9a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 16:02:39 +0200 Subject: [PATCH 07/12] Sign the three band-H region cells with no spine support (#905) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spine-q comparison bound every region-tier cell within 5% except voa.council_tax_stock.band_h in the North East, North West and Yorkshire and the Humber, which measure 0 against the VOA stock (-100%): the spine carries no council-tax band-H household in those regions (spine-m held 170 band-H households from 49 raw FRS households, none there; microcosm#762 A14), the class already signed for the local band-H family. María's ruling of 2026-09-14 on PR #906 adds the three cells to the reviewed measure-exclusion register, tracking microcosm#796, windowed to 2026-11-26 with the other spine-support entries; each binds when a spine vintage carries broader band-H support. Co-Authored-By: Claude Fable 5.1 --- .../uk/calibration_measure_exclusions.json | 27 +++++++++++++++++++ .../tests/test_uk_measure_simulation.py | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json b/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json index 6b3d394812..d327461dc6 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json +++ b/packages/microcosm-build/src/microcosm/build/uk/calibration_measure_exclusions.json @@ -423,6 +423,33 @@ "adjudication": "microcosm#355 (dataset-size experiment; ruling by Mar\u00eda 2026-09-08 after the 45,800 smoke's by-name refusal)", "approved_on": "2026-09-08", "expires_on": "2026-12-08" + }, + { + "name": "voa.council_tax_stock.band_h@E12000001", + "reason": "Spine support absent for band H in the North East region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the VOA stock (-100% on the #905 spine-q comparison, docs/evidence/uk-region-tier-905/calibration-comparison.json) while the other 78 VOA region cells fit within 5%. The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", + "tracking": "microcosm#796", + "approved_by": "juaristi22", + "adjudication": "microcosm#905 (region-tier activation; ruling by Mar\u00eda 2026-09-14 on PR #906, the #762 A14 spine-support class)", + "approved_on": "2026-09-14", + "expires_on": "2026-11-26" + }, + { + "name": "voa.council_tax_stock.band_h@E12000002", + "reason": "Spine support absent for band H in the North West region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the VOA stock (-100% on the #905 spine-q comparison, docs/evidence/uk-region-tier-905/calibration-comparison.json) while the other 78 VOA region cells fit within 5%. The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", + "tracking": "microcosm#796", + "approved_by": "juaristi22", + "adjudication": "microcosm#905 (region-tier activation; ruling by Mar\u00eda 2026-09-14 on PR #906, the #762 A14 spine-support class)", + "approved_on": "2026-09-14", + "expires_on": "2026-11-26" + }, + { + "name": "voa.council_tax_stock.band_h@E12000003", + "reason": "Spine support absent for band H in the Yorkshire and The Humber region-tier cell: the spine carries no council-tax band-H household there (spine-m held 170 band-H households from 49 raw FRS households, none in the North East, North West or Yorkshire and the Humber; microcosm#762 A14), so the cell measures 0 against the VOA stock (-100% on the #905 spine-q comparison, docs/evidence/uk-region-tier-905/calibration-comparison.json) while the other 78 VOA region cells fit within 5%. The same class is signed for the local band-H family under council_tax_band_h_spine_support_absent; the cell binds when a spine vintage carries broader band-H support.", + "tracking": "microcosm#796", + "approved_by": "juaristi22", + "adjudication": "microcosm#905 (region-tier activation; ruling by Mar\u00eda 2026-09-14 on PR #906, the #762 A14 spine-support class)", + "approved_on": "2026-09-14", + "expires_on": "2026-11-26" } ] } diff --git a/packages/microcosm-build/tests/test_uk_measure_simulation.py b/packages/microcosm-build/tests/test_uk_measure_simulation.py index 28f52db0f4..e28dcac285 100644 --- a/packages/microcosm-build/tests/test_uk_measure_simulation.py +++ b/packages/microcosm-build/tests/test_uk_measure_simulation.py @@ -603,7 +603,7 @@ def test_exclusion_applier_warns_within_week_of_expiry(): def test_packaged_exclusions_load(): exclusions = load_uk_calibration_measure_exclusions() names = [entry["name"] for entry in exclusions] - assert len(names) == len(set(names)) == 47 + assert len(names) == len(set(names)) == 50 for marker, expected in _PACKAGED_EXCLUSION_CENSUS.items(): matched = [name for name in names if marker in name] From 4db170e05dda42136ce7a589050fcc0b2f47efac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 17:36:37 +0200 Subject: [PATCH 08/12] Resolve region legs from the run's ladder, with the crosswalk as fallback (#905) The rowwise driver reconciles against the ladder it assigned households with, so the region-tier leg of a constituency or authority must come from that ladder rather than from the committed crosswalk alone: a synthetic or newer ladder carries areas the crosswalk does not, and CI's rowwise end-to-end test refused on exactly that. uk_cross_grain_leg_of_area now builds the resolver for a run from an area -> tier mapping; uk_area_region_codes derives that mapping from a ladder (constituency and authority ids to tier codes through the same nesting check the crosswalk generator uses, now shared as region_tier_by_area), and the driver passes it at every surface call. Without a mapping the resolver reads the committed crosswalk, which is what the leg licences and the standing rule use; an English code unknown to either still refuses. Co-Authored-By: Claude Fable 5.1 --- .../microcosm/build/uk_runtime/__init__.py | 4 + .../build/uk_runtime/geography_ladder.py | 67 +++++++++++++++ .../build/uk_runtime/ledger_targets.py | 83 +++++++++++++------ .../tests/test_uk_geography_ladder.py | 38 +++++++++ .../tests/test_uk_ledger_targets.py | 45 ++++++++++ tools/build_uk_rowwise_candidate.py | 4 + tools/generate_uk_local_area_crosswalk.py | 39 +-------- 7 files changed, 218 insertions(+), 62 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py index 187310e402..b21e0c9738 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/__init__.py @@ -161,6 +161,8 @@ assign_uk_geography_ladder, expected_uk_ladder_area_support, load_uk_oa_ladder, + region_tier_by_area, + uk_area_region_codes, uk_geography_ladder_assignment_summary, uk_geography_ladder_gate, uk_region_mix, @@ -873,6 +875,8 @@ "load_scotland_oa_population", "load_scotland_oa_ward_lookup", "load_uk_oa_ladder", + "region_tier_by_area", + "uk_area_region_codes", "local_authority_household_targets", "load_uk_local_target_census", "ladder_target_provenance", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py index 4d8bf08c80..58e26f5834 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/geography_ladder.py @@ -88,6 +88,10 @@ from microcosm.build.gates import GateResult from microcosm.build.uk_runtime.rowwise_geography import FRS_REGION_TO_REGION_CODE +from microcosm.calibrate.geography_constants import ( + UK_LADDER_NATION_REGION_CODES, + UK_REGION_TIER, +) #: Derived (lookup-sourced) layers the ladder artifact must carry a vintage #: for. ITL2 and ITL1 are structural prefixes of the ITL3 code and share the @@ -143,6 +147,69 @@ #: collapse to zero is caught the way the US ladder catches an NYC collapse). UK_LONDON_REGION_CODE = "E12000007" + +def region_tier_by_area( + codes: np.ndarray, + regions: np.ndarray, + *, + level: str, +) -> dict[str, str]: + """Map every area id to the one region-tier code its output areas carry. + + The ladder stamps each OA with a region code (``E12`` for England, the + nation pseudo-codes elsewhere). The region tier nests constituencies and + authorities exactly, so an area whose OAs disagree is a ladder defect and + refuses here rather than becoming a cross-grain leg that belongs to two + controls (microcosm#905). + """ + + tier_codes = {code for _, code in UK_REGION_TIER} + region_by_area: dict[str, str] = {} + for area_id, region in zip( + np.asarray(codes).astype(str).tolist(), + np.asarray(regions).astype(str).tolist(), + strict=True, + ): + tier = UK_LADDER_NATION_REGION_CODES.get(region, region) + if tier not in tier_codes: + raise ValueError( + f"UK OA ladder {level} area {area_id!r} carries region code " + f"{region!r}, which is outside the region tier." + ) + previous = region_by_area.setdefault(area_id, tier) + if previous != tier: + raise ValueError( + f"UK OA ladder {level} area {area_id!r} spans region-tier codes " + f"{previous!r} and {tier!r}; the region tier must nest." + ) + return dict(sorted(region_by_area.items())) + + +def uk_area_region_codes(ladder: Any) -> dict[str, str]: + """Constituency and local-authority id -> region-tier code, from a ladder. + + The run's own ladder is the authority for the cross-grain legs of the + areas it assigned; the packaged crosswalk carries the same mapping for + the pinned ladder and is the fallback when no ladder is in hand. + """ + + mapping: dict[str, str] = {} + for level, column in ( + ("constituency", "constituency_code"), + ("local_authority", "local_authority_code"), + ): + for area_id, tier in region_tier_by_area( + getattr(ladder, column), ladder.region_code, level=level + ).items(): + previous = mapping.setdefault(area_id, tier) + if previous != tier: + raise ValueError( + f"UK OA ladder area {area_id!r} maps to both {previous!r} " + f"and {tier!r} across levels." + ) + return mapping + + UK_OA_LADDER_SCHEMA_VERSION = 1 UK_OA_LADDER_KIND = "uk_oa_ladder" diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py index b992179c51..4896aa4b9a 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py @@ -4,7 +4,7 @@ import json import math -from collections.abc import Iterable, Mapping +from collections.abc import Callable, Iterable, Mapping from dataclasses import dataclass, replace from functools import lru_cache from importlib import resources as importlib_resources @@ -111,36 +111,58 @@ def _uk_crosswalk_region_by_area() -> dict[str, str]: return _UK_CROSSWALK_REGION_BY_AREA -def _uk_cross_grain_leg_of_area(area_code: str) -> str: - """The region-tier leg an area belongs to (microcosm#905). +def uk_cross_grain_leg_of_area( + area_region_codes: Mapping[str, str] | None = None, +) -> Callable[[str], str]: + """Build the leg resolver for one run (microcosm#905). A region-tier code is its own leg. A Welsh, Scottish or Northern Irish area maps to its nation by GSS prefix: the tier does not subdivide the - nations. An English constituency or authority resolves through the - crosswalk's ladder-derived region membership, and an English code the - crosswalk does not carry refuses rather than falling back to an - ``England`` leg that no control covers. + nations. An English constituency or authority resolves through + ``area_region_codes`` — the run's ladder-derived membership when the + caller has a ladder in hand, otherwise the committed crosswalk's — and an + English code the mapping does not carry refuses rather than falling back + to an ``England`` leg that no control covers. """ - code = str(area_code).strip() - if not code: - raise ValueError("UK cross-grain area code must not be blank.") - if code in UK_REGION_TIER_CODES: - return code - prefix = code[0].upper() - nation = _UK_NATION_LEG_BY_PREFIX.get(prefix) - if nation is not None: - return nation - if prefix != "E": - raise ValueError(f"Unknown UK area code prefix {prefix!r} for code {code!r}.") - region = _uk_crosswalk_region_by_area().get(code) - if region is None: - raise ValueError( - f"UK cross-grain area code {code!r} is not in the local-area " - "crosswalk, so it has no region-tier leg." + def leg_of_area(area_code: str) -> str: + code = str(area_code).strip() + if not code: + raise ValueError("UK cross-grain area code must not be blank.") + if code in UK_REGION_TIER_CODES: + return code + prefix = code[0].upper() + nation = _UK_NATION_LEG_BY_PREFIX.get(prefix) + if nation is not None: + return nation + if prefix != "E": + raise ValueError( + f"Unknown UK area code prefix {prefix!r} for code {code!r}." + ) + mapping = ( + _uk_crosswalk_region_by_area() + if area_region_codes is None + else area_region_codes ) - return region + region = mapping.get(code) + if region is None: + source = ( + "the local-area crosswalk" + if area_region_codes is None + else "the run's ladder membership" + ) + raise ValueError( + f"UK cross-grain area code {code!r} is not in {source}, so it " + "has no region-tier leg." + ) + return str(region) + + return leg_of_area + +#: The committed-crosswalk resolver: the standing rule's default, and the one +#: the leg licences derive from. +_uk_cross_grain_leg_of_area = uk_cross_grain_leg_of_area() UK_CROSS_GRAIN_GRAIN_PRECEDENCE = ("country", "region", "constituency", "la") UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS: dict[str, tuple[str, ...]] = { @@ -1389,6 +1411,7 @@ def apply_uk_cross_grain_reconciliation( *, reviewed_unbound_higher_targets: Mapping[str, Mapping[str, object]] | None = None, licensed_empty_legs: Mapping[str, frozenset[str]] | None = None, + area_region_codes: Mapping[str, str] | None = None, ) -> tuple[pd.DataFrame, dict[str, Any]]: """Apply the standing UK rule to a bound mixed-grain target surface. @@ -1404,11 +1427,19 @@ def apply_uk_cross_grain_reconciliation( if licensed_empty_legs is None else licensed_empty_legs ) + rule = ( + UK_CROSS_GRAIN_RULE + if area_region_codes is None + else replace( + UK_CROSS_GRAIN_RULE, + leg_of_area=uk_cross_grain_leg_of_area(area_region_codes), + ) + ) return apply_cross_grain_reconciliation( local_frame, bound_higher_targets, _uk_contract_targets(national_only=False), - UK_CROSS_GRAIN_RULE, + rule, reviewed_unbound_higher_targets=reviewed_unbound_higher_targets, licensed_empty_legs=licences, ) @@ -1715,6 +1746,7 @@ def uk_local_target_surface( reviewed_unbound_higher_targets: Mapping[str, Mapping[str, object]] | None = None, licensed_empty_legs: Mapping[str, frozenset[str]] | None = None, census_household_uprating: Mapping[str, Any] | None = None, + area_region_codes: Mapping[str, str] | None = None, ) -> tuple[pd.DataFrame, dict[str, Any]]: """Assemble and reconcile the present-cell UK local target surface. @@ -1982,6 +2014,7 @@ def uk_local_target_surface( bound_control_ids, reviewed_unbound_higher_targets=reviewed_unbound_higher_targets, licensed_empty_legs=licensed_empty_legs, + area_region_codes=area_region_codes, ) receipt["fanout_targets_not_controls"] = fanout_targets_not_controls diff --git a/packages/microcosm-build/tests/test_uk_geography_ladder.py b/packages/microcosm-build/tests/test_uk_geography_ladder.py index 43433feda1..7fdbd3e8f1 100644 --- a/packages/microcosm-build/tests/test_uk_geography_ladder.py +++ b/packages/microcosm-build/tests/test_uk_geography_ladder.py @@ -700,3 +700,41 @@ def test_region_tier_roster_and_enum_table_are_consistent() -> None: "S92000003", "N92000002", } + + +def test_uk_area_region_codes_reads_the_ladder_in_hand() -> None: + from types import SimpleNamespace + + from microcosm.build.uk_runtime.geography_ladder import uk_area_region_codes + + ladder = SimpleNamespace( + constituency_code=np.array( + ["E14000001", "E14000001", "W07000041", "S14000001"] + ), + local_authority_code=np.array( + ["E09000001", "E09000001", "W06000001", "S12000033"] + ), + region_code=np.array(["E12000007", "E12000007", "W99999999", "S99999999"]), + ) + assert uk_area_region_codes(ladder) == { + "E09000001": "E12000007", + "E14000001": "E12000007", + "S12000033": "S92000003", + "S14000001": "S92000003", + "W06000001": "W92000004", + "W07000041": "W92000004", + } + split = SimpleNamespace( + constituency_code=np.array(["E14000001", "E14000001"]), + local_authority_code=np.array(["E09000001", "E09000001"]), + region_code=np.array(["E12000007", "E12000001"]), + ) + with pytest.raises(ValueError, match="must nest"): + uk_area_region_codes(split) + outside = SimpleNamespace( + constituency_code=np.array(["E14000001"]), + local_authority_code=np.array(["E09000001"]), + region_code=np.array(["E13000001"]), + ) + with pytest.raises(ValueError, match="outside the region tier"): + uk_area_region_codes(outside) diff --git a/packages/microcosm-build/tests/test_uk_ledger_targets.py b/packages/microcosm-build/tests/test_uk_ledger_targets.py index c4ca7d769e..f528d16199 100644 --- a/packages/microcosm-build/tests/test_uk_ledger_targets.py +++ b/packages/microcosm-build/tests/test_uk_ledger_targets.py @@ -24,6 +24,7 @@ compile_uk_target_registry, materialize_uk_ledger_targets, uk_census_household_uprating, + uk_cross_grain_leg_of_area, uk_ledger_households_total, uk_local_target_surface, uk_private_rent_mean_to_total, @@ -2220,3 +2221,47 @@ def test_uk_local_target_surface_refuses_an_unknown_cross_grain_grain() -> None: bound_national_target_ids=("ons.population.age_0_9_by_region",), period=2025, ) + + +def test_run_ladder_membership_resolves_legs_the_crosswalk_does_not_know() -> None: + """A run supplies its own ladder's area -> tier mapping; the crosswalk is the fallback.""" + + run_legs = uk_cross_grain_leg_of_area( + {"E14000001": "E12000007", "E06000001": "E12000001"} + ) + assert run_legs("E14000001") == "E12000007" + assert run_legs("E06000001") == "E12000001" + # Tier codes and nations never consult the mapping. + assert run_legs("E12000003") == "E12000003" + assert run_legs("W07000041") == "W92000004" + with pytest.raises(ValueError, match="run's ladder membership"): + run_legs("E14001073") + # The default resolver reads the committed crosswalk. + assert _uk_cross_grain_leg_of_area("E14001073") == "E12000007" + with pytest.raises(ValueError, match="local-area crosswalk"): + _uk_cross_grain_leg_of_area("E14000001") + + national_id = "ons.population.age_0_9_by_region" + surface = pd.DataFrame( + [ + { + "grain": "region", + "geography_id": "E12000007", + "target_id": national_id, + "value": 100.0, + }, + { + "grain": "constituency", + "geography_id": "E14000001", + "target_id": "ons.age.0_10", + "value": 60.0, + }, + ] + ) + reconciled, receipt = apply_uk_cross_grain_reconciliation( + surface, (national_id,), area_region_codes={"E14000001": "E12000007"} + ) + assert reconciled["value"].tolist() == pytest.approx([100.0, 100.0]) + assert receipt["groups"][0]["legs"][0]["parent_geography_id"] == "E12000007" + with pytest.raises(ValueError, match="local-area crosswalk"): + apply_uk_cross_grain_reconciliation(surface, (national_id,)) diff --git a/tools/build_uk_rowwise_candidate.py b/tools/build_uk_rowwise_candidate.py index 4b87b0e049..02cfaa7661 100644 --- a/tools/build_uk_rowwise_candidate.py +++ b/tools/build_uk_rowwise_candidate.py @@ -90,6 +90,7 @@ runtime_provenance, solve_uk_rowwise_weights_under_doctrine, spine_provenance_from_sidecar, + uk_area_region_codes, uk_census_household_uprating, uk_fit_by_family, uk_household_weight_kind, @@ -1540,6 +1541,7 @@ def _build_joint_problem( period=period, reviewed_unbound_higher_targets=reviewed_unbound_higher_targets, census_household_uprating=census_household_uprating, + area_region_codes=uk_area_region_codes(assignment.ladder), ) covered = { grain: set(values.astype(str).tolist()) for grain, values in assigned.items() @@ -1667,6 +1669,7 @@ def _joint_dry_run_plan( bound_national_target_ids=_national_contract_target_ids(national_registry), period=joint_inputs["calibration_year"], reviewed_unbound_higher_targets=joint_inputs["reviewed_unbound_higher_targets"], + area_region_codes=uk_area_region_codes(ladder), census_household_uprating=joint_inputs.get("census_household_uprating"), ) household = clone.frame.table("household") @@ -1847,6 +1850,7 @@ def _build_bound_problem( bound_national_target_ids=BOUND_NATIONAL_TARGETS, period=period, census_household_uprating=census_household_uprating, + area_region_codes=uk_area_region_codes(assignment.ladder), ) surface = surface.sort_values("area_code", kind="mergesort").reset_index(drop=True) targets = pd.DataFrame( diff --git a/tools/generate_uk_local_area_crosswalk.py b/tools/generate_uk_local_area_crosswalk.py index 62af2b02ec..2494a50150 100644 --- a/tools/generate_uk_local_area_crosswalk.py +++ b/tools/generate_uk_local_area_crosswalk.py @@ -11,10 +11,7 @@ import numpy as np -from microcosm.calibrate.geography_constants import ( - UK_LADDER_NATION_REGION_CODES, - UK_REGION_TIER, -) +from microcosm.build.uk_runtime.geography_ladder import region_tier_by_area DEFAULT_LADDER_ARTIFACT = Path("build/uk/uk_oa_ladder_2021.npz") DEFAULT_LADDER_SUMMARY = Path("build/uk/ladder_summary.json") @@ -146,7 +143,7 @@ def _level_payload( f"UK OA ladder {level} roster has {len(area_ids)} area id(s), " f"expected {expected}." ) - region_code_by_area = _region_tier_by_area( + region_code_by_area = region_tier_by_area( codes, np.asarray(payload["region_code"]).astype(str), level=level ) layers = metadata.get("layers") or {} @@ -187,38 +184,6 @@ def _level_payload( } -def _region_tier_by_area( - codes: np.ndarray, - regions: np.ndarray, - *, - level: str, -) -> dict[str, str]: - """Map every area id to the one region-tier code its output areas carry. - - The ladder stamps each OA with a region code (``E12`` for England, the - nation pseudo-codes elsewhere). The region tier nests constituencies and - authorities exactly, so an area whose OAs disagree is a ladder defect and - refuses here rather than becoming a leg that belongs to two controls. - """ - - tier_codes = {code for _, code in UK_REGION_TIER} - region_by_area: dict[str, str] = {} - for area_id, region in zip(codes.tolist(), regions.tolist(), strict=True): - tier = UK_LADDER_NATION_REGION_CODES.get(region, region) - if tier not in tier_codes: - raise ValueError( - f"UK OA ladder {level} area {area_id!r} carries region code " - f"{region!r}, which is outside the region tier." - ) - previous = region_by_area.setdefault(area_id, tier) - if previous != tier: - raise ValueError( - f"UK OA ladder {level} area {area_id!r} spans region-tier codes " - f"{previous!r} and {tier!r}; the region tier must nest." - ) - return dict(sorted(region_by_area.items())) - - def _sha256(path: Path) -> str: digest = hashlib.sha256() with path.open("rb") as file: From 1fd0ed606c0816e71a88894b742a8f6f3fc57a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 18:23:55 +0200 Subject: [PATCH 09/12] Assign each lower leg to its nearest control grain (#905) Vahid's #906 review found that the VOA region controls and the Scottish CTAXBASE country control could not coexist: the three council-tax families carry one measurement signature, exact-signature grouping puts them in one group, and the operator's single-winner rule let the country row parent everything, leaving the nine English legs unparented once the VOA rows sat at region grain (and, bound alone, the Scottish leg the other way). CrossGrainRule now declares control_grains (the UK rule: country and region; the default, empty, keeps the top grain alone, so the US and Belgian rules are unchanged). With control rows present, every control grain pairs with each grain below it; pairs run top-down so a region row is rescaled to its country before it controls its authorities; and each lower leg takes its nearest covering control. Legs a nearer control already reconciled are receipted as delegated rather than rescaled twice or treated as empty, a control that would straddle delegated and live legs refuses, a country row with no region rows on a leg is not a licence matter (it parents the leaf rows there directly), the bound gate applies to every control grain, and a leaf row no control covers still refuses. The review's surface is now a test, alongside shared-operator tests for nesting under a country row, the split refusal, unbound middle-tier rows, leaf orphans and the declaration's validation; the parity row cites that test. Co-Authored-By: Claude Fable 5.1 --- .../src/microcosm/build/cross_grain.py | 203 ++++++++++++++--- .../build/uk/uk_data_target_parity.json | 2 +- .../build/uk_runtime/data_target_parity.py | 2 +- .../build/uk_runtime/ledger_targets.py | 50 +++-- .../microcosm-build/tests/test_cross_grain.py | 204 ++++++++++++++++++ .../tests/test_uk_ledger_targets.py | 73 ++++++- 6 files changed, 479 insertions(+), 55 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/cross_grain.py b/packages/microcosm-build/src/microcosm/build/cross_grain.py index 23dde3eb4e..e3c197f30e 100644 --- a/packages/microcosm-build/src/microcosm/build/cross_grain.py +++ b/packages/microcosm-build/src/microcosm/build/cross_grain.py @@ -48,6 +48,13 @@ class CrossGrainRule: bridges: tuple[CrossGrainBridge, ...] leg_of_area: Callable[[str], str] parent_geography_legs: Mapping[str, tuple[str, ...]] + #: Grains whose rows parent the grains below them. Empty means the top + #: grain alone (the standing single-winner rule). Declaring a middle tier + #: (a region between country and constituency) lets each lower leg take + #: its nearest covering control, so a region row controls its own + #: constituencies and authorities while a country row controls the legs no + #: region row covers. + control_grains: tuple[str, ...] = () @dataclass(frozen=True) @@ -140,7 +147,7 @@ def detect_cross_grain_inconsistencies( bridge = None is_bound_higher = contract_id in bound_set - if grain == rule.grain_precedence[0] and not is_bound_higher: + if grain in _control_grains(rule) and not is_bound_higher: continue if is_bound_higher: seen_bound.add(contract_id) @@ -182,28 +189,43 @@ def detect_cross_grain_inconsistencies( inconsistencies: list[CrossGrainInconsistency] = [] precedence = {grain: index for index, grain in enumerate(rule.grain_precedence)} + control_grains = _control_grains(rule) for (kind, bridge_id, signature), rows in grouped.items(): grains = sorted({row[1] for row in rows}, key=precedence.__getitem__) if len(grains) < 2: continue - winning_grain = grains[0] - winning = tuple(row[0] for row in rows if row[1] == winning_grain) - higher_ids = tuple( - sorted( - { - target_id - for position in winning - if ( - target_id := _contract_target_id( - str(local_frame.iloc[position][columns["target_id"]]) + identity = _inconsistency_identity(kind, bridge_id, signature) + controls_present = [grain for grain in grains if grain in control_grains] + # A group with no control-tier row keeps the standing single-winner + # rule: its top grain parents the rest. With control rows present, + # every control grain parents each grain below it, and reconciliation + # assigns each lower leg to its nearest covering control. + pairs = ( + [(grains[0], lower) for lower in grains[1:]] + if not controls_present + else [ + (higher, lower) + for lower in grains + for higher in controls_present + if precedence[higher] < precedence[lower] + ] + ) + for winning_grain, lower_grain in pairs: + winning = tuple(row[0] for row in rows if row[1] == winning_grain) + higher_ids = tuple( + sorted( + { + target_id + for position in winning + if ( + target_id := _contract_target_id( + str(local_frame.iloc[position][columns["target_id"]]) + ) ) - ) - is not None - } + is not None + } + ) ) - ) - identity = _inconsistency_identity(kind, bridge_id, signature) - for lower_grain in grains[1:]: lower = tuple(row[0] for row in rows if row[1] == lower_grain) inconsistencies.append( CrossGrainInconsistency( @@ -217,7 +239,19 @@ def detect_cross_grain_inconsistencies( higher_target_ids=higher_ids, ) ) - return tuple(sorted(inconsistencies, key=lambda group: group.inconsistency_id)) + # Lower grains reconcile top-down (a region row is rescaled to its country + # before it controls its authorities), and within one lower grain the + # nearest control grain claims first. + return tuple( + sorted( + inconsistencies, + key=lambda group: ( + precedence[group.lower_grain], + -precedence[group.winning_grain], + group.inconsistency_id, + ), + ) + ) def _reconcile_cross_grain_surface_with_control_receipts( @@ -245,8 +279,28 @@ def _reconcile_cross_grain_surface_with_control_receipts( receipts: list[dict[str, Any]] = [] empty_legs_licensed: list[dict[str, Any]] = [] controls_without_lower_rows: list[dict[str, Any]] = [] + delegated_legs: list[dict[str, Any]] = [] + control_grains = _control_grains(rule) + # Rows already rescaled by a nearer control, per group identity and lower + # grain, so a farther control never rescales them again; and the rows no + # control has covered yet, checked once every pair has had its turn. + claimed: dict[tuple[str, str], set[int]] = {} + unparented_rows: dict[tuple[str, str], dict[int, str]] = {} + first_pair_id: dict[tuple[str, str], str] = {} + absent_middle_tier_legs: list[dict[str, Any]] = [] + pairs_per_key: dict[tuple[str, str], int] = {} + for group in materialized_groups: + key = (group.inconsistency_id.rsplit(":", 1)[0], group.lower_grain) + pairs_per_key[key] = pairs_per_key.get(key, 0) + 1 + pairs_seen: dict[tuple[str, str], int] = {} for group in materialized_groups: controls = _winning_controls(reconciled, group, columns, rule) + claim_key = (group.inconsistency_id.rsplit(":", 1)[0], group.lower_grain) + first_pair_id.setdefault(claim_key, group.inconsistency_id) + pairs_seen[claim_key] = pairs_seen.get(claim_key, 0) + 1 + last_pair_for_key = pairs_seen[claim_key] == pairs_per_key[claim_key] + already = claimed.setdefault(claim_key, set()) + lower_by_leg_all: dict[str, list[int]] = {} lower_by_leg: dict[str, list[int]] = {} for position in group.lower_positions: area = str(reconciled.iloc[position][columns["geography_id"]]) @@ -256,7 +310,9 @@ def _reconcile_cross_grain_surface_with_control_receipts( f"cross-grain inconsistency {group.inconsistency_id!r} " f"maps area {area!r} to a blank leg." ) - lower_by_leg.setdefault(leg, []).append(position) + lower_by_leg_all.setdefault(leg, []).append(position) + if position not in already: + lower_by_leg.setdefault(leg, []).append(position) lower_target_ids = tuple( sorted( @@ -284,12 +340,25 @@ def _reconcile_cross_grain_surface_with_control_receipts( continue assigned_controls[leg] = control - unparented = sorted(set(lower_by_leg) - set(assigned_controls)) - if unparented: - raise ValueError( - f"cross-grain inconsistency {group.inconsistency_id!r} has " - f"unparented lower-grain leg(s) {unparented}." + pending = unparented_rows.setdefault(claim_key, {}) + for leg in set(lower_by_leg) - set(assigned_controls): + for position in lower_by_leg[leg]: + pending[position] = leg + if last_pair_for_key and group.lower_grain not in control_grains: + # No farther control can still claim these leaf rows: refuse now, + # ahead of the empty-leg licence check, as the standing rule does. + unparented = sorted( + { + leg + for position, leg in pending.items() + if position not in already and leg not in assigned_controls + } ) + if unparented: + raise ValueError( + f"cross-grain inconsistency {group.inconsistency_id!r} has " + f"unparented lower-grain leg(s) {unparented}." + ) populated_controls: list[dict[str, Any]] = [] for control in controls: @@ -298,10 +367,53 @@ def _reconcile_cross_grain_surface_with_control_receipts( for leg in control["covered_legs"] for position in lower_by_leg.get(leg, ()) ] + delegated = [ + leg + for leg in control["covered_legs"] + if leg not in lower_by_leg and leg in lower_by_leg_all + ] + empty = [ + leg for leg in control["covered_legs"] if leg not in lower_by_leg_all + ] + if positions and delegated: + raise ValueError( + f"cross-grain inconsistency {group.inconsistency_id!r} " + f"control {control['parent_geography_id']!r} covers leg(s) " + f"{delegated} that a nearer control already reconciled " + "alongside legs it must still reconcile; a control cannot " + "be split across tiers." + ) if positions: populated_controls.append(control) continue - for leg in control["covered_legs"]: + if delegated: + delegated_legs.append( + { + "inconsistency_id": group.inconsistency_id, + "parent_geography_id": str(control["parent_geography_id"]), + "legs": delegated, + "reason": ( + "every lower row on these legs was reconciled by a " + "nearer control grain" + ), + } + ) + if group.lower_grain in control_grains: + # A middle tier need not exist under every control: a country + # row with no region rows on its legs parents the leaf rows + # there directly. Not a licence matter. + if empty: + absent_middle_tier_legs.append( + { + "inconsistency_id": group.inconsistency_id, + "parent_geography_id": str(control["parent_geography_id"]), + "legs": empty, + } + ) + continue + if not empty: + continue + for leg in empty: unlicensed = [ target_id for target_id in lower_target_ids @@ -388,6 +500,7 @@ def _reconcile_cross_grain_surface_with_control_receipts( reconciled.iloc[positions, reconciled.columns.get_loc(columns["value"])] = ( raw_values * factor ) + already.update(positions) new_total = float( reconciled.iloc[positions][columns["value"]] .to_numpy(dtype=np.float64) @@ -435,11 +548,29 @@ def _reconcile_cross_grain_surface_with_control_receipts( "legs": leg_receipts, } ) + for (identity, lower_grain), pending in unparented_rows.items(): + if lower_grain in control_grains: + # A control-tier row with no control above it is the top of its + # own leg, not an orphan. + continue + still = { + leg + for position, leg in pending.items() + if position not in claimed[(identity, lower_grain)] + } + if still: + raise ValueError( + f"cross-grain inconsistency " + f"{first_pair_id[(identity, lower_grain)]!r} has " + f"unparented lower-grain leg(s) {sorted(still)}." + ) return ( reconciled, receipts, empty_legs_licensed, controls_without_lower_rows, + delegated_legs, + absent_middle_tier_legs, ) @@ -452,7 +583,7 @@ def reconcile_cross_grain_surface( ) -> tuple[pd.DataFrame, list[dict[str, Any]]]: """Return a copied surface with every detected lower grain rescaled.""" - reconciled, receipts, _, _ = _reconcile_cross_grain_surface_with_control_receipts( + reconciled, receipts, *_ = _reconcile_cross_grain_surface_with_control_receipts( local_frame, groups, rule, @@ -491,6 +622,8 @@ def apply_cross_grain_reconciliation( group_receipts, empty_legs_licensed, controls_without_lower_rows, + delegated_legs, + absent_middle_tier_legs, ) = _reconcile_cross_grain_surface_with_control_receipts( local_frame, groups, @@ -504,6 +637,8 @@ def apply_cross_grain_reconciliation( "unbound_bridges": unbound_bridges, "empty_legs_licensed": empty_legs_licensed, "controls_without_lower_rows": controls_without_lower_rows, + "delegated_legs": delegated_legs, + "absent_middle_tier_legs": absent_middle_tier_legs, "absence": ( None if groups @@ -565,8 +700,24 @@ def _surface_columns(frame: pd.DataFrame) -> dict[str, str]: return resolved +def _control_grains(rule: CrossGrainRule) -> tuple[str, ...]: + return tuple(rule.control_grains) or (rule.grain_precedence[0],) + + def _validate_rule(rule: CrossGrainRule) -> None: _require_unique_nonblank(rule.grain_precedence, label="grain_precedence") + if rule.control_grains: + _require_unique_nonblank(rule.control_grains, label="control_grains") + unknown = [g for g in rule.control_grains if g not in rule.grain_precedence] + if unknown: + raise ValueError( + f"cross-grain control_grains {unknown} are not in grain_precedence." + ) + if rule.grain_precedence[0] not in rule.control_grains: + raise ValueError( + "cross-grain control_grains must include the top grain " + f"{rule.grain_precedence[0]!r}." + ) _require_unique_nonblank(rule.signature_fields, label="signature_fields") if not rule.grain_precedence: raise ValueError("cross-grain grain_precedence must not be empty.") diff --git a/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json b/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json index 2d10042af8..cb9daa02ec 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uk_data_target_parity.json @@ -164,7 +164,7 @@ "covers": [ "policyengine_uk_data.targets.sources.voa_council_tax" ], - "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE.grain_precedence includes region and parent_geography_legs maps every E12 code to itself; the local crosswalk carries region_code_by_area from the ladder.", + "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE declares control_grains (country, region), so the English region rows and the Scottish CTAXBASE country row share the band signature group and each authority takes its nearest covering control (test_uk_ledger_targets::test_voa_region_controls_and_the_scottish_country_control_share_the_surface); parent_geography_legs maps every E12 code to itself; English legs come from the run ladder or the crosswalk's region_code_by_area.", "reason": "The English VOA stock rows fan out over the nine English regions and sit at the region grain of the cross-grain rule (country > region > constituency > la); each region is its own leg, so the LA solve reconciles to its region's published stock rather than to a single England row (microcosm#905).", "status": "ported_national" }, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py index e252cb11c7..e7be317fef 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/data_target_parity.py @@ -403,7 +403,7 @@ def _fence(origin: str, purpose: str, verdict_basis: str) -> dict[str, str]: "status": "ported_national", "classification": "cross_grain_rule", "reason": "The English VOA stock rows fan out over the nine English regions and sit at the region grain of the cross-grain rule (country > region > constituency > la); each region is its own leg, so the LA solve reconciles to its region's published stock rather than to a single England row (microcosm#905).", - "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE.grain_precedence includes region and parent_geography_legs maps every E12 code to itself; the local crosswalk carries region_code_by_area from the ladder.", + "evidence": "voa.council_tax_stock.band_* references voa.council_tax_stock.band_*@E12000001..E12000009; UK_CROSS_GRAIN_RULE declares control_grains (country, region), so the English region rows and the Scottish CTAXBASE country row share the band signature group and each authority takes its nearest covering control (test_uk_ledger_targets::test_voa_region_controls_and_the_scottish_country_control_share_the_surface); parent_geography_legs maps every E12 code to itself; English legs come from the run ladder or the crosswalk's region_code_by_area.", }, { "concern_id": "local_council_tax_band_d_rate", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py index 4896aa4b9a..321f03b8de 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py @@ -2,12 +2,14 @@ from __future__ import annotations +import functools import json import math from collections.abc import Callable, Iterable, Mapping from dataclasses import dataclass, replace from functools import lru_cache from importlib import resources as importlib_resources +from types import MappingProxyType from typing import Any import numpy as np @@ -82,33 +84,34 @@ class UKLedgerTargetCompilation: "S": "S92000003", "N": "N92000002", } -_UK_CROSSWALK_REGION_BY_AREA: dict[str, str] | None = None -def _uk_crosswalk_region_by_area() -> dict[str, str]: - """Area id -> region-tier code from the committed local-area crosswalk.""" +@functools.lru_cache(maxsize=1) +def _uk_crosswalk_region_by_area() -> Mapping[str, str]: + """Area id -> region-tier code from the committed local-area crosswalk. - global _UK_CROSSWALK_REGION_BY_AREA - if _UK_CROSSWALK_REGION_BY_AREA is None: - mapping: dict[str, str] = {} - levels = load_uk_local_area_crosswalk().get("levels") or {} - for level, payload in levels.items(): - by_area = payload.get("region_code_by_area") if payload else None - if not isinstance(by_area, Mapping) or not by_area: + Cached for the process (the resolver runs per surface row); a test that + monkeypatches the crosswalk loader clears it with ``cache_clear()``. + """ + + mapping: dict[str, str] = {} + levels = load_uk_local_area_crosswalk().get("levels") or {} + for level, payload in levels.items(): + by_area = payload.get("region_code_by_area") if payload else None + if not isinstance(by_area, Mapping) or not by_area: + raise ValueError( + f"UK local area crosswalk level {level!r} carries no " + "region_code_by_area; regenerate it from the ladder " + "(tools/generate_uk_local_area_crosswalk.py)." + ) + for area_id, region in by_area.items(): + previous = mapping.setdefault(str(area_id), str(region)) + if previous != str(region): raise ValueError( - f"UK local area crosswalk level {level!r} carries no " - "region_code_by_area; regenerate it from the ladder " - "(tools/generate_uk_local_area_crosswalk.py)." + f"UK local area crosswalk maps {area_id!r} to both " + f"{previous!r} and {region!r}." ) - for area_id, region in by_area.items(): - previous = mapping.setdefault(str(area_id), str(region)) - if previous != str(region): - raise ValueError( - f"UK local area crosswalk maps {area_id!r} to both " - f"{previous!r} and {region!r}." - ) - _UK_CROSSWALK_REGION_BY_AREA = mapping - return _UK_CROSSWALK_REGION_BY_AREA + return MappingProxyType(mapping) def uk_cross_grain_leg_of_area( @@ -257,6 +260,9 @@ def leg_of_area(area_code: str) -> str: bridges=UK_CROSS_GRAIN_BRIDGES, leg_of_area=_uk_cross_grain_leg_of_area, parent_geography_legs=UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS, + # Country and region rows control the grains below them; a constituency + # never parents an authority (they partition households in parallel). + control_grains=("country", "region"), ) diff --git a/packages/microcosm-build/tests/test_cross_grain.py b/packages/microcosm-build/tests/test_cross_grain.py index e822cb7c52..1010988491 100644 --- a/packages/microcosm-build/tests/test_cross_grain.py +++ b/packages/microcosm-build/tests/test_cross_grain.py @@ -219,6 +219,8 @@ def test_absence_receipt_exists_when_no_higher_target_is_bound(): "unbound_bridges": [], "empty_legs_licensed": [], "controls_without_lower_rows": [], + "delegated_legs": [], + "absent_middle_tier_legs": [], "absence": "No cross-grain inconsistencies are in force on this surface.", } @@ -840,3 +842,205 @@ def _between(lower: float, upper: float) -> dict[str, object]: assert receipt["groups"] == [] assert receipt["absence"] + + +def _tier_leg(area: str) -> str: + # Region areas name their leg with their first two characters (R1a -> R1); + # nation areas name their nation (Sa -> S). + return area[:2] if area.startswith("R") else area[0] + + +def _tiered_rule() -> CrossGrainRule: + return CrossGrainRule( + grain_precedence=("country", "region", "la"), + signature_fields=("concept", "entity", "map_to", "filters"), + bridges=(), + leg_of_area=_tier_leg, + parent_geography_legs={ + "UK": ("R1", "R2", "S"), + "S": ("S",), + "R1": ("R1",), + "R2": ("R2",), + }, + control_grains=("country", "region"), + ) + + +def _tiered_signatures() -> dict[str, dict[str, object]]: + return { + target_id: _signature() + for target_id in ("national", "regional", "scottish", "local") + } + + +def _pairs(receipt: dict) -> dict[str, dict]: + return { + group["inconsistency_id"].rsplit(":", 1)[1]: group + for group in receipt["groups"] + } + + +def test_control_grains_let_region_and_country_controls_share_one_group(): + """A region row parents its own authorities; a country row the rest.""" + + surface = pd.DataFrame( + [ + ("country", "S", "scottish", 40.0), + ("region", "R1", "regional", 100.0), + ("region", "R2", "regional", 50.0), + ("la", "R1a", "local", 30.0), + ("la", "R1b", "local", 30.0), + ("la", "R2a", "local", 20.0), + ("la", "Sa", "local", 30.0), + ], + columns=["grain", "geography_id", "target_id", "value"], + ) + reconciled, receipt = apply_cross_grain_reconciliation( + surface, ("scottish", "regional"), _tiered_signatures(), _tiered_rule() + ) + assert reconciled["value"].tolist() == pytest.approx( + [40.0, 100.0, 50.0, 50.0, 50.0, 50.0, 40.0] + ) + pairs = _pairs(receipt) + assert set(pairs) == {"country_over_region", "region_over_la", "country_over_la"} + # The Scottish row has no region rows on its leg: not a licence matter, + # it parents the Scottish authority directly. + assert pairs["country_over_region"]["legs"] == [] + assert [e["parent_geography_id"] for e in receipt["absent_middle_tier_legs"]] == [ + "S" + ] + assert [leg["parent_geography_id"] for leg in pairs["region_over_la"]["legs"]] == [ + "R1", + "R2", + ] + assert [leg["parent_geography_id"] for leg in pairs["country_over_la"]["legs"]] == [ + "S" + ] + assert receipt["delegated_legs"] == [] + assert receipt["empty_legs_licensed"] == [] + + +def test_nearest_control_claims_first_and_farther_legs_are_delegated(): + """Under a country row, region rows nest to it and authorities follow + their region; the country row's region legs are delegated, never + rescaled twice.""" + + surface = pd.DataFrame( + [ + ("country", "UK", "national", 200.0), + ("region", "R1", "regional", 60.0), + ("region", "R2", "regional", 40.0), + ("la", "R1a", "local", 10.0), + ("la", "R2a", "local", 10.0), + ], + columns=["grain", "geography_id", "target_id", "value"], + ) + reconciled, receipt = apply_cross_grain_reconciliation( + surface, + ("national", "regional"), + _tiered_signatures(), + _tiered_rule(), + licensed_empty_legs={"local": frozenset({"S"})}, + ) + # Region rows rescale jointly to the UK row (100 -> 200); authorities + # follow their reconciled region. + assert reconciled["value"].tolist() == pytest.approx( + [200.0, 120.0, 80.0, 120.0, 80.0] + ) + pairs = _pairs(receipt) + assert [ + leg["parent_geography_id"] for leg in pairs["country_over_region"]["legs"] + ] == ["UK"] + assert [leg["parent_geography_id"] for leg in pairs["region_over_la"]["legs"]] == [ + "R1", + "R2", + ] + assert pairs["country_over_la"]["legs"] == [] + assert [ + (e["parent_geography_id"], e["legs"]) for e in receipt["delegated_legs"] + ] == [("UK", ["R1", "R2"])] + + +def test_a_control_split_between_delegated_and_live_legs_is_refused(): + surface = pd.DataFrame( + [ + ("country", "UK", "national", 200.0), + ("region", "R1", "regional", 60.0), + ("la", "R1a", "local", 10.0), + ("la", "Sa", "local", 10.0), + ], + columns=["grain", "geography_id", "target_id", "value"], + ) + with pytest.raises(ValueError, match="cannot be split across tiers"): + apply_cross_grain_reconciliation( + surface, ("national", "regional"), _tiered_signatures(), _tiered_rule() + ) + + +def test_unbound_middle_tier_rows_are_not_controls(): + surface = pd.DataFrame( + [ + ("country", "UK", "national", 200.0), + ("region", "R1", "regional", 60.0), + ("la", "R1a", "local", 10.0), + ], + columns=["grain", "geography_id", "target_id", "value"], + ) + reconciled, receipt = apply_cross_grain_reconciliation( + surface, + ("national",), + _tiered_signatures(), + _tiered_rule(), + licensed_empty_legs={"local": frozenset({"R2", "S"})}, + ) + # The unbound region row is out of play: the authority reconciles to the + # UK row and the region row is untouched. + assert reconciled["value"].tolist() == pytest.approx([200.0, 60.0, 200.0]) + assert {g["winning_grain"] for g in receipt["groups"]} == {"country"} + + +def test_leaf_rows_without_any_covering_control_still_refuse(): + surface = pd.DataFrame( + [ + ("region", "R1", "regional", 60.0), + ("la", "R1a", "local", 10.0), + ("la", "Sa", "local", 10.0), + ], + columns=["grain", "geography_id", "target_id", "value"], + ) + with pytest.raises(ValueError, match="unparented lower-grain leg"): + apply_cross_grain_reconciliation( + surface, ("regional",), _tiered_signatures(), _tiered_rule() + ) + + +def test_control_grains_declaration_is_validated(): + empty = pd.DataFrame(columns=["grain", "geography_id", "target_id", "value"]) + with pytest.raises(ValueError, match="not in grain_precedence"): + apply_cross_grain_reconciliation( + empty, + (), + {}, + CrossGrainRule( + grain_precedence=("country", "la"), + signature_fields=("concept",), + bridges=(), + leg_of_area=_tier_leg, + parent_geography_legs={}, + control_grains=("country", "region"), + ), + ) + with pytest.raises(ValueError, match="must include the top grain"): + apply_cross_grain_reconciliation( + empty, + (), + {}, + CrossGrainRule( + grain_precedence=("country", "region", "la"), + signature_fields=("concept",), + bridges=(), + leg_of_area=_tier_leg, + parent_geography_legs={}, + control_grains=("region",), + ), + ) diff --git a/packages/microcosm-build/tests/test_uk_ledger_targets.py b/packages/microcosm-build/tests/test_uk_ledger_targets.py index f528d16199..1af608dd60 100644 --- a/packages/microcosm-build/tests/test_uk_ledger_targets.py +++ b/packages/microcosm-build/tests/test_uk_ledger_targets.py @@ -2183,7 +2183,10 @@ def test_uk_local_target_surface_places_nation_rows_at_the_region_grain() -> Non ] -def test_uk_local_target_surface_refuses_a_nation_row_left_at_country_grain() -> None: +def test_uk_local_target_surface_reconciles_mixed_country_and_region_tiers() -> None: + """A nation row left at Chronicle's country grain still parents its own + constituencies: each lower leg takes its nearest covering control.""" + registry = TargetRegistry( [ _region_tier_control_spec( @@ -2197,11 +2200,71 @@ def test_uk_local_target_surface_refuses_a_nation_row_left_at_country_grain() -> ], country="uk", ) + surface, receipt = uk_local_target_surface( + registry, + bound_national_target_ids=("ons.population.age_0_9_by_region",), + period=2025, + ) + age = surface.loc[surface["metric"] == "age/0_10"] + assert age["value"].tolist() == pytest.approx([100.0, 40.0]) + pairs = { + group["inconsistency_id"].rsplit(":", 1)[1] + for group in receipt["groups"] + if group["bridge_id"] == "national_age_0_9_vs_local_age_0_10" + } + assert pairs == { + "country_over_region", + "region_over_constituency", + "country_over_constituency", + } + assert {e["parent_geography_id"] for e in receipt["absent_middle_tier_legs"]} == { + "W92000004" + } + + +def test_voa_region_controls_and_the_scottish_country_control_share_the_surface() -> ( + None +): + """Vahid's #906 repro: the English VOA band rows at region grain and the + Scottish CTAXBASE row at country grain carry one measurement signature; + each authority reconciles to the control that covers its leg.""" + + rows = [ + ("country", "S92000003", "scotgov.council_tax_stock.band_a", 40.0), + ("region", "E12000007", "voa.council_tax_stock.band_a", 100.0), + ("region", "E12000001", "voa.council_tax_stock.band_a", 50.0), + ("la", "E09000001", "voa.council_tax_stock.by_area.band_a", 60.0), + ("la", "E06000001", "voa.council_tax_stock.by_area.band_a", 20.0), + ("la", "S12000033", "voa.council_tax_stock.by_area.band_a", 30.0), + ] + surface = pd.DataFrame( + rows, columns=["grain", "geography_id", "target_id", "value"] + ) + reconciled, receipt = apply_uk_cross_grain_reconciliation( + surface, + ("scotgov.council_tax_stock.band_a", "voa.council_tax_stock.band_a"), + ) + assert reconciled["value"].tolist() == pytest.approx( + [40.0, 100.0, 50.0, 100.0, 50.0, 40.0] + ) + pairs = { + group["inconsistency_id"].rsplit(":", 1)[1]: group + for group in receipt["groups"] + } + assert [leg["parent_geography_id"] for leg in pairs["region_over_la"]["legs"]] == [ + "E12000001", + "E12000007", + ] + assert [leg["parent_geography_id"] for leg in pairs["country_over_la"]["legs"]] == [ + "S92000003" + ] + assert receipt["empty_legs_licensed"] == [] + # Without the Scottish control bound, the Scottish authority has no parent + # and the surface refuses rather than borrowing an English region. with pytest.raises(ValueError, match="unparented lower-grain leg"): - uk_local_target_surface( - registry, - bound_national_target_ids=("ons.population.age_0_9_by_region",), - period=2025, + apply_uk_cross_grain_reconciliation( + surface.loc[surface["target_id"] != "scotgov.council_tax_stock.band_a"], + ("voa.council_tax_stock.band_a",), ) From fbeb40450dd1f1338c22b700554d78df2d52e972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Mon, 14 Sep 2026 18:23:55 +0200 Subject: [PATCH 10/12] Address the rest of Vahid's review of #906 (#905) The calibration-comparison evidence discloses its register vintage (the a256c880 register: 47 current entries plus the three #903 retired, no band-H, hence 374 and 545 targets; 377 and 542 under HEAD) and drops the stale fuel-duty sentence (#904 retired that exclusion; the row sits at -23.9% inside the bound). The runbook names the constants' home in microcosm.calibrate.geography_constants. A geography predicate must project to the reference's own entity, refused otherwise, so a hand-edited register cannot misalign a mask silently. The three 2026-09-14 exclusions are asserted by name, date, tracking and window. ruff format is clean on every touched file. Co-Authored-By: Claude Fable 5.1 --- .../calibration-comparison.json | 9 ++++---- docs/uk-chronicle-feed-repin.md | 2 +- .../microcosm/build/target_materialization.py | 7 ++++++ .../tests/test_country_spec.py | 4 +++- .../tests/test_target_materialization.py | 23 +++++++++++++++++++ .../tests/test_uk_measure_simulation.py | 13 +++++++++++ 6 files changed, 52 insertions(+), 6 deletions(-) diff --git a/docs/evidence/uk-region-tier-905/calibration-comparison.json b/docs/evidence/uk-region-tier-905/calibration-comparison.json index 78b2096f40..6e7a091e99 100644 --- a/docs/evidence/uk-region-tier-905/calibration-comparison.json +++ b/docs/evidence/uk-region-tier-905/calibration-comparison.json @@ -10,7 +10,7 @@ "target_weight_rule": "family_equal", "learning_rate": 0.02 }, - "measure_exclusions": "packaged register (50 entries)", + "measure_exclusions": "packaged register at the branch point a256c880 (50 entries: the 47 on main after #903 retired three ons.household_composition.* entries, plus those three, still present at a256c880) \u2014 the three band-H region-cell exclusions signed on 2026-09-14 did not exist yet, which is why the candidate arm carried 545 targets (595 - 50) and the terminal gate blocked on the band-H cells; under the HEAD register the baseline arm would carry 377 (424 - 47) and the candidate 542 (595 - 53).", "baseline": "PR #904 head a256c880 register (424 references, 374 after exclusions), run from the same code line with the same overrides", "candidate": "this branch (595 references, 545 after exclusions)", "run_date": "2026-09-11" @@ -167,8 +167,9 @@ "reading": [ "Every ONS region cell and 78 of 81 VOA cells fit within 5%; the tier binds as published.", "The three band-H cells at -100% (North East, North West, Yorkshire and the Humber) have no band-H household on the spine (spine-m carried 170 band-H households from 49 raw FRS households, none in those regions; microcosm#762 A14), the class already signed for the local band-H family; they need a reviewed measure exclusion or a spine vintage with broader band-H support (microcosm#796).", - "Common-row fit is unchanged within run noise (332->329 within 5%, 16->15 within 25%); hmrc/self_employment_income_income_band_20_000_to_30_000 sits at the 25% bound (+23.6% -> +25.0%) and obr.fuel_duties_cars moves -14.9% -> -23.9% while staying inside its reviewed target-fit exclusion, which the gate now reports as stale; both belong to the #890/PR-S lane.", - "The baseline run refused to stage for want of MICROCOSM_UK_TERMINAL_GATE_SIGNING_KEY (an unsigned full-scale run under the #904 round-2 runner); its solve and diagnostics completed." + "Common-row fit is unchanged within run noise (332->329 within 5%, 16->15 within 25%); hmrc/self_employment_income_income_band_20_000_to_30_000 sits at the 25% bound (+23.6% -> +25.0%) and obr.fuel_duties_cars moves -14.9% -> -23.9%, inside the 25% bound (#904 retired its reviewed target-fit exclusion; the gate message about a stale exclusion in this run reflects the a256c880 register); both rows belong to the #890/PR-S lane.", + "The baseline run refused to stage for want of MICROCOSM_UK_TERMINAL_GATE_SIGNING_KEY (an unsigned full-scale run under the #904 round-2 runner); its solve and diagnostics completed.", + "Register vintage: see arm.measure_exclusions \u2014 the runs predate the band-H signing and the #903 retirements, so their exclusion counts are not reproducible from HEAD." ], "region_cell_rows": [ { @@ -1306,4 +1307,4 @@ "relative_error": -0.0003666281556874544 } ] -} \ No newline at end of file +} diff --git a/docs/uk-chronicle-feed-repin.md b/docs/uk-chronicle-feed-repin.md index 9b4d2789b5..8814913d99 100644 --- a/docs/uk-chronicle-feed-repin.md +++ b/docs/uk-chronicle-feed-repin.md @@ -42,7 +42,7 @@ outside the intended policy area, and record the value moves in the changelog fragment. Two-level (country + region) contract targets fan out over the region tier -(`UK_REGION_TIER` in `uk_runtime/geography_ladder.py`), one reference per area +(`UK_REGION_TIER` in `microcosm.calibrate.geography_constants`), one reference per area (microcosm#905); their cells resolve Chronicle's region- and country-stamped facts, so a re-pin must carry all twelve areas or the national generator refuses. The cross-grain legs of English constituencies and authorities come diff --git a/packages/microcosm-build/src/microcosm/build/target_materialization.py b/packages/microcosm-build/src/microcosm/build/target_materialization.py index c2b84afed5..9e2a5361f8 100644 --- a/packages/microcosm-build/src/microcosm/build/target_materialization.py +++ b/packages/microcosm-build/src/microcosm/build/target_materialization.py @@ -666,6 +666,13 @@ def _with_geography_predicate( f"{name!r}: a geography predicate cannot scope a provider binding " f"of kind {binding['kind']!r}; providers do not read filters." ) + map_to = predicate.get("map_to") + entity = getattr(spec, "entity", None) + if map_to is not None and entity and str(map_to) != str(entity): + raise ValueError( + f"{name!r}: metadata.geography_predicate projects to {map_to!r} but " + f"the reference measures {entity!r}; the mask would misalign." + ) return { **binding, "filters": [*binding.get("filters", ()), dict(predicate)], diff --git a/packages/microcosm-build/tests/test_country_spec.py b/packages/microcosm-build/tests/test_country_spec.py index cb074ee059..71693418f3 100644 --- a/packages/microcosm-build/tests/test_country_spec.py +++ b/packages/microcosm-build/tests/test_country_spec.py @@ -1095,7 +1095,9 @@ def test_uk_target_references_accept_regenerated_contract_fields(self) -> None: spec = load_country_spec("uk") references = {reference.name: reference for reference in spec.target_references} - assert len(references) == 595 # microcosm#905: 424 - 18 country rows + 189 region-tier cells + assert ( + len(references) == 595 + ) # microcosm#905: 424 - 18 country rows + 189 region-tier cells assert references["obr.esa"].value_operation == "sum" assert references["dwp.uc.households"].value_operation == ( "monthly_window_sum_average" diff --git a/packages/microcosm-build/tests/test_target_materialization.py b/packages/microcosm-build/tests/test_target_materialization.py index cc8e338896..f730d2d101 100644 --- a/packages/microcosm-build/tests/test_target_materialization.py +++ b/packages/microcosm-build/tests/test_target_materialization.py @@ -1177,3 +1177,26 @@ def test_geography_predicate_refuses_provider_bindings(): } with pytest.raises(ValueError, match="cannot scope a provider binding"): materialize_target_bindings(adapter, registry, contract, period=2025) + + +def test_geography_predicate_must_project_to_the_reference_entity(): + adapter = StubAdapter() + adapter.tables["person"]["region"] = np.array(["LONDON", "LONDON", "WALES"]) + registry = _geography_predicate_registry( + json.dumps( + { + "entity": "household", + "variable": "region", + "operator": "==", + "value": "LONDON", + "reduce": "any", + "map_to": "household", + } + ) + ) + # The reference measures persons; a predicate projected to households + # would produce a mask of the wrong length, so it refuses up front. + with pytest.raises(ValueError, match="projects to 'household'"): + materialize_target_bindings( + adapter, registry, _ADULT_INCOME_CONTRACT, period=2025 + ) diff --git a/packages/microcosm-build/tests/test_uk_measure_simulation.py b/packages/microcosm-build/tests/test_uk_measure_simulation.py index e28dcac285..1fd06936ce 100644 --- a/packages/microcosm-build/tests/test_uk_measure_simulation.py +++ b/packages/microcosm-build/tests/test_uk_measure_simulation.py @@ -604,6 +604,19 @@ def test_packaged_exclusions_load(): exclusions = load_uk_calibration_measure_exclusions() names = [entry["name"] for entry in exclusions] assert len(names) == len(set(names)) == 50 + band_h_region_cells = [ + entry + for entry in exclusions + if entry["name"].startswith("voa.council_tax_stock.band_h@E12") + ] + assert [entry["name"] for entry in band_h_region_cells] == [ + "voa.council_tax_stock.band_h@E12000001", + "voa.council_tax_stock.band_h@E12000002", + "voa.council_tax_stock.band_h@E12000003", + ] + assert {entry["approved_on"] for entry in band_h_region_cells} == {"2026-09-14"} + assert {entry["tracking"] for entry in band_h_region_cells} == {"microcosm#796"} + assert {entry["expires_on"] for entry in band_h_region_cells} == {"2026-11-26"} for marker, expected in _PACKAGED_EXCLUSION_CENSUS.items(): matched = [name for name in names if marker in name] From 42254801e9fe4f6eb62948880740c0ef8e3b1e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:58:07 +0200 Subject: [PATCH 11/12] Declare the council-tax stock totals' universe so they leave the partition's group (#905) Vahid's second pass found the same shape one signature group over: the ten household-composition rows (a UK partition at K02000001), the English VOA stock total (now nine region cells) and the Scottish CTAXBASE total all measured uk.household.count with no filter, so exact-signature grouping put two country controls over the Scottish leg once the VOA total left country grain, and without Scotland bound the UK partition would have rescaled England's dwelling stock. The two total rows now state the universe they measure as a measurement filter, dwellings in council-tax bands A to H, the concept the band rows already filter on; bindings, values and references are unchanged. The review surface is a test, and a contract-wide scan finds no other cross-family signature group touching a region-grain target. Co-Authored-By: Claude Fable 5.1 --- .../build/uk/uk_population_targets.json | 36 ++++- .../tests/test_uk_ledger_targets.py | 138 ++++++++++++++++++ 2 files changed, 172 insertions(+), 2 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json index fd990e3e76..6b21581cfb 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json +++ b/packages/microcosm-build/src/microcosm/build/uk/uk_population_targets.json @@ -11028,7 +11028,23 @@ ], "measurement": { "entity": "household", - "concept": "uk.household.count" + "concept": "uk.household.count", + "filters": [ + { + "concept": "uk.housing.council_tax_band", + "operator": "in", + "value": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H" + ] + } + ] }, "bindings": { "policyengine": { @@ -11070,7 +11086,23 @@ ], "measurement": { "entity": "household", - "concept": "uk.household.count" + "concept": "uk.household.count", + "filters": [ + { + "concept": "uk.housing.council_tax_band", + "operator": "in", + "value": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H" + ] + } + ] }, "bindings": { "policyengine": { diff --git a/packages/microcosm-build/tests/test_uk_ledger_targets.py b/packages/microcosm-build/tests/test_uk_ledger_targets.py index 1af608dd60..f2642736e9 100644 --- a/packages/microcosm-build/tests/test_uk_ledger_targets.py +++ b/packages/microcosm-build/tests/test_uk_ledger_targets.py @@ -2328,3 +2328,141 @@ def test_run_ladder_membership_resolves_legs_the_crosswalk_does_not_know() -> No assert receipt["groups"][0]["legs"][0]["parent_geography_id"] == "E12000007" with pytest.raises(ValueError, match="local-area crosswalk"): apply_uk_cross_grain_reconciliation(surface, (national_id,)) + + +_COMPOSITION_IDS = ( + "ons.household_composition.lone_households_under_65", + "ons.household_composition.lone_households_over_65", + "ons.household_composition.unrelated_adult_households", + "ons.household_composition.couple_no_children_households", + "ons.household_composition.couple_under_3_children_households", + "ons.household_composition.couple_3_plus_children_households", + "ons.household_composition.couple_non_dependent_children_only_households", + "ons.household_composition.lone_parent_dependent_children_households", + "ons.household_composition.lone_parent_non_dependent_children_households", + "ons.household_composition.multi_family_households", +) + + +def _stock_total_spec( + area: str, value: float, *, target_id: str, ledger_level: str, region_grain: bool +) -> TargetSpec: + metadata = { + "contract_target_id": target_id, + "ledger_geography_level": ledger_level, + "ledger_geography_id": area, + } + if region_grain: + metadata["cross_grain_grain"] = "region" + name = f"{target_id}@{area}" if region_grain else target_id + return TargetSpec( + name=name, + entity="household", + value=value, + measure=name, + period=2025, + source="synthetic stock total", + family="council_tax_stock", + metadata=metadata, + ) + + +def test_household_composition_partition_and_stock_totals_reconcile_together() -> None: + """Vahid's #906 round-2 surface: the ten composition rows (a UK partition), + the English VOA stock totals at region grain and the Scottish CTAXBASE + total at country grain all count households with no band filter. They + must not fall into one signature group, or two country controls meet on + the Scottish leg and the UK partition would rescale England's stock.""" + + specs = [ + _national_control_spec( + f"composition-{index}", + value=10.0, + target_id=target_id, + geography_level="country", + geography_id="K02000001", + ) + for index, target_id in enumerate(_COMPOSITION_IDS) + ] + specs.extend( + [ + _stock_total_spec( + "E12000007", + 100.0, + target_id="voa.council_tax_stock.total", + ledger_level="region", + region_grain=True, + ), + _stock_total_spec( + "E12000001", + 50.0, + target_id="voa.council_tax_stock.total", + ledger_level="region", + region_grain=True, + ), + _stock_total_spec( + "S92000003", + 40.0, + target_id="scotgov.council_tax_stock.total", + ledger_level="country", + region_grain=False, + ), + _household_spec("E14001073", "constituency", 60.0), + _household_spec("W07000041", "constituency", 30.0), + ] + ) + surface, receipt = uk_local_target_surface( + TargetRegistry(specs, country="uk"), + bound_national_target_ids=( + *_COMPOSITION_IDS, + "voa.council_tax_stock.total", + "scotgov.council_tax_stock.total", + ), + period=2025, + ) + # The composition partition (100 households UK-wide) still parents the + # census cells; the stock totals never enter that group. + households = surface.loc[surface["metric"] == "households", "value"].tolist() + assert households == pytest.approx([100.0 * 60.0 / 90.0, 100.0 * 30.0 / 90.0]) + group_ids = {group["inconsistency_id"] for group in receipt["groups"]} + assert all( + "uk.household.count" in gid or "national_household" in gid for gid in group_ids + ) + stock_groups = [ + group + for group in receipt["groups"] + if any( + "council_tax_stock" in target_id + for leg in group["legs"] + for target_id in leg["higher_target_ids"] + ) + ] + assert stock_groups == [] + + +def test_leg_licences_follow_the_resolver_the_surface_reconciles_with() -> None: + """A run ladder that places a synthetic English authority in London yields + a London licence; the committed-crosswalk resolver refuses that code.""" + + membership = { + "areas_by_geography_level": {"local_authority": ["E06099999", "S12000005"]}, + "signed_deferrals": [ + { + "target_id": "voa.council_tax_stock.by_area.band_a", + "geography_level": "local_authority", + "area_ids": ["E06099999"], + } + ], + } + run_legs = uk_cross_grain_leg_of_area({"E06099999": "E12000007"}) + assert _uk_licensed_empty_legs_from_membership( + membership, leg_of_area=run_legs + ) == {"voa.council_tax_stock.by_area.band_a": frozenset({"E12000007"})} + with pytest.raises(ValueError, match="local-area crosswalk"): + _uk_licensed_empty_legs_from_membership(membership) + # A roster area the run's ladder does not carry can sit on no surface row: + # it is skipped under the run resolver, never a refusal. + partial = uk_cross_grain_leg_of_area({"E06099998": "E12000001"}) + assert ( + _uk_licensed_empty_legs_from_membership(membership, leg_of_area=partial) == {} + ) From b5f1331be05b5e085d20784572f354ec060e26e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Juaristi?= <127882282+juaristi22@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:58:07 +0200 Subject: [PATCH 12/12] Derive leg licences with the resolver the surface reconciles with (#905) Licences were read through the committed-crosswalk resolver while a run reconciled on its own ladder's legs; on a divergent ladder a licence could cover a leg the ladder assigns elsewhere. The licence derivation now takes the resolver apply_uk_cross_grain_reconciliation reconciles with, the run ladder's when the driver supplies one. Under that resolver a roster area the run's ladder does not carry can sit on no surface row, so it is skipped rather than refused; under the crosswalk default an unplaceable roster area stays a register defect. The rule's comment now says what the receipts say: with no control-tier row in a group, the single-winner rule still lets constituencies parent authorities over their legs, as before. Co-Authored-By: Claude Fable 5.1 --- .../build/uk_runtime/ledger_targets.py | 49 +++++++++++++++---- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py index 321f03b8de..fae284e545 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/ledger_targets.py @@ -260,8 +260,10 @@ def leg_of_area(area_code: str) -> str: bridges=UK_CROSS_GRAIN_BRIDGES, leg_of_area=_uk_cross_grain_leg_of_area, parent_geography_legs=UK_CROSS_GRAIN_PARENT_GEOGRAPHY_LEGS, - # Country and region rows control the grains below them; a constituency - # never parents an authority (they partition households in parallel). + # Country and region rows control the grains below them. With no + # control-tier row in a group the operator keeps the standing + # single-winner rule, so a local-only family still reconciles authorities + # to constituencies over their legs, as it did before the region tier. control_grains=("country", "region"), ) @@ -791,8 +793,29 @@ def load_uk_local_target_reference_membership() -> dict[str, Any]: def _uk_licensed_empty_legs_from_membership( membership: Mapping[str, Any], + *, + leg_of_area: Callable[[str], str] | None = None, ) -> dict[str, frozenset[str]]: - """Derive wholly deferred target legs from committed membership rosters.""" + """Derive wholly deferred target legs from committed membership rosters. + + ``leg_of_area`` is the resolver the surface reconciles with, so a licence + is read on the same legs the run assigns; the default is the committed + crosswalk's resolver, the standing rule's own. + """ + + resolve = _uk_cross_grain_leg_of_area if leg_of_area is None else leg_of_area + + def place(area_id: str) -> str | None: + # Under the committed-crosswalk resolver an unplaceable roster area is + # a register defect and refuses. Under a run's own resolver it is an + # area the run's ladder does not carry, so it can sit on no surface + # row and its licence is moot: skip it rather than refuse. + try: + return resolve(area_id) + except ValueError: + if leg_of_area is None: + raise + return None areas_by_level = membership.get("areas_by_geography_level") if not isinstance(areas_by_level, Mapping): @@ -812,7 +835,9 @@ def _uk_licensed_empty_legs_from_membership( "UK local target membership rosters must not contain blank " "area ids." ) - leg = _uk_cross_grain_leg_of_area(area_id) + leg = place(area_id) + if leg is None: + continue roster_by_level_leg.setdefault((str(geography_level), leg), set()).add( area_id ) @@ -840,7 +865,9 @@ def _uk_licensed_empty_legs_from_membership( ) for raw_area_id in raw_area_ids: area_id = str(raw_area_id).strip() - leg = _uk_cross_grain_leg_of_area(area_id) + leg = place(area_id) + if leg is None: + continue roster = roster_by_level_leg.get((geography_level, leg), set()) if area_id not in roster: raise ValueError( @@ -1426,9 +1453,14 @@ def apply_uk_cross_grain_reconciliation( cannot be bypassed. """ + leg_of_area = ( + _uk_cross_grain_leg_of_area + if area_region_codes is None + else uk_cross_grain_leg_of_area(area_region_codes) + ) licences = ( _uk_licensed_empty_legs_from_membership( - load_uk_local_target_reference_membership() + load_uk_local_target_reference_membership(), leg_of_area=leg_of_area ) if licensed_empty_legs is None else licensed_empty_legs @@ -1436,10 +1468,7 @@ def apply_uk_cross_grain_reconciliation( rule = ( UK_CROSS_GRAIN_RULE if area_region_codes is None - else replace( - UK_CROSS_GRAIN_RULE, - leg_of_area=uk_cross_grain_leg_of_area(area_region_codes), - ) + else replace(UK_CROSS_GRAIN_RULE, leg_of_area=leg_of_area) ) return apply_cross_grain_reconciliation( local_frame,