diff --git a/README.md b/README.md index 32912b3a68..d8b49ac01f 100644 --- a/README.md +++ b/README.md @@ -51,23 +51,40 @@ immutable publication before Hugging Face artifact staging, and preserves durable retry jobs and receipt snapshots. See [graph publication](docs/orrery-publication.md) for configuration and retry. -Supported US and UK build commands start one local emitter service with separate -telemetry and graph-publication workers. Microcosm supplies build metadata and -graph files; the required `microcosm-emitter` package owns authentication, -durable queues and delivery. Telemetry and graph publication are internal -libraries in that single package, not separate installations. -This draft migration requires a published emitter release before merge; see the -[migration prerequisites](docs/orrery-publication.md#deferred-migration-prerequisites). -The telemetry worker reports live progress to the hosted collector when the operator's -existing Hugging Face login is accepted; otherwise it retains the events +Supported US and UK build commands start the local emitter as the build's +child process, with its telemetry, graph-publication and Hugging Face +hand-over modules. Microcosm depends only on `microcosm-emitter-interface`, +the typed calls a build makes; the emitter itself is installed on its own, +outside the workspace environment, so an emitter release needs no Microcosm +change: + +```bash +uv tool install microcosm-emitter # once per machine +uv tool upgrade microcosm-emitter # to take a new release +``` + +The build finds the `microcosm-emitter` command through +`MICROCOSM_EMITTER_COMMAND`, then `PATH`. The emitter inherits the build's +environment variables and user, so it uses the build's Hugging Face +credential (`HF_TOKEN`, then `HUGGINGFACE_TOKEN`, then the `hf auth login` +token). Without the command the build continues with no hosted telemetry and +no remote staging. Before it starts the emitter, the build reads its +version from `microcosm-emitter version` and does not start one older than +0.6.0, the first release that takes staging run files; it prints the +installed and required versions and the upgrade command, and continues as +it does without the command. Microcosm supplies build metadata, graph files and staging +run files; the emitter owns authentication, durable queues and delivery. +The telemetry module reports live progress to the hosted collector when the +operator's Hugging Face login is accepted; otherwise it retains the events locally and the build continues. This live event path is independent of the staging run files described below. US fiscal refresh builds also write pre-release staging run files **by -default**. Progress JSON is uploaded to `policyengine/populace-us-staging` -while the build runs (best-effort — a missing token or failed upload never -fails the build), so every candidate shows up on the staging dashboard before -it is published. Disable these files with `--no-staging`, or point them +default**. The build hands its progress JSON to the emitter, which commits it +to `policyengine/populace-us-staging` while the build runs, one commit per +upload interval (best-effort: no emitter, a missing token or a failed commit +never fails the build), so every candidate shows up on the staging dashboard +before it is published. Disable these files with `--no-staging`, or point them elsewhere with `--staging-repo-id` / `POPULACE_STAGING_REPO_ID`. An *empty* `POPULACE_STAGING_REPO_ID` is ignored rather than read as off, and staging with no destination at all is an argparse error. `--no-staging` does not disable diff --git a/changelog.d/1019-acs-local-take-up.fixed.md b/changelog.d/1019-acs-local-take-up.fixed.md new file mode 100644 index 0000000000..150d9b0eb8 --- /dev/null +++ b/changelog.d/1019-acs-local-take-up.fixed.md @@ -0,0 +1 @@ +Seed SNAP and TANF take-up on the ACS rows of the ACS local-area release (microcosm#1019). Every ACS SPM unit previously reached both engine passes with `takes_up_snap_if_eligible` and `takes_up_tanf_if_eligible` missing, and the reviewed-null fill gave them the engine default, so every eligible ACS unit took both programs up. `microcosm.build.us_runtime.acs_local_take_up` now fills only missing ACS-row cells before either fill: `receives_snap` reporters take SNAP up and non-reporters draw to the `snap_take_up` stage's national FNS rate, and TANF uses the take-up contract's seeded rate. Materialize records the seed and an assignment digest, and the consumer export must reproduce it. The reviewed-null fill refuses to default-fill either column, finalize hard-fails on a new per-spine `acs_local_take_up_signal` gate (missing, constant, unanchored or out-of-band take-up), and packaging requires that gate passing and bound to the packaged H5. The other ACS take-up flags stay a reviewed limitation (microcosm#1022). Two informational measures are recorded and not graded: the take-up receipt cross-tabs transferred `receives_tanf` against the independent TANF draw, and the QA probe reports a December-eligible SNAP take-up snapshot, unit- and person-weighted, by spine, state and household type. The snapshot is not the FNS fiscal-year participation rate, which is among eligible people over a federal fiscal year. diff --git a/changelog.d/1418-spi-donor-savings-rebase.changed.md b/changelog.d/1418-spi-donor-savings-rebase.changed.md new file mode 100644 index 0000000000..1ee901ab50 --- /dev/null +++ b/changelog.d/1418-spi-donor-savings-rebase.changed.md @@ -0,0 +1 @@ +The SPI income stage now rebases the 2022-23 tape's interest and other income to HMRC's published 2023-24 Table 3.7 amounts band by band (the published rows are vendored as `uk/hmrc_spi_table_3_7_savings_rows.json`), then carries both to the frame's year on the OBR's savings income growth (October 2026 EFO, Table 4.5), the path the Table 3.7 band targets take (#1418 savings follow-up, #1428). Before, each column moved by its engine index from 2022 to 2024: other income by GDP per head (x1.09) where SPI's own other income grew x1.65 in the single year to 2023-24, and interest by ONS household interest (x2.27) where SPI's grew x2.69 in that year. The frame then carried about 70 percent of the Table 3.7 savings rows at design weights, and the solve met them by stretching the weights of the few households that carry them. Each band's factor is the published amount over the FACT-weighted amount of the tape's taxpayers in the band, as Table 3.7 counts taxpayers only. The tape is banded once on its income moved to 2023-24, each income leaf at its own factor and each rebased column at its factor over all bands, so the band-edge migration its consumers re-band on uprated income is counted once; the income is the published total plus the leaves' growth, net of employment expenses and without the gift leaves, which SPI's total income doesn't hold, and the factor over all bands counts the same taxpayers as the band factors; a record whose band's factor differs from that of all bands can still sit across an edge on its rebased income. A taxpayer is a record the tape flags (TAXPAYER 1) or one whose income crosses the Personal Allowance by 2023-24, so a saver who becomes a taxpayer counts once; a flagged taxpayer below the first band sits in it (note 8), and any other record takes the factor of all bands. A band too thin to gross (under a tenth of its published amount) takes the factor of all bands, a column whose tape does not gross to the published amounts is left as it is and grows on its engine index from 2022-23, and a tape whose TAXPAYER codes are not 1 or 2 is refused. On the tape, the £1m-and-over band's other income outweighs its interest, as in the published table, so the rebase also undoes the split the two indices had flipped. diff --git a/changelog.d/1428-dwp-jsa-income-based.added.md b/changelog.d/1428-dwp-jsa-income-based.added.md new file mode 100644 index 0000000000..c00627bb8e --- /dev/null +++ b/changelog.d/1428-dwp-jsa-income-based.added.md @@ -0,0 +1 @@ +The national calibration binds DWP's income-based Jobseeker's Allowance spending, `dwp.jsa.amount_income_based` (benefit expenditure and caseload tables, Spring Forecast 2026), at the calendar-2025 window of the fiscal years, as the pension-age Housing Benefit row is (#1428; María's ruling of 2026-10-31). Income-based JSA closes with the move to Universal Credit: £91.0m in FY2024-25 and under £1m from FY2025-26. Without the split, the calibration meets OBR's total JSA by scaling income-based reporters together with contributory claimants, far past DWP's income-based spending. diff --git a/changelog.d/1428-frs-other-income-definitions.changed.md b/changelog.d/1428-frs-other-income-definitions.changed.md new file mode 100644 index 0000000000..d9bfe8b734 --- /dev/null +++ b/changelog.d/1428-frs-other-income-definitions.changed.md @@ -0,0 +1 @@ +FRS rows now book NS&I income on SPI's definitions (#1428). NS&I Direct Saver and the other NS&I and bank products go to `savings_interest_income`, because SPI has counted all interest paid gross or net as bank interest since 2016-17 (Table 3.7 note 4); gilts stay in `other_investment_income`. Income from an annuity not bought with pension funds or from a trust or covenant (FRS PENTYPE 4 and 5) stays in `private_pension_income`, where policyengine-uk's means tests (Pension Credit, Universal Credit, Housing Benefit, Council Tax Reduction, Income Support), household income and tax read it. Its part is stored in a new calibration-only descriptor, `annuity_and_trust_income`, and SPI Table 3.7's other-income rows read `other_investment_income_spi_concept`: the engine's other income plus that share of the engine's private pension, as the table counts both payments as other income (note 6). A row the SPI stage draws holds the tape's pension, which excludes them, so its descriptor is zero. Its other income is the tape's OTHERINV, Table 3.7's other income, which holds those payments, and policyengine-uk taxes it as savings income: on drawn rows they still take the Personal Savings Allowance, the starting rate and UK rates in Scotland. That limit predates this change; the tape doesn't split OTHERINV. The FRS spine now refuses a pension tab without PENTYPE. diff --git a/changelog.d/1428-isa-fit-weight-records.fixed.md b/changelog.d/1428-isa-fit-weight-records.fixed.md new file mode 100644 index 0000000000..967a5f7d98 --- /dev/null +++ b/changelog.d/1428-isa-fit-weight-records.fixed.md @@ -0,0 +1 @@ +The ISA subscriptions stage no longer declares an empty list of fit-weight records (#1428). It fits no model, but the release-cut weights audit read its empty list as a fitting stage that recorded nothing, so every national certified after #1421 failed `uk_weights_audit`. diff --git a/changelog.d/1428-spi-band-donor-total-income.fixed.md b/changelog.d/1428-spi-band-donor-total-income.fixed.md new file mode 100644 index 0000000000..58f1226d5b --- /dev/null +++ b/changelog.d/1428-spi-band-donor-total-income.fixed.md @@ -0,0 +1 @@ +The SPI band donors place each tape record by the total income it realises on the frame as SPI's total income holds it: its income leaves at their factors net of employment expenses, without the gift leaves, which are reliefs, plus the rest of the published total, no longer floored at zero (#1428; Vahid's review). Before, a record's gifts and employment expenses added to its income, so a donor with large gifts of shares, or with expenses, sat in too high a band. With every factor at one the realised total is the published one. The savings rebase bands the tape the same way. diff --git a/changelog.d/1428-spi-employment-by-self-employment-band.added.md b/changelog.d/1428-spi-employment-by-self-employment-band.added.md new file mode 100644 index 0000000000..980f00f979 --- /dev/null +++ b/changelog.d/1428-spi-employment-by-self-employment-band.added.md @@ -0,0 +1 @@ +The national calibration binds SPI 2023-24 Table 3.10's individuals with employment income by self-employment band, `hmrc.spi.employment_income.count_by_self_employment_income_band`, over the eight bands from £1 to £10,000 that the self-employment counts and amounts already bind (#1418; María's choice of 2026-10-30). With the self-employment counts alone, the solve could meet each band with traders who have no pay, while in Table 3.10 more than half of the traders below £3,000 also have employment income; an employee's side profit is taxed at their marginal rate, so the mix of small traders decides what the Budget's trading allowance measures cost. Each person with pay or company car benefits over the year (`employment_income_with_benefits_in_kind_annual`, the term every HMRC employment income row reads since #1430) counts in their own self-employment band, taxpayer or not. Table 3.10's column is wider, income assessed under ITEPA 2003 plus other miscellaneous income, so like Table 3.6's employment rows the binding leaves out miscellaneous income and the contributory benefits; benefits in kind count on SPI rows, whose pay is the tape's PAY + EPB + TAXTERM, and the company car and car fuel benefits on every row. Counts grow to 2025 with HMRC's projected growth of all taxpayers (Income Tax liabilities statistics Table 2.5), as the self-employment counts do, and the zero band and the bands from £10,000 are signed out row by row. diff --git a/changelog.d/1428-spi-gift-anchor.changed.md b/changelog.d/1428-spi-gift-anchor.changed.md new file mode 100644 index 0000000000..7ef70ce5a8 --- /dev/null +++ b/changelog.d/1428-spi-gift-anchor.changed.md @@ -0,0 +1 @@ +The SPI income stage anchors the drawn copies' Gift Aid and charitable investment gifts to the SPI tape's own weighted totals (#1428; María's ruling of 2026-10-31). Both are sparse leaves that the stage-1 chain draws after, and conditioned on, the income leaves, so a change to the savings draws reshuffles which few donors' gifts the copies draw. Each column's total over the drawn copies, at the stage's household weights, is scaled to the tape's FACT-weighted total. A column that the tape or the copies carry none of is left as drawn. The scaling fixes the totals, not how concentrated each column is. The stage evidence records each column's factor, never a total or a count. diff --git a/changelog.d/1428-spi-other-income-analogue.changed.md b/changelog.d/1428-spi-other-income-analogue.changed.md new file mode 100644 index 0000000000..c39db42253 --- /dev/null +++ b/changelog.d/1428-spi-other-income-analogue.changed.md @@ -0,0 +1 @@ +The SPI stage-1 transport now locates each copy's other-income draw at its FRS twin's own other income (gilt interest), as it does for the other investment leaves, instead of an identity uniform that ignored the twin's holdings (#1428). diff --git a/changelog.d/1428-trading-allowance-receipts.added.md b/changelog.d/1428-trading-allowance-receipts.added.md new file mode 100644 index 0000000000..2d4174f8fe --- /dev/null +++ b/changelog.d/1428-trading-allowance-receipts.added.md @@ -0,0 +1 @@ +A new last spine stage, `trading_allowance_receipts`, stores the self-employed's gross receipts (`self_employment_gross_receipts`), so policyengine-uk applies the trading allowance against receipts as the law does (#1428; María's choice of 2026-10-31). Neither the FRS nor the SPI tape records turnover. Without receipts the engine relieved profits up to the allowance in full and nothing above it, so a rise in the allowance missed its main base: traders who already claim the £1,000 allowance against larger receipts. Under current law a claimant's receipts are their profit plus £1,000 exactly. Each trader with a positive profit is flagged as a claimant with probability 0.72 for profits up to £4,500, 0.14 from £4,500 to £9,000 and none above, drawn on their own `person_id`. A claimant's receipts are their profit plus £1,000; any other trader's are their profit plus £3,000, expenses at the raised allowance, since the costing books traders who switch to the allowance as behaviour. The rates are calibrated to HMRC's policy paper (about 400,000 taxpayers with a lower bill, by about £380 on average), measured on policyengine-uk for the national from 9f70c71e7, until HMRC publishes claimant counts; they drift with each national, so #1439 re-measures them after each build. Every trader with a positive profit is treated as filing, as the Table 3.10 counts the calibration binds are of filers, so a profit of £1,000 or less is now taxed where the engine used to relieve it in full. Two limits remain until policyengine-uk#2765 lets the stage store the claim status itself (#1439). A claimant's £1,000 grows with the mixed income index while the allowance is nominal, so the raise relieves £1,932 more in 2027-28, falling to £1,758 by 2031-32. The other traders' stored £3,000 grows the same way, so allowances above £3,000 are mis-scored. `self_employment_gross_receipts` leaves the register of engine inputs left at their default and joins the export surface's allowed columns. The stage spec and schema, the graph and kernel wiring, the spine build, the coverage manifest, the H2 fixture and the data contract's gate digests follow. diff --git a/changelog.d/1428-uc-take-up-passes-unmet-gaps.changed.md b/changelog.d/1428-uc-take-up-passes-unmet-gaps.changed.md new file mode 100644 index 0000000000..f057971ad9 --- /dev/null +++ b/changelog.d/1428-uc-take-up-passes-unmet-gaps.changed.md @@ -0,0 +1 @@ +The Universal Credit take-up stage now passes the gap of a pool that cannot meet DWP's count to its neighbouring pools, so each family type's caseload lands on DWP's wherever its entitled units allow (#1428; María's rulings of 2026-10-31 and 2026-11-01). The stage pools adjacent award bands within a family type until they rest on enough sources. A pool can't meet DWP's count when its reporters' and other undrawn units' expected claims already exceed it, or when the count exceeds every entitled unit. Such a pool used to keep its clipped rate, which left the family type's caseload off DWP's by the gap, and which bands fell short moved with small upstream changes. Now such a pool is held at its clip and its gap passes on. A shortfall and an excess elsewhere in the family type offset first. What remains goes to the other pools, nearest first, the one with more room first at equal distance and the lower band on a tie, each taking what its room allows. Every band keeps its own rate, so no band's drawn units claim against its own count to meet another's. The stage spec, the coverage manifest, the H2 fixture and the data contract's gate digests follow. diff --git a/changelog.d/823-national-line-default-load.changed.md b/changelog.d/823-national-line-default-load.changed.md new file mode 100644 index 0000000000..43b06fe7d0 --- /dev/null +++ b/changelog.d/823-national-line-default-load.changed.md @@ -0,0 +1 @@ +The UK 2024-25 national line is the default UK load: `microcosm.data.load("uk")` and `load("uk", 2025)` follow `latest-national.json`, which has named the certified cut microcosm-uk-2024-25-national-20261025T091414Z-a6299504 (built on policyengine-uk 2.151.0) since 26 October 2026, instead of the June 2023 `populace_uk_2023` artifact, which stays at `load("uk", 2023)`. The line's own `national` variant key retires (microcosm#823, Max's ruling). diff --git a/changelog.d/823-national-variant-until-promoted.changed.md b/changelog.d/823-national-variant-until-promoted.changed.md deleted file mode 100644 index c492e22e40..0000000000 --- a/changelog.d/823-national-variant-until-promoted.changed.md +++ /dev/null @@ -1 +0,0 @@ -The UK 2024-25 national line is registered as variant `national` (`microcosm.data.load("uk", 2025, variant="national")`), not as the 2025 default: `resolve("uk")` stays on the June 2023 line until the line's first cut is promoted and a follow-up flips the entry to the default variant, so a default load never chases a pointer that does not exist yet (review of #966; Max's #823 ruling keys the line as a variant). diff --git a/changelog.d/823-uk-2025-registry.changed.md b/changelog.d/823-uk-2025-registry.changed.md index 2c9cc54ef5..99c4be3a94 100644 --- a/changelog.d/823-uk-2025-registry.changed.md +++ b/changelog.d/823-uk-2025-registry.changed.md @@ -1 +1 @@ -Registered the UK 2024-25 national line in the data registry as variant `national` on `microcosm_uk_2024_25.h5`, followed through `latest-national.json`, and taught the certified loader to follow per-line pointers at immutable revisions; non-default local-area manifests load only through their line pointers. `available()` now lists default-variant `(country, year)` pairs only (`available_variants()` lists every registered variant, the dense line included). The UK default stays on the June 2023 line until the national line's first promotion and the follow-up flip of its entry to the default variant. +Registered the UK 2024-25 national line in the data registry as variant `national` on `microcosm_uk_2024_25.h5`, followed through `latest-national.json`, and taught the certified loader to follow per-line pointers at immutable revisions; non-default local-area manifests load only through their line pointers. `available()` now lists default-variant `(country, year)` pairs only (`available_variants()` lists every registered variant, the dense line included). diff --git a/changelog.d/be-quantile-surfaces.added.md b/changelog.d/be-quantile-surfaces.added.md new file mode 100644 index 0000000000..15985c2c85 --- /dev/null +++ b/changelog.d/be-quantile-surfaces.added.md @@ -0,0 +1 @@ +Add Belgium's wage and legal-pension quantile surfaces (B4a), still inactive. `tools/generate_be_target_references.py` now writes 31 more pre-calibration references. Five sum RSZ/ONSS T17's employed workers at the end of 2026-Q1 in each known-pay daily-wage class over its 24 age and sex cells. Twenty-six read SFPD's January 2025 legal-pension amount bands, parked (`requires_pension_route_d1902`) until shared rank-only support lands. A new resource, `quantile_surfaces.json`, holds each surface's band document, the bands parameter `transport.quantile_map@1` takes, beside its unit, period, cohort and coverage notes. The wage edges are euros a day, so nothing may map the donor's annual wages onto them until d1902 picks a conversion. The pension edges are monthly and not annualized. `reference_inventory.json` records the counts behind both surfaces: known plus unknown pay equals T17's quarter total, T7 agrees class by class, and the 26 bands sum to SFPD's published total. The package tests now accept a summed row whose rosters span several record sets, check that its declared member count and its listed reads match the roster product, and expand every roster when they look for a holdout that reads the same cell. Every method choice remains proposed pending d1902, and Belgium still refuses to activate. diff --git a/changelog.d/be-reference-documents.added.md b/changelog.d/be-reference-documents.added.md new file mode 100644 index 0000000000..9fe9c01160 --- /dev/null +++ b/changelog.d/be-reference-documents.added.md @@ -0,0 +1 @@ +Add Belgium's calibration, pre-calibration and holdout reference documents, generated by `tools/generate_be_target_references.py` from a pinned Chronicle `be` feed (`chronicle_feed.json`). References carry selectors only. Demography targets Statbel's 1 January 2026 population by region, sex and age. Statbel A.1's eight broad stand-in income bands (the d1952 measure), B.4's joint and individual declarations, ONSS contributions and FPB benefit and mixed-income aggregates roll 2023 to 2025 facts to 2026 by declared FPB June 2026 ratio pairs. Commune population is the pre-calibration geography support. Eurostat D51A_C1, NBB and Eurostat household accounts, and FPB's gross wages are holdouts. B.1 assessed tax stays inactive because its tax-definition, income-ranking and policy-year checks fail. Rows without a producer or ruling stay parked with a named reason. `reference_inventory.json` records the stand-in gaps, ageing ratios, B.1 checks and every exclusion, and `reference_aging.json` holds G8-r2 diagnostic factors from RSZ wage totals. The catalog declares two euro money columns. Belgium stays inactive, and every method-card choice remains proposed pending d1902. diff --git a/changelog.d/h2a-emitter-interface.changed.md b/changelog.d/h2a-emitter-interface.changed.md new file mode 100644 index 0000000000..356d994168 --- /dev/null +++ b/changelog.d/h2a-emitter-interface.changed.md @@ -0,0 +1 @@ +Builds start the separately installed `microcosm-emitter` command through `microcosm-emitter-interface` (`>=0.7.0,<1`), which replaces the exact `microcosm-emitter==0.2.1` dependency, so an emitter release needs no Microcosm change: install the emitter once per machine with `uv tool install microcosm-emitter`, and the Modal image installs the newest release when it is built. The emitter runs as the build's child process and inherits its environment, so it uses the build's Hugging Face credential. Telemetry events, Orrery graph files and now the version 1 and version 2 staging run files go through it: the writers hand their files over instead of uploading each with `HfApi`, the emitter commits a repository's pending files in one commit per upload interval and merges the version 1 runs index, read-back is the emitter's comparison of the Hub's copy with the bytes it committed, and the delivery counts are the emitter's as of each document's hand-over. Without the command a build continues with no hosted telemetry and no remote staging, and it does the same with an emitter older than 0.6.0, the first release with the Hugging Face module: it reads the version from `microcosm-emitter version` before starting the emitter, does not start an older one (which would record the run's start and never its end), and prints the installed and required versions with the upgrade command. The Hugging Face module keeps its hand-overs in `events.handovers.sqlite3` beside the existing spool database, which stays at the revision 0.2.1 used. Staged dataset bundles and releases still upload directly. `uv.lock` drops `microcosm-emitter`, `alembic`, `mako` and `sqlalchemy`, and `APPROVED_UV_LOCK_SHA256` is re-pinned. diff --git a/changelog.d/rent-head-alignment.fixed.md b/changelog.d/rent-head-alignment.fixed.md new file mode 100644 index 0000000000..71deb73698 --- /dev/null +++ b/changelog.d/rent-head-alignment.fixed.md @@ -0,0 +1 @@ +The US ACS rent imputation now places each draw on the head of the household it was drawn for. It used to write household-order draws in person order, which left about 47% of base households with the wrong rent. diff --git a/conftest.py b/conftest.py index f434d79435..9e3708cf47 100644 --- a/conftest.py +++ b/conftest.py @@ -73,7 +73,7 @@ def pytest_collection_modifyitems(items) -> None: def fake_telemetry_emitters(monkeypatch, tmp_path): """Default every workspace test to in-memory telemetry, never production.""" from huggingface_hub import constants as hf_constants - from microcosm_emitter.host import launcher + from microcosm_emitter_interface import client as emitter_interface_client from microcosm.build import telemetry_emitter from microcosm.build.uk_runtime import orrery_publication @@ -116,9 +116,10 @@ def start(_cls, **kwargs): monkeypatch.setattr(orrery_publication, "publish_graph", fake_publish_graph) def unexpected_start(*args, **options): - pytest.fail("A build test tried to start a real emitter service") + pytest.fail("A build test tried to start a real emitter") - monkeypatch.setattr(launcher, "start_services", unexpected_start) + # Every interface client starts the installed command through this name. + monkeypatch.setattr(emitter_interface_client, "start_emitter", unexpected_start) # Reset any cached handle left by a previously loaded build entrypoint. for module in tuple(sys.modules.values()): if isinstance( diff --git a/docs/agent-guide.md b/docs/agent-guide.md index 0ebed720a8..49121f3a5f 100644 --- a/docs/agent-guide.md +++ b/docs/agent-guide.md @@ -15,9 +15,10 @@ the PEP 420 namespace `microcosm.`: `frame`, `fit`, `calibrate`, `build`, ## Commands UK build completion exports and stages Orrery graph evidence. Publication uses -an independent worker inside the external `microcosm-emitter` service and a durable queue; -see [configuration and retry](orrery-publication.md). No new producer secret or -environment variable is required. Keep graph export/publication tests independent +an independent module of the separately installed `microcosm-emitter`, which the +build starts through `microcosm-emitter-interface`, and a durable queue; see +[configuration and retry](orrery-publication.md). Staging run files go through +the same emitter. No new producer secret is required. Keep graph export/publication tests independent of the hosted runs app and collector; use synthetic files and fake HTTP. ```bash @@ -98,16 +99,18 @@ the one in `test_graph_reconstruction.py` uses it for the reconstruction marker of a declaration-only document. These CI tests perform no browser rendering. -Workspace tests use an in-memory telemetry emitter by default. The shared -fixture isolates Hugging Face credentials and cache paths. Adapter tests replace -emitter startup, inventory and publication APIs with fakes. Emitter process, persistence -and HTTP-delivery tests belong in microcosm-emitter; do not copy them -into Microcosm. Build tests inspect `fake_telemetry_emitters` without creating -sockets or service processes. +Workspace tests use an in-memory emitter client by default +(`test_support/microcosm_build/emitter.py`), and the shared fixture refuses to +start the installed command. It also isolates Hugging Face credentials and cache +paths. Build tests inspect `fake_telemetry_emitters`: their events follow the +emitter's documented request-to-event rules, and the run files they were handed +are in `client.hub_files`. Emitter process, persistence and HTTP-delivery tests +belong in microcosm-emitter; do not copy them into Microcosm. The UK full-build caller sets `close_service_on_finish=False`: reporting an outcome -leaves the graph worker available, and that caller's existing `finally` cleanup -closes the combined service. Other callers close automatically when they finish. +leaves the emitter running for graph and staging hand-overs, and that caller's +existing `finally` cleanup closes it. Other callers close automatically when they +finish, so they hand over their staging run's final state first. Keep validation-refused outcomes and structured failure codes intact when changing the adapter. diff --git a/docs/evidence/spec-engine/us-f0-coverage.json b/docs/evidence/spec-engine/us-f0-coverage.json index 9071607114..1d63686efd 100644 --- a/docs/evidence/spec-engine/us-f0-coverage.json +++ b/docs/evidence/spec-engine/us-f0-coverage.json @@ -1656,13 +1656,13 @@ "compiler_ir.node_slices" ], "expected": { - "map_sha256": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "protocol_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f" + "map_sha256": "07fe9086b57a15ab1c2551fce5c30aebfa55175d76a308f7dbb268ac49da747a", + "protocol_sha256": "4ff992324004d4c09d4165bc8d24ccff15b9d84858836851b12d532c870920f4" }, "failures": [], "observed": { - "map_sha256": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "protocol_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f" + "map_sha256": "07fe9086b57a15ab1c2551fce5c30aebfa55175d76a308f7dbb268ac49da747a", + "protocol_sha256": "4ff992324004d4c09d4165bc8d24ccff15b9d84858836851b12d532c870920f4" }, "status": "covered" }, @@ -1677,7 +1677,7 @@ "compiler_ir.seed_stream_map" ], "expected": { - "implementation_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "implementation_sha256": "4ff992324004d4c09d4165bc8d24ccff15b9d84858836851b12d532c870920f4", "protocol": "legacy-v1", "streams": [ "build_model", @@ -1698,7 +1698,7 @@ }, "failures": [], "observed": { - "implementation_sha256": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "implementation_sha256": "4ff992324004d4c09d4165bc8d24ccff15b9d84858836851b12d532c870920f4", "protocol": "legacy-v1", "streams": [ "build_model", @@ -2599,7 +2599,7 @@ "country": "us", "schema_id": "country_spec", "schema_version": 1, - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2" + "spec_sha256": "153a7b6ad8f13b5de1fd32e3e4e2805015e4c90823f313cec51cb5bd27c990b0" } }, "report_schema_version": 3, @@ -2609,7 +2609,7 @@ "country": "us", "schema_id": "country_spec", "schema_version": 1, - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2" + "spec_sha256": "153a7b6ad8f13b5de1fd32e3e4e2805015e4c90823f313cec51cb5bd27c990b0" }, "status": "pass" } diff --git a/docs/orrery-publication.md b/docs/orrery-publication.md index 47db198b1c..b06b154e41 100644 --- a/docs/orrery-publication.md +++ b/docs/orrery-publication.md @@ -15,11 +15,15 @@ the emitter's file roles and the runs service's contract do not admit it yet. Its content is already inside `graph.orrery.json`, so registering it discloses nothing new. -Microcosm's metadata adapter starts one local emitter service with two independent -workers: live telemetry and completed graph publication. The `microcosm-emitter` package -owns sockets, authentication, persistence, retries and resource sampling. -Microcosm retains graph generation, public-file selection and HF staging. -Slow uploads cannot delay socket acknowledgement or telemetry delivery. +Microcosm's build adapter (`microcosm.build.telemetry_emitter`) starts the +separately installed `microcosm-emitter` command as the build's child process +through `microcosm-emitter-interface`, with independent telemetry, graph +publication and Hugging Face hand-over modules. The emitter owns sockets, +authentication, persistence, retries and resource sampling. Microcosm retains +graph generation, public-file selection and the staged dataset upload. +Slow uploads cannot delay socket acknowledgement or telemetry delivery. A +command that started no emitter of its own starts a short-lived one with only +the graph module to measure and queue the files. UK full-build commands explicitly defer process shutdown when recording a completed, validation-refused or failed telemetry outcome. Their final cleanup closes the combined @@ -43,18 +47,20 @@ aggregate summaries can be published publicly. | Setting | Source and consumer | Provisioning | | --- | --- | --- | -| `HF_TOKEN` / `HUGGINGFACE_TOKEN` | Existing operator credential, exchanged by the service for a short-lived collector session | Existing environment or Hugging Face login; never committed | -| Collector origin | Tracked `PRODUCTION_COLLECTOR_URL` in the emitter's internal core library | No producer variable or destination override | +| `HF_TOKEN` / `HUGGINGFACE_TOKEN` | Existing operator credential, read by the emitter from the environment it inherits from the build and exchanged for a short-lived collector session | Existing environment or Hugging Face login; never committed | +| `MICROCOSM_EMITTER_COMMAND` | Optional path of the `microcosm-emitter` command, read by the interface in the build; without it the interface searches `PATH` | Operator's shell; the Modal image sets it | +| Collector origin | Built into the installed emitter; the build sends no address unless a caller passes a loopback development address in the module settings | No producer variable or destination override | | Runs origin | Tracked `DEFAULT_GRAPH_PUBLICATION_ORIGIN` | No new producer variable | -| `XDG_CACHE_HOME` | Optional existing cache-location setting | Defaults to the user's cache directory | +| `XDG_CACHE_HOME` | Optional existing cache-location setting, read by the interface in the build; the build passes the spool path (`microcosm/telemetry/events.sqlite3`) and the hand-over database beside it (`events.handovers.sqlite3`) to the emitter on its standard input | Defaults to the user's cache directory | The separately deployed runs application retains its Vercel Blob configuration. Authenticated production publication also requires PolicyEngine/calibration-diagnostics#208 deployed, and the runs application's publication API. Producer tests do not contact either hosted service. -No new Microcosm runtime variable or secret is required. Tests isolate ambient -credentials and caches and use fake HTTP or explicit loopback services. +No new secret is required. Tests isolate ambient credentials and caches, +replace the interface's emitter client with an in-memory one, and refuse to +start the installed command. A build exports locally without remote submission unless `--publish-orrery` enables it (María's ruling of 2026-10-26), whatever its staging: @@ -95,26 +101,39 @@ microcosm-emitter-publish-graph --publication-id PUBLICATION_ID \ The preserved directory contains `orrery.upload.json` and the exact files. Retries update a separate `publication.status.json`, never the original -HF receipt snapshot. Pending jobs also resume when a subsequent local service -starts. The retry command comes from the emitter package; Microcosm does not +HF receipt snapshot. Pending jobs also resume when a subsequent emitter +starts. The retry command is installed with the emitter; Microcosm does not retain a second delivery implementation or a compatibility wrapper. ## Emitter dependency -`packages/microcosm-build` depends on one exact `microcosm-emitter` release -from PyPI, which `uv.lock` records with its wheel and source-archive hashes. -Microcosm has no Git source override for the emitter. Every merge to the -emitter's `main` publishes a new version automatically. To adopt one, change the -exact requirement, regenerate `uv.lock`, update `APPROVED_UV_LOCK_SHA256` in -`microcosm.build.us_runtime.worker_identity` to the new lockfile digest and -rerun the tests and wheel checks. +`packages/microcosm-build` depends on `microcosm-emitter-interface` +(`>=0.7.0,<1`), the dependency-free package of typed calls, which `uv.lock` +records with its hashes. The emitter itself, `microcosm-emitter`, is not a +workspace dependency: each machine installs it on its own with +`uv tool install microcosm-emitter`, and the Modal image installs the newest +release when it is built for a plan commit. A running build keeps the +emitter it started; the next build uses whichever release is installed then. +So an emitter release needs no Microcosm change. The socket protocol carries +its own version (`PROTOCOL_VERSION`), every emitter release accepts the +versions interfaces still send, and an emitter that lacks a module the build +asks for starts without it. + +To adopt a new interface release, regenerate `uv.lock`, update +`APPROVED_UV_LOCK_SHA256` in `microcosm.build.us_runtime.worker_identity` to +the new lockfile digest and rerun the tests and wheel checks. ## Migrating an existing workstation -The emitter rejects unversioned databases without modification. Before switching -an existing workstation, upgrade any old unversioned queue using the preceding -Microcosm implementation. Versioned telemetry and graph jobs keep their existing -IDs, eligibility, path and Alembic revision; do not delete a queue to migrate. -No new runtime variable, credential, hosted service or infrastructure is required -by this migration. The previously required hosted authorization/API deployments -remain prerequisites for remote publication. +Install the emitter once with `uv tool install microcosm-emitter` (0.6.0 or +later; a build does not start an older emitter, says how to upgrade it and +continues without it). It keeps using the existing spool database, +`$XDG_CACHE_HOME/microcosm/telemetry/events.sqlite3`, at the same Alembic +revision the pinned 0.2.1 release used, so queued telemetry and graph jobs +keep their IDs and eligibility; do not delete a queue to migrate. The +Hugging Face module keeps its hand-overs in its own SQLite file beside it, +`events.handovers.sqlite3`, so emitters of every release can share the spool +database on one machine. The emitter rejects unversioned databases without +modification. The emitter's README describes the repair for a machine that +ran an earlier, unreleased build of the hand-over queue. No new credential, +hosted service or infrastructure is required by this migration. diff --git a/docs/uk-income-anchors-280.md b/docs/uk-income-anchors-280.md index 323ad55da2..658acb8b4d 100644 --- a/docs/uk-income-anchors-280.md +++ b/docs/uk-income-anchors-280.md @@ -80,8 +80,10 @@ membership carries the uprated value with its receipt. others take `policyengine_uk_parameter:`, the ratio of the pinned engine's parameter between 1 January of the fact's opening year and 1 January of the calibration year, the instants the SPI donor rebasing already - uses: dividends `obr.per_capita.gdp`. Savings interest takes two legs - (microcosm#1095): `ons.household_interest_income`, the index of its + uses: dividends `obr.per_capita.gdp`. Savings interest outside SPI Table + 3.7's rows takes two legs (microcosm#1095); Table 3.7's interest and other + income rows take the OBR's savings income path from 2023-24 instead, as the + next paragraph says (microcosm#1418): `ons.household_interest_income`, the index of its history, to the dataset's year, then `obr.per_capita.gdp`, the index the engine's dataset projection applies, to the calibration year (1.1420 x 1.0474 = 1.1961 on the pinned engine values; 1.0438 and 1.1920 before @@ -96,6 +98,30 @@ membership carries the uprated value with its receipt. by `tools/pin_uk_uprating_engine_values.py`, whose `--check` refuses drift), so it runs and reproduces without policyengine-uk; a `requires_uk` test holds the pins in lockstep with the installed engine, and an engine bump re-runs the tool. + + The SPI donors reach the frame's year apart from these indices for interest + and other income (microcosm#1418 savings follow-up). The income stage first + scales each donor's two columns to HMRC's published 2023-24 Table 3.7 amounts + in its band of total income (`spi_income.rebase_spi_donor_savings`, the rows + vendored as `uk/hmrc_spi_table_3_7_savings_rows.json`), then grows them on the + OBR's savings income path the Table 3.7 targets take + (`hmrc_uprating.uk_obr_savings_income_level`). Each band's factor is the + published amount over the FACT-weighted amount of the tape's taxpayers in + the band, as Table 3.7 counts taxpayers only (microcosm#1428). The tape is + banded once on its income moved to 2023-24, each income leaf at its own + factor and each rebased column at its factor over all bands, so the + band-edge migration the consumers re-band on uprated income is counted + once. That income, like the band donors', is the published total plus the + leaves' growth, net of employment expenses and without the gift leaves, + which SPI's total income doesn't hold. A record whose band's factor differs from that of all bands can still + sit across an edge on its rebased income. A taxpayer is a record the tape flags (TAXPAYER 1) or one whose income + crosses the Personal Allowance by 2023-24; a flagged taxpayer below the first + band sits in it (note 8); any other record takes the factor of all bands. A + band the tape carries none of is left as it is, a band whose tape amount is + under a tenth of its published amount takes the factor of all bands, and a + column whose tape does not gross to the published amounts is left as it is + and grows on its engine index from 2022-23. From the frame's year on, the + engine projects the two columns on their own indices. - Count rows: `hmrc.itl_2026.taxpayer_count_growth_by_total_income_band`, HMRC's own projected growth in Income Tax payers for the Table 2.5 band that contains the SPI band (Income Tax liabilities statistics, July 2026), as the @@ -405,8 +431,9 @@ fold differs from its twin's, and a reference whose sign classes differ from the tape forest's on any located target. One difference between the two forests remains: the reference locates a leaf given the twin's observed earlier analogue leaves, while the tape forest draws it given every earlier -output, the three identity-uniform leaves (`other_investment_income`, -`gift_aid`, `charitable_investment_gifts`) included, so a located quantile is +output, the two identity-uniform leaves (`gift_aid`, +`charitable_investment_gifts`) included, since `other_investment_income` has +located at the twin's own other income from microcosm#1428, so a located quantile is read off a conditional those identity draws also shape; pay, which follows them in the chain, has the weakest rank fidelity, and moving the analogue targets ahead of the identity leaves is the follow-up to measure. Because the diff --git a/docs/uk-national-release-assembly-runbook-806.md b/docs/uk-national-release-assembly-runbook-806.md index bec7ea1896..38a19e3e6c 100644 --- a/docs/uk-national-release-assembly-runbook-806.md +++ b/docs/uk-national-release-assembly-runbook-806.md @@ -222,13 +222,11 @@ in §4. The promotion moves only `latest-national.json`, recording `national` as the line and the reviewed cut tag as its `revision`. It never moves the repository-global `latest.json`, which remains on the June 2023 release. -The 2025 national entry is registered off the default variant until this -first promotion: `microcosm.data.load("uk", 2025, variant="national")` follows -`latest-national.json` as soon as the pointer exists, while -`microcosm.data.resolve("uk")` stays on the June 2023 line. The default moves -in a one-line follow-up PR after promotion (the registry entry's `variant` -becomes the default), with its test; sequencing it this way means a default -load never chases a pointer that does not exist yet. An explicit +The 2025 national entry was registered off the default variant until the +first promotion, so that a default load never chased a pointer that did not +exist yet. The first certified cut was promoted on 2026-10-26, and the entry +is now the default variant (microcosm#823): `microcosm.data.load("uk")` and +`microcosm.data.load("uk", 2025)` follow `latest-national.json`. An explicit `microcosm.data.load("uk", 2023)` continues to follow `latest.json`. With `SLACK_WEBHOOK_POPULACE_UK` configured, successful promotion sends an diff --git a/docs/uk-staging-operations.md b/docs/uk-staging-operations.md index a985a65aea..c719caf742 100644 --- a/docs/uk-staging-operations.md +++ b/docs/uk-staging-operations.md @@ -60,8 +60,12 @@ still read. Version 3 fixtures add a `blocked` run and a failure that carries its `failure_class`. The implementation separates versioned file serialization from country -configuration. `microcosm.build.staging_storage` owns repository access and -the repeated-upload failure policy used by both version 1 and version 2. +configuration. `microcosm.build.staging_storage` owns the hand-over of run +files to the build's emitter and its repeated-failure policy, used by both +version 1 and version 2, and the repository access the staged dataset uses. +The emitter commits every pending run file of a repository in one commit per +upload interval, with the build's own credential, and reads a run back on +request. `microcosm.build.staging_cli` adds and validates common command-line options from a supplied repository configuration. The UK repository identifier and environment-variable name live in `microcosm.build.uk_runtime.staging`; the @@ -135,11 +139,20 @@ Common options are `--staging-dir`, `--staging-repo-id`, `--staging-run-id`, `--staging-candidate-id`, `--staging-upload-interval-seconds`, and `--staging-read-back`. An empty repository identifier is invalid in remote mode. Authenticated read-back is -valid only in remote mode. Once read-back has passed or failed, its verdict -owns the delivery's `last_error_code`: the refresh upload that follows a -passed read-back is best effort, and if it fails the run keeps its verified -delivery (the miss shows as an upload attempt without a success), while the -remote copy may still show the delivery as it was before read-back. +valid only in remote mode: the emitter commits the run's pending files and +compares the Hub's copy of each with the bytes it committed. Once read-back +has passed or failed, its verdict owns the delivery's `last_error_code`: the +refresh hand-over that follows a passed read-back is best effort, and if the +emitter does not accept it the run keeps its verified delivery (the miss shows +as an upload attempt without a success), while the remote copy may still show +the delivery as it was before read-back. + +A document's delivery counts are the emitter's as of that document's +hand-over: `upload_successes` counts files the emitter committed and +`upload_attempts` the files it attempted to commit plus any it did not +accept. A document never counts the commit that carries it. Three hand-overs +in a row that the emitter does not accept pause the run's hand-overs; the +final state is handed over once more. Version 2 and 3 storage use the fixed repository prefix `runs/`. Individual runs cannot select another prefix, so consumers can enumerate that subtree without @@ -386,9 +399,9 @@ Consumers discover runs by enumerating `runs/*/run_manifest.json`, then derive the latest run from manifest `updated_at` timestamps. Monitor each run's `progress.json` for current status and `events.ndjson` for ordered stage durations. A remote verification run downloads and validates only its own run -manifest and progress document. Upload failures are recorded with counts and -reviewed error codes while local recording continues; unrestricted remote -exception text is not serialized. +manifest and progress document. Hand-over and commit failures are recorded +with counts and reviewed error codes while local recording continues; +unrestricted remote exception text is not serialized. Rollback is configuration-first: use `--staging-local-only` to retain local evidence or `--no-staging` for a deliberate opt-out, disable the GitHub diff --git a/docs/us-modal-stage-runbook.md b/docs/us-modal-stage-runbook.md index 1d33ed5d57..7916717669 100644 --- a/docs/us-modal-stage-runbook.md +++ b/docs/us-modal-stage-runbook.md @@ -66,7 +66,16 @@ release directory onto the runs volume. Publication stays the human step in clone of the plan's commit from GitHub, checks out the plan's branch name, and asserts `HEAD` equals the commit. It then runs `uv sync --all-packages --extra us --frozen` against that tree's own - `uv.lock` into `/opt/venv` and asserts `git status --porcelain` is empty. + `uv.lock` into `/opt/venv`, installs the newest `microcosm-emitter` + release (0.7.0 or later) on its own with `uv tool install` into + `/usr/local/bin`, checks that `microcosm-emitter version` runs, and + asserts `git status --porcelain` is empty. The image sets + `MICROCOSM_EMITTER_COMMAND` to that command, so a build that starts its + emitter finds it; the check reports the version and the receipt's runner + identity records it. An image built for a commit keeps the emitter it was + built with. The tool's environment withholds credentials and sets + `HF_HUB_OFFLINE=1`, so an emitter started there keeps its events and + hand-overs local. A commit that is not on GitHub fails the build. `checkout -B` would put any branch name on any commit, so each container also proves the name before it runs anything: it fetches the plan's branch from the remote diff --git a/packages/microcosm-build/pyproject.toml b/packages/microcosm-build/pyproject.toml index bd3827176b..c5c650bf33 100644 --- a/packages/microcosm-build/pyproject.toml +++ b/packages/microcosm-build/pyproject.toml @@ -24,7 +24,12 @@ dependencies = [ "pyyaml>=6", "jsonschema>=4.23,<5", "referencing>=0.35,<1", - "microcosm-emitter==0.2.1", + # The typed calls a build makes to the local emitter. The emitter itself, + # `microcosm-emitter`, is installed on its own (`uv tool install + # microcosm-emitter`) and started as the build's child process, so an + # emitter release needs no change here. The socket protocol carries its + # own version, and every emitter release accepts the versions in use. + "microcosm-emitter-interface>=0.7.0,<1", ] [project.optional-dependencies] diff --git a/packages/microcosm-build/src/microcosm/build/be/chronicle_feed.json b/packages/microcosm-build/src/microcosm/build/be/chronicle_feed.json new file mode 100644 index 0000000000..5ef7bb2e50 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/chronicle_feed.json @@ -0,0 +1,16 @@ +{ + "version": 1, + "country": "be", + "scope": "be_calibration", + "source_repo": "PolicyEngine/chronicle", + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "build": "build-bundle --suite be -> build-consumer-artifact", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112, + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c" +} diff --git a/packages/microcosm-build/src/microcosm/build/be/country_package.json b/packages/microcosm-build/src/microcosm/build/be/country_package.json index c02792bf68..25de1ae91e 100644 --- a/packages/microcosm-build/src/microcosm/build/be/country_package.json +++ b/packages/microcosm-build/src/microcosm/build/be/country_package.json @@ -32,6 +32,11 @@ "kind": "vintages", "schema_id": "vintages.schema.json" }, + { + "path": "chronicle_feed.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, { "path": "gates.json", "kind": "legacy_json", @@ -42,6 +47,41 @@ "kind": "legacy_json", "schema_id": "legacy_json" }, + { + "path": "holdout_references.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "precal_references.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "quantile_surfaces.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "reference_aging.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "reference_intervals.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "reference_inventory.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, + { + "path": "reference_profiles.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, { "path": "release_contract.json", "kind": "legacy_json", diff --git a/packages/microcosm-build/src/microcosm/build/be/holdout_references.json b/packages/microcosm-build/src/microcosm/build/be/holdout_references.json new file mode 100644 index 0000000000..7aa6e4ade2 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/holdout_references.json @@ -0,0 +1,716 @@ +{ + "country": "be", + "schema_version": 2, + "reference_set": "holdout", + "description": "Belgian held-out references: compared with the model, never fitted. No calibration-side node may read this resource. Every row is parked until its measure has a producer; JRC's EUROMOD-BE statistics are deferred while d1822 is open.", + "allowed_value_operations": [ + "rolled_forward_by_ratio" + ], + "hierarchy": { + "providers": { + "eurostat": { + "label": "Eurostat" + }, + "fpb": { + "label": "Federal Planning Bureau" + }, + "nbb": { + "label": "National Bank of Belgium" + } + }, + "categories": { + "eurostat.household_accounts": { + "provider_id": "eurostat", + "label": "Household accounts" + }, + "eurostat.income_tax": { + "provider_id": "eurostat", + "label": "Income tax revenue" + }, + "fpb.household_account": { + "provider_id": "fpb", + "label": "Household account" + }, + "nbb.national_accounts": { + "provider_id": "nbb", + "label": "National accounts" + } + }, + "target_labels": { + "eurostat_d51a_c1_individual_income_tax": "Eurostat D51A_C1 taxes on individual or household income, 2025, rolled to 2026", + "eurostat_household_current_taxes_paid": "Eurostat household current taxes on income and wealth paid (D5), 2024, rolled to 2026", + "eurostat_household_gross_disposable_income": "Eurostat household and NPISH gross disposable income (B6G), 2024, rolled to 2026", + "eurostat_household_social_benefits_received": "Eurostat household social benefits received (D62), 2024, rolled to 2026", + "eurostat_household_social_contributions_paid": "Eurostat household social contributions paid (D61), 2024, rolled to 2026", + "fpb_gross_wages_and_salaries": "FPB gross wages and salaries (salaires bruts), 2025, rolled to 2026", + "nbb_household_gross_disposable_income": "NBB household gross disposable income (B6G), 2024, rolled to 2026" + } + }, + "target_references": [ + { + "name": "eurostat_d51a_c1_individual_income_tax", + "ledger_selector": { + "source_name": "eurostat", + "source_measure_id": "revenue", + "source_concept": "eurostat.gov_10a_taxag.value", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "eurostat.gov_10a_taxag.cy2025.income_tax_revenue_by_taxpayer.country", + "dimensions": [ + "freq", + "geo", + "na_item", + "sector", + "time", + "unit" + ], + "dimension_values": { + "freq": "A", + "geo": "BE", + "na_item": "D51A_C1", + "sector": "S13", + "time": 2025, + "unit": "MIO_EUR" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:e3c28f2774b8452eeb2acd91", + "assertion": "observation" + }, + "entity": "person", + "measure": "belgium_pit_federal_and_local_tax_before_withholding", + "period": 2026, + "family": "income_tax", + "category_id": "eurostat.income_tax", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "eurostat_d51a_c1_individual_income_tax", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "rules_output", + "publisher": "Eurostat", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. Accrual national-accounts revenue held out against assessed tax (BE-MC5). W3: needs a pinned rulespec-be binding for be/statutes/income_tax/individual/final_tax.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t17_direct_taxes_households", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2025", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. Accrual national-accounts revenue held out against assessed tax (BE-MC5). W3: needs a pinned rulespec-be binding for be/statutes/income_tax/individual/final_tax.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t17.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.general_government_account.direct_taxes_households", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:09dcccdb13ecc60173a18079", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t17.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.general_government_account.direct_taxes_households", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebae7d68bab03979e30b2b5e", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "nbb_household_gross_disposable_income", + "ledger_selector": { + "source_name": "nbb_national_accounts", + "source_measure_id": "household_disposable_income", + "source_concept": "nbb.household_income_accounts.gross_disposable_income", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "nbb.national_accounts.cy2024.household_disposable_income.country", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5e83461cf5b9b1d0292c4c7e", + "assertion": "observation" + }, + "entity": "household", + "measure": "household_gross_disposable_income_eur", + "period": 2026, + "family": "national_accounts", + "category_id": "nbb.national_accounts", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "nbb_household_gross_disposable_income", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "prepared_column", + "publisher": "National Bank of Belgium", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. No producer: rulespec-be's disposable-income policy is a narrow worker bridge, not integrated disposable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t06_net_national_disposable_income", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. No producer: rulespec-be's disposable-income policy is a narrow worker bridge, not integrated disposable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:63c570cc58902f2813b3bde9", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5148b5898c391c11ff484930", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "eurostat_household_gross_disposable_income", + "ledger_selector": { + "source_name": "eurostat", + "source_measure_id": "amount", + "source_concept": "eurostat.nasa_10_nf_tr.non_financial_transaction_amount", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "eurostat.nasa_10_nf_tr.cy2024.household_non_financial_transactions.received.be", + "dimensions": [ + "direct", + "freq", + "geo", + "na_item", + "sector", + "time", + "unit" + ], + "dimension_values": { + "direct": "RECV", + "freq": "A", + "geo": "BE", + "na_item": "B6G", + "sector": "S14_S15", + "time": 2024, + "unit": "CP_MEUR" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:1c1549bca1f666dae3f1c6fe", + "assertion": "observation" + }, + "entity": "household", + "measure": "household_gross_disposable_income_eur", + "period": 2026, + "family": "household_accounts", + "category_id": "eurostat.household_accounts", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "eurostat_household_gross_disposable_income", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "prepared_column", + "publisher": "Eurostat", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. No producer, as for NBB's B6G. Eurostat's S14_S15 sector adds non-profit institutions to NBB's household figure.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t06_net_national_disposable_income", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. No producer, as for NBB's B6G. Eurostat's S14_S15 sector adds non-profit institutions to NBB's household figure.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:63c570cc58902f2813b3bde9", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5148b5898c391c11ff484930", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "eurostat_household_social_benefits_received", + "ledger_selector": { + "source_name": "eurostat", + "source_measure_id": "amount", + "source_concept": "eurostat.nasa_10_nf_tr.non_financial_transaction_amount", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "eurostat.nasa_10_nf_tr.cy2024.household_non_financial_transactions.received.be", + "dimensions": [ + "direct", + "freq", + "geo", + "na_item", + "sector", + "time", + "unit" + ], + "dimension_values": { + "direct": "RECV", + "freq": "A", + "geo": "BE", + "na_item": "D62", + "sector": "S14_S15", + "time": 2024, + "unit": "CP_MEUR" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c7c28463b5421308945c344", + "assertion": "observation" + }, + "entity": "household", + "measure": "household_social_benefits_received_eur", + "period": 2026, + "family": "household_accounts", + "category_id": "eurostat.household_accounts", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "eurostat_household_social_benefits_received", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "prepared_column", + "publisher": "Eurostat", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. No producer: pensions (d1902), child benefits (not modelled at level) and unemployment receipts (W3) are missing.", + "ageing_target_equals": "FPB's 2026 projection of the pair's row: the base equals its denominator", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_social_benefits", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. No producer: pensions (d1902), child benefits (not modelled at level) and unemployment receipts (W3) are missing.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.social_benefits", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf52974b05acf19d1d3ccb28", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.social_benefits", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e87808ae0b585214ec608b92", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "eurostat_household_social_contributions_paid", + "ledger_selector": { + "source_name": "eurostat", + "source_measure_id": "amount", + "source_concept": "eurostat.nasa_10_nf_tr.non_financial_transaction_amount", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "eurostat.nasa_10_nf_tr.cy2024.household_non_financial_transactions.paid.be", + "dimensions": [ + "direct", + "freq", + "geo", + "na_item", + "sector", + "time", + "unit" + ], + "dimension_values": { + "direct": "PAID", + "freq": "A", + "geo": "BE", + "na_item": "D61", + "sector": "S14_S15", + "time": 2024, + "unit": "CP_MEUR" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:627f1716ff45e9ac8e2ffd22", + "assertion": "observation" + }, + "entity": "household", + "measure": "household_social_contributions_paid_eur", + "period": 2026, + "family": "household_accounts", + "category_id": "eurostat.household_accounts", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "eurostat_household_social_contributions_paid", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "prepared_column", + "publisher": "Eurostat", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. No producer: employer and self-employed contributions are not bound (W3).", + "ageing_target_equals": "FPB's 2026 projection of the pair's row: the base equals its denominator", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_social_contributions", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. No producer: employer and self-employed contributions are not bound (W3).", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4c597d6ad755576b4e1faf01", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:deed6d1fc86e5e7032cbfa5e", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "eurostat_household_current_taxes_paid", + "ledger_selector": { + "source_name": "eurostat", + "source_measure_id": "amount", + "source_concept": "eurostat.nasa_10_nf_tr.non_financial_transaction_amount", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "eurostat.nasa_10_nf_tr.cy2024.household_non_financial_transactions.paid.be", + "dimensions": [ + "direct", + "freq", + "geo", + "na_item", + "sector", + "time", + "unit" + ], + "dimension_values": { + "direct": "PAID", + "freq": "A", + "geo": "BE", + "na_item": "D5", + "sector": "S14_S15", + "time": 2024, + "unit": "CP_MEUR" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:05ca22b4bedd957b4d655ff6", + "assertion": "observation" + }, + "entity": "household", + "measure": "household_current_taxes_on_income_paid_eur", + "period": 2026, + "family": "household_accounts", + "category_id": "eurostat.household_accounts", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "eurostat_household_current_taxes_paid", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "prepared_column", + "publisher": "Eurostat", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. No producer: needs the PIT binding (W3) aggregated to households.", + "ageing_target_equals": "FPB's 2026 projection of the pair's row: the base equals its denominator", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_current_taxes_on_income_and_wealth", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. No producer: needs the PIT binding (W3) aggregated to households.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.current_taxes_on_income_and_wealth", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:67bb0b178a502334a5798bfa", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.current_taxes_on_income_and_wealth", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3638106fd28d6f6d119c0d5", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "fpb_gross_wages_and_salaries", + "ledger_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.gross_wages_and_salaries", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b99b4161fa76ca1069ad5e7", + "assertion": "observation" + }, + "entity": "person", + "measure": "employment_income", + "period": 2026, + "family": "household_accounts", + "category_id": "fpb.household_account", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "fpb_gross_wages_and_salaries", + "activation_status": "requires_holdout_measure", + "criticality": "diagnostic", + "measure_kind": "transported_input", + "publisher": "Federal Planning Bureau", + "target_role": "validation", + "reference_set": "holdout", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "Held out of calibration; compared, never fitted. The card's wage-headline comparator (BE-MC5): gross wages, not compensation including employer contributions. The euro wage column has no producer until B4's currency bridge.", + "ageing_target_equals": "FPB's 2026 projection of the base's own row", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_gross_wages_and_salaries", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2025", + "target_period": "2026", + "holdout_use": "validation_comparator" + }, + "notes": "Held out of calibration; compared, never fitted. The card's wage-headline comparator (BE-MC5): gross wages, not compensation including employer contributions. The euro wage column has no producer until B4's currency bridge.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.gross_wages_and_salaries", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f17958efe84e42471bf68f80", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.gross_wages_and_salaries", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b99b4161fa76ca1069ad5e7", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + } + ], + "target_profile": { + "schema_version": 1, + "hierarchy_reconciliations": [] + } +} diff --git a/packages/microcosm-build/src/microcosm/build/be/precal_references.json b/packages/microcosm-build/src/microcosm/build/be/precal_references.json new file mode 100644 index 0000000000..a50627032d --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/precal_references.json @@ -0,0 +1,23355 @@ +{ + "country": "be", + "schema_version": 2, + "reference_set": "precal", + "description": "Belgian pre-calibration references: Statbel commune population on 1 January 2025 as the atomic geography support mass, unaged (support shares), and BE-MC3's two quantile surfaces (B4a, quantile_surfaces.json). The wage surface is RSZ/ONSS T17's five known-pay daily-wage classes of employees at the end of 2026-Q1, each the sum of its 24 age and sex cells. The legal-pension surface is SFPD's 26 amount bands of January 2025, parked until shared rank_only support lands. Identity and sums only; no observation is carried.", + "allowed_value_operations": [ + "identity", + "sum" + ], + "hierarchy": { + "providers": { + "onss": { + "label": "National Social Security Office" + }, + "sfpd": { + "label": "Federal Pension Service" + }, + "statbel": { + "label": "Statbel" + } + }, + "categories": { + "onss.wage_distribution": { + "provider_id": "onss", + "label": "Daily-wage distribution" + }, + "sfpd.pension_distribution": { + "provider_id": "sfpd", + "label": "Legal-pension amount distribution" + }, + "statbel.geography_support": { + "provider_id": "statbel", + "label": "Geography support" + } + }, + "target_labels": { + "rsz_employed_workers_by_daily_wage_class": "RSZ/ONSS employees on 31 March 2026 by daily-wage class, summed over age and sex (wage quantile surface)", + "sfpd_legal_pension_recipients_by_monthly_amount_band": "SFPD legal-pension recipients (employees and self-employed) on 1 January 2025 by gross monthly amount band (pension quantile surface, parked)", + "statbel_population_by_commune": "Statbel resident population by NIS 2025 commune, 1 January 2025 (atomic geography support)" + } + }, + "target_references": [ + { + "name": "statbel_population_by_commune__nis11001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f835115b964f486edb03713c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ba2424c10ef64feaf16d030" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1c156d0b0bfc79da703fa489" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed6bf439079a3a43301b05ef" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:24f980b6aeca203045018aad" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3d2995f8041fc351e1b93796" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a8c62bac99c48d4064404d5b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3a2d1f16fd426c4645fa3ed3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:baa871d4fe4ff0792582bad9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:48cec63734831d3be43e08b2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b404aa5f491504f62767655" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:08116f6132827984973e65f4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f5b244ddc70261fc1c5f8da9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:092c1f4acec379d6b08dbb28" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f98312c26d9a824224fa6a51" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11030", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11030", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:891aa52e5f887cf1bd674c25" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:db2bd7cb8285dee24cb77b49" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebb1a2c549597c0fce21afb6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:98a3c165a4741125655ed192" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4bf83330863636ea38c1d733" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa8d8999f82ceaa94631b056" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:aabf84f79af2cefa2171d2f7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11050", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11050", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2e6faf54b3e648d21be8c45" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11052", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11052", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d756c12971df249306e7d3b4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11053", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11053", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d624d5e14e2a1e017f986c1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11054", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11054", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a2a11691d7d6e984c13e3050" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11055", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11055", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:66de23402f11fe4d3b3f9dd8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis11057", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "11057", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:18ea2e86b6dca871d88c9e4e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f6190f8fc954c70d136f4ee9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f1775f2016a51e43fe59b4b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:10b473e26371b4b277607435" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6a54548943390bb86e8931d4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f4eb38aa2aad661ecdd5095" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cef10270c47a06a30ffac49c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:33452ad4ba8d42960048f7bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12026", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12026", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:48bd6471bcce0cddcf9b7dc3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:626bca7ff95c4ef6e5a340ea" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ee823cc457c2997863731355" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:aafabc0708fa2641fd703750" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis12041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "12041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b55f80c204853baae1a1edba" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d52f015d80c444dfa43859cf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cebbe381ca8fccdcb1f61a23" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:976fb693e7839076b2f9fcd6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c05b10dbe151b156f627d0f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f7778bbb860be66dd9dd485" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ff89fb85cf7345ac72dc6ab8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:30e7b019c4b92bce243175a9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1db0dafa387cead3002f7b7d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f1424c8d7e34bc49400eb97b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d4a175a703e3164f6e373eb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ce392bc5794f7800929262cd" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c0302158da4a50383d565f81" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13017", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13017", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ad4b4bc71267284a7573dc7e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e970df2eb316e2d28e88027f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:82687547c5bc5bf7540b3345" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca77ba8aa9abe7613d7e5161" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:642c3432f8266c0e6c4bb1fc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:09dcc9eb78ffda3711909c89" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13031", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13031", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:393be545013ee65506482cd9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6d46ee43c52f46a7f24d9a3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13036", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13036", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae24c11949f28849171412a2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:863eee0a9aa6bb0806246b76" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f0b61d7c8f0223ff32d5a082" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:53afa95554353d0f64f4225b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13046", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13046", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ac792f7c1625c5e811d91ed9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13049", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13049", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:60dc283e6f738559c881494e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis13053", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "13053", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7bf8c05501cd74064bd8ebf0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d585c928c6696cb65cf6d3d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3f43ac05a99a9609571acfba" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e99159281cb445de87f5e53" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:adf7b902d17a732ffd39714a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a36c085c3b65b1b35557485" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3808bccd2c24287170bb73f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c171cf681cdd918c0094f7f2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f56398ca97e85fb7580fa156" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a4db8707f90bf0273197bd4b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1ec9cff646c9328e12b5c444" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:58c68d409718ade65e5b8621" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:578c2849c6e5d57df35d1952" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a620c03e1210238fc29ea577" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cfc0334c4613fff27bf2b99e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:077ba5c4a856618fbd129319" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f009d8f5cf42298920f4e918" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21017", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21017", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b004cdb8f5a52eed4181d751" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3cc2395a22bf1bf75d5461f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis21019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "21019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:57f326ae5e8333f987bca517" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:02c1aeb6508aef38296abc03" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e75560176e8ac1c5c90d408a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9e015382188dad2766ee592a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:970a1a96b78bcc18fccc82d7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9de1f68743a33ca0db77c515" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23027", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23027", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:73afc64d64f10b8a9c72a237" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23033", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23033", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a4b98bbe9e8d2cb634f2729" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5715b8c9c20c8b08f6082a70" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:95941c49512c441b7babd917" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:291cfd1f0a5d12d9b770ab5c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:16f1dd1eabeb3286a9982a6b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23047", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23047", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f182c3ab8fed8e6f1159af9e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23050", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23050", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8f3d37e28ee7624546f5e22" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23052", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23052", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e78d274c0e47771e4e2afe57" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23060", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23060", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d524ba967a61f8e5a54f8286" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23062", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23062", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b4adae8fc9a3ee1fa5e48b48" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23064", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23064", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:572d29e3571b2e58f5556140" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23077", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23077", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:12be6c01c2cdfc615bc5d205" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23081", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23081", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8af66f6157bcf18c053e1e4a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a2b031fdeb2934d15aa6f7b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23088", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23088", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c85647316d9575e13c411a88" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23094", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23094", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:116e3846d00d39960b117565" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23096", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23096", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:096812daecac9db839c86645" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23097", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23097", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b0b0b218246bbfe80e389c90" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23098", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23098", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b485b6097f35bea80cb9eded" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23099", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23099", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:afbb509d195f11a46cc1eabe" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23100", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23100", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d6125bb7906437bb79468dc9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23101", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23101", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2f2606e0a0ca8623b310a11d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23102", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23102", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:635c096e4510fe3c5bdae1d0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23103", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23103", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8a91ff7e1228d95aa6946a8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23104", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23104", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8f0ed336fdae18d38f46e12" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23105", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23105", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d43b7fb8f155532e880d2681" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis23106", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "23106", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:07e05bf61687b9f6e64c2d40" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:290808a46e8999400f54aab3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fd5c031595c6d661568c9dbb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e249a927c38fee8d6c75f8bf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a77532e81eb73a7ed431e3b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d80184141938f21025028433" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:da4194053a9e4a44a860c29e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:091ec51e72a5cca51f049011" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d1f49a680fe37f043bbece67" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:89b39f4fa8557888916cceee" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24033", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24033", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb62bce1f8914f706da3b183" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:13f22d7994295b96ffc30f56" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e45ee3be9062000e6d950e1d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5062d5a85793a70a5b192900" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8619b2d24950bdceeee0424" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d23d36208473375a7fb52346" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24054", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24054", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9ab941b3590c212a66860819" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24055", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24055", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8c377b535343776637202e0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24059", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24059", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:26cf5378797afaf309171c5c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24062", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24062", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c52e23bc2d1635535b376d7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24066", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24066", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca901229dcbdae0e16ab21a6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2f74e9b6d9cac9dbfd06074c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24094", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24094", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1342d25ec822fa3106c55a3b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24104", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24104", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0fb71fb9ea3220dc1494a60b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24107", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24107", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:12577df5cd35c0225611600c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24109", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24109", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d9eb1bd176b99b7b436b714d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24130", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24130", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:50fd2f56481894f5c90003b5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24133", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24133", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8aab0f9a8df63239d7acf3ce" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24134", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24134", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:268aacfea79d3a3eb1f8a5c8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24135", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24135", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:47e59b4a9a9564549ed47e75" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis24137", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "24137", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3887d0558525c60dbcbdaa20" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e52d8a343ddab1232a07c549" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b473d7c2a7a71da986c91b3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b339942f67186cdea703e09a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3eabea0848677203edc9d746" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e373a069c5f86a3d61d7b414" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25031", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25031", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba2160017a20db3fb9137464" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:456c70c431866c3a567fa257" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c4b80d36f74eac641e90ae5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e1bb3cf4855649ba39a06da7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:52baae60ec2e139d8ec81f95" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25050", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25050", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a5a678e6289a085bb67cad7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3feb759a6a807fac70c7646" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:59b1eed7d57188acdf4afa9b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25084", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25084", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7d9aec4fd75b824cc3512fd1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25091", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25091", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca47c1515d58c7d9fcc38878" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25105", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25105", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c6bc9ca977b955098f6b1cf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25107", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25107", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6153710f9b421ecb3ae6064f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25110", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25110", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c5fc63e0cd8fe4acf4b15557" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25112", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25112", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0fd2c9fc072ff6bfa4343beb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25117", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25117", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:31db1f7056602c80bf0d00af" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25118", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25118", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e15715df9512ef12e5a303cf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25119", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25119", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1391c6d2072df22995b58062" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25120", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25120", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e205087c16bdd6d8a050f719" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25121", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25121", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa8126693f6a4a618b5e675b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25122", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25122", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:325747d2ab4f680fcb14fe2c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25123", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25123", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2013a6adbb90eef840a8000e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis25124", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "25124", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5c4a05b60564aa3c66296e73" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5656ddcab84e4399b2294164" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f305f40fd233d1710a9d7c12" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c59e7f8128efd9c9531cd0f1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3558a5de469ce985206c6da1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:07e45fc4a9e39b152c2c1400" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a8df469042b32e93e27eef51" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31033", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31033", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebc2e1d40b1ee6f7812ebd58" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b8e2a6eb01ca96b67a8179f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31042", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31042", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:88becf36b166c7b1ab0414bf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis31043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "31043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:505c9a6337f1a369dcad0459" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis32003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "32003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d700fb0ea693fa46d47aa57" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis32006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "32006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:22948739fc10b5f6f408ad49" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis32010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "32010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3af80a5f50bc791bd5c33d34" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis32011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "32011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:389437292e1107c3affc44ef" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis32030", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "32030", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:54612aec68ccf491eb6aef71" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b55584ce01e614800f12838" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b9c907234f1d0a01636d879a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bea80785821aeb284f0a1ed" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5557be004e3f31ded58471f2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a603254f4e7ec5e2bd481808" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b63f30e14a847c0fdf2282a5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6ca7ef35b01024fc398e0f0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis33041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "33041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c938b07a350705e840ef1e04" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f78584ab1b3d0ff2875df595" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:992b23de736973ea54d23672" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:785a7e5be8511159ce8f5327" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f59d3093630854766b360a4a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9354e84843441f338eea5f26" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:28fd6594f5f01500a678f085" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2bc23bb384ea5284fd5ef680" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34027", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34027", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb5322b8ee98143b3a2e33fa" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4fe29239f50ccaee44db1d53" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dc45910e0cadc87fea32ab41" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34042", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34042", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b4ef4944132a0724b3b14ea" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis34043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "34043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:59fd239e1f23157fd1b572f4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c7ff4efac840ccc6a7997132" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cd6acddef8eed5ae41f63f7f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1abe4c5e057cd25ad5b5ba52" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:14d29994fa62c393f816f836" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9c8dd8eb0a7d27fadf5d1c6f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:046ec2ebdfccf665589a1850" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis35029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "35029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:03d9fe6be1cfb0702bbaa9e1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:146cf7da9d4d5f748aaec9a8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:38886fb03ae39b947d0513d0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7255722af56048d70280d7ba" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f99d9c87db2ede8c72a2987" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed7f11bfc025fc8456179b2f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:be9b1ebad9e6af5e14fd911e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:58ed64598a0472e1fae40160" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis36019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "36019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1f519b7b9492239efad45908" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:776c6d7c5193886190f803b4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5e846073a4b2c1aaa180d89a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6ffd7e73e6890d654aaeff68" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37017", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37017", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:37e04fa81bce43ee4b9e51af" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a1afdcca7a7c46c99c1c0bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a445776a53f8cb107ae114b2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis37022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "37022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2c5877ae47f8943e90866c6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis38002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "38002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4291ec62005491e80e542804" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis38008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "38008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dabf43c332433ff502f24f1c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis38014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "38014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:907472c3370c7afb208d3229" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis38016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "38016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:880e44cd6302e79e6dbb3de6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis38025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "38025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b18d4497695421180d67bf6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:06f0bafa753a0697844a870a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:221bd01caf1a1fdd26312db1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:358fc7cac0688b032d5c9042" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:50c681c2f7715b0fbc57d638" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41027", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41027", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f92778f158a314aaceeea6b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:15a5ef3cf725ebb5c2ccf0bf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c8852535011ecdedf26a3a2e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41063", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41063", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5cac1830c9561ce57bf33085" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41081", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41081", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c3f4894877c9bbb1ea2a7fbb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis41082", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "41082", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:921357a9af72c4abba10aa92" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a506c9dbf06b82889c07c18d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb017c8d9ff53db239e7092b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:936ef43c6a53129956bbd604" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e82a45b6c83ee9b5a1d3c5e5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:df58de9515c6252eea616d42" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cc6ef65cb34c0ac86f38ba0a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ea3186a85b623144103d75f5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1f2ed88bc0094b2742c11011" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42026", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42026", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:91c241047cf1672c507f21e7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis42028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "42028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ea3f49a5ae9217d1213f071" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:99b8ac397205c0e530d578d9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a95a557921e6a131c27b487c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:32562afdc4001c7e10ce48fa" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e54a0933c4bc70063b963085" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:388445ce30a9bf0958657006" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis43018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "43018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6434d7e06af44b4fbb5d32d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:69dcc382485a8b8c57232fcc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:07b806928eb1cf5727a02f56" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f376b0076b5af3a865de4f9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2afd4d606045ffec0d6f72fd" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44052", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44052", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dce77ddb1f14f362075af7d2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44064", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44064", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e0c3332db8b206bbca94f349" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44081", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44081", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b13007f838cbb66735fb7f0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44083", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44083", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6600c877ac622a9de4642052" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44084", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44084", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e6ca3cc69e470f21410cef8b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44085", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44085", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba2bf78799000d35556c80c6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:65d64e7e7b72f7f8b8958ca5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44087", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44087", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a79af09a66517e988a82eaba" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis44088", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "44088", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4ae0de37cc33f460ed2b21f3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:79e2126e9ac68b96ca145bbf" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c67b49223f77c565da03b7c5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45059", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45059", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cabff2f67fcaab4bcf421ce6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45060", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45060", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:45980c3902faa7719e097b66" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45061", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45061", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:10eeed38e2d62271a93e019f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45062", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45062", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:79903deb231bfba57d16655d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45063", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45063", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2abef0cba6f86f7f0f8b0c30" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45064", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45064", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:760c0dd1ac3ac9c66813a2bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45065", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45065", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b7437bb52d0b61ffbff3c68a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis45068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "45068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bad68fb21c1f1b1c5831247" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c009e0831d0a904fff338fe8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d441b4c26cd44039b7996e65" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:14b05aa96fd93cd0ae45626f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e3fed036b13f44014f2027b8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:466bc29e944bae6b02652f46" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis46030", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "46030", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4fe8687f3cf76331ec076e84" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:da97d42a04b925eff5937d36" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:87e5c3440d4650904559746b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:10d43bc480b188ad75962a4d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0863fe07357868adadbe6261" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dba2f52e4e861794ff058569" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51017", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51017", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f4e48c89112d8bea62367337" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f184bfa407db057390b390c4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51065", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51065", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:44cd01c46b636fe3584a8880" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51067", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51067", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:46d1731c03983c41416d4859" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f56d6e5c981a6f6c737cc3a6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis51069", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "51069", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3928328ef423e76a77ef1dc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9997afd6eff0e0da92fc32b2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b4cb92d24f52b28a93790b9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4271410eed66fa31a953a1dc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2de2c026091d4f2808c476af" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c1f2d7c6fc2b6050f105816" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a1ca14787157f236d8c6671d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6f9bdf2dd79c15b111755a56" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6ebe19cad4923b1acc6be886" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9506b2c29f465cde17ac1e5a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52055", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52055", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed84378a5fda89bc930db2cc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52074", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52074", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:214ef539f812eb32e1d43ad8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis52075", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "52075", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f9e1249ef0536b83fc2be23f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d5b4d4908468fb77d9f4d54f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ef8bdfc4b1813cfe82800c4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:aeee080cc94cd2837ca6918f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1dfcd1728b953351fca88407" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:98b534f676e705ee05bac016" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53046", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53046", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:15b4b83fc64fb8945f63383b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53053", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53053", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:555f1e6f15a0645aca7e22e4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53065", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53065", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e62059990886d2918c64348" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dadc7c964c472bb531bc09dd" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53070", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53070", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0ff2104a08dce9179f9f8a39" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53082", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53082", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ca4de29f8c1d9d5a4df2237" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53083", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53083", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:41220ec2ac3526383043b4d3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis53084", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "53084", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:53e96c709aa85e74bc2cf722" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:44f7245f3cd4fbb89207bbbb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6073052dda3f691e775e86f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a865134c171efb13c453af1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55050", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55050", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8a192e24715a33308fed11f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55085", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55085", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96299f95e3a24f6798852fc5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis55086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "55086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5499bdb6955165995f65c390" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8608ecf422237eca610d405" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e0294ae21d11b56ee500b410" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7fcd36db5d752a0ab3ee6455" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0285707dcdf27db821e4a550" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:98eb556ad4dcd86a8293337c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:95df3aebcc9a15c61ceaccab" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56049", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56049", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:60727706c74dde9f15c79555" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56051", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56051", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e397eaaa439f21211523abeb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56078", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56078", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7746e64f240d841dcd98fbfc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1eebb2c51266d85b24d4712c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis56088", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "56088", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:586311945ddc5582bf47b2d9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c656847fdce11b9e9f39467f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:09fa6d27f3ac5f7fb86092fd" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57027", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57027", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a9830703c47df1e14f62648d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57062", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57062", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0b5329491e0e22d21ce9b3f0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57064", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57064", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:de8a20162ce0141179bf1a28" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:92d788d00b89b9df76cfd544" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57081", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57081", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e759bb9d8c1a74efd1786d7b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57093", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57093", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa6b5433c61bc80e23a915ec" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57094", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57094", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c4f295f600b878941431997b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57095", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57095", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:52ca65316b89445c40635648" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57096", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57096", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b62160a2a2ee7a8584f150de" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis57097", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "57097", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:259d6461b061f216036c65f9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis58001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "58001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:da4990f792622cff0d434d23" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis58002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "58002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:933140f66092e0b3e66fd462" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis58003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "58003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0ed8d78d4ed477540c09e8bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis58004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "58004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:97322ee52ed54d2d5511760f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bb8d98e96330bcac45539a4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d506867e4a8c74ee46789746" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6028719a0da75496756ca013" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61019", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61019", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:06fe02234f649a902c67f162" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8de0582dad2d586eda047382" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c219d989a117d516557a681e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61031", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61031", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:806777fc8d56eb86af59a82d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dbd598a413d2ee334afcbf15" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:43ea50ed15521330eb1109bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:16f071cc05e8d23ac167f40c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a76dc39f0adead945654ab50" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61063", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61063", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9818e948dc3a02984ab2ef05" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f57531d090ba7934bd523f36" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a1765160bac3cd12e9f4360" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61079", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61079", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:53c15e5b1d2343603ffaaf3d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61080", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61080", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb3637dbffc01671bfcd5058" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis61081", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "61081", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:542d2223eb57fa2829ff0603" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ae39530b5343b4097719b34" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2a7ebaac9dbcbb74d9096d6f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fc5f199b535d7b801e6fd2bb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9b1a569ed75c7b8f86f994bd" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fd7539021461fc9fd64c6d0e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bbb283da2ac2f9ac4ec706f8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62026", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62026", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d5b6f53e268fb2a9b9681724" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62027", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62027", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa80e0ec7e3dc707c6b11246" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62032", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62032", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9fda7e8f198a20019e6555e3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3395e1647278039755595cde" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62051", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62051", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3be55ce22206854264f2c4e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62060", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62060", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:97aeb6001cfcfeea75bf6f73" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62063", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62063", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:816e3f51667ee780e9807bb2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62079", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62079", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c98acf6a6e3605ada5e154c1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62093", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62093", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:80e0959fe631885ee4b3c527" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62096", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62096", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b5f4e87ff801af3799cfade2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62099", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62099", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:46565145fb373d49c506fb20" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62100", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62100", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:237fcae7f1450a1f87b66090" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62108", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62108", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e1f80da4c9be0c729f031c2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62118", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62118", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e1ef66ae6e24058cf24cf460" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62119", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62119", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5868fc6a6af2ff6a3bd4f687" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62120", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62120", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5132080713eb587308810d9b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62121", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62121", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae44c98419316e8e2dfde50a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis62122", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "62122", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:df3f184540a9732aef1e5446" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:08f8aa167ec786d9c9229c8b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1814e9953d5f70890d467629" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d334681b8549e826557cbb5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c11b468348d257dbf5a7ab0f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3973303d8e7290152832fbe2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d42cbde731128c5a2556910b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:503d1c2830b8f29d9adb3f55" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:88367cbeb1bb3a2bb225dba2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a1c6ac7eb26f9186da1daec" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a2d84ed38223326ad32a75c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ab9bfbba5fea5d2ecb727c5e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63046", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63046", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6eef12675113143d59ab616c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:269df8f181c3fd9fcb408953" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63049", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63049", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bce7a4bd8eebed960d2cf697" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63057", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63057", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:92285080e23e90b1e408fdb5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63058", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63058", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:27352a66a7c6af3ed8f914e2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63061", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63061", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:62d2d5caf6c6945efcee93da" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63067", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63067", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:732bc5cbece5713286ad49f1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:304d043ae3c898aacb1ddfea" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63073", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63073", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b16def2ed8946254307fd600" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63075", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63075", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fea3ebf78a10ad3c81932e06" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63076", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63076", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:343c3f178611fc55df15572c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63079", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63079", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5d72f434c9a3474dbe71ed19" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63080", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63080", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a0a8e80eed2c5e9b0ad018d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63084", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63084", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e5e71a7e1231f4ac05141151" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63086", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63086", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:78ef03e6acaf48ab0f0a7836" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63087", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63087", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cee036e20247a55f570c7f3f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63088", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63088", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:336cc36f2630e1583c8741c0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis63089", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "63089", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:da498849f929bcc09179e85b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64008", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64008", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f1324b54394f14f79217a0af" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a5bd56c1146bbda5d5b970a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:402dbb99b7eaea5054ae85a2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64023", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64023", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ab398159391457cbfb0debe3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64025", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64025", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:27e61ea50f487302fdcf2614" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f50c8d11d8a6737bf3f206ef" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1a56e77482c38ddd403efcb" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64047", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64047", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b68238d539c05eb27ce584c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64056", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64056", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fe116320ba124917b91fc70f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64063", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64063", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:abee3ec8f8ad270411746a77" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64065", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64065", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb8cb8db9d68e5f5ab427ad6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64074", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64074", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d9cca91103400f03d4512687" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64075", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64075", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:12bc6b56fa2d2399237d8f6e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis64076", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "64076", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b96362268c32bfc8a1bd3d4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71002", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71002", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:43e38a6fee0eb558cdf3c2d0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:38ea60af5242708a2950f519" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4e99230647364a21c7e36bf5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f38f3ae6f93317919fcfe6c7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71017", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71017", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a667eb27a7abd6a80626dccc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c678a3e244f3fd2e697ec33" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:158105242e61dc604f7ce43e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3389622ccb1e9f53ef736505" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e1d488c0de5bebf5609ac5c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f5edd0926eea3a484750ddba" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71053", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71053", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bbb9fa09496f83376272c284" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71066", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71066", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e2d2b374153acd25552c424" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71067", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71067", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cbe7b4bd80cd717121c8a55f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71070", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71070", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c00ed959717f249cfa1a3b3a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71071", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71071", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:016e269edcd5d6b7c7d7d7ce" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis71072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "71072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:10960756b96a7a6c6eda43af" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:118449fe84c7d6c46c1a524c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:57f1a472e131ef465aff1e66" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9dcb3d6a3d6be5781206d066" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72020", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72020", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c1629c221ec490b59e3bd8a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72021", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72021", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a27c8e9c47a7ba013ca3fc07" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72030", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72030", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ef2da197b4d7272c0f7dfa7a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2013e91ef366cf1612ce9c7b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f7014f96fa6a47003b77bf36" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f08b2ba42fb0d77debb1655b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72041", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72041", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7bf2230fd69814090859d15d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72042", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72042", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:84bec730fbec9ad24c485a51" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis72043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "72043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:090997dfddd6371ec8605dc0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b7f2af1f8f193eed041ee8c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f618029c4b0501939b6138c0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:66c95334c99c343a30aca149" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73042", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73042", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:117ad2ae33571501ed106590" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73066", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73066", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:884d1ff92cc61add2f0a1615" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73098", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73098", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba1982f698ab40e678940444" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73107", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73107", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ce7d8146a760c3a2e43826c0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73109", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73109", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:196fd7f04acee247618bce28" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73110", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73110", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:71084bf8256a9cafdbb05515" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis73111", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "73111", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f10feace0509d39dd2afd832" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis81001", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "81001", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ac2e9d4344d2b33f02e5016d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis81003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "81003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:15c625e31cdeea1327ad6fc3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis81004", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "81004", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:44ab1febc1a968eeb456064b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis81013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "81013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7b941b2308015d679d07e1ff" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis81015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "81015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a846a2a49ef204e1a48e0ce3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b12cac11649f9d5ca9129fac" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cc5c70168692c2a6acdf970f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82032", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82032", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:69a7ae1992332b0aaee74a96" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82036", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82036", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8f635f15e0f466658b6966b4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82037", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82037", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4ef2cc1ee0b0694b518d94ff" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82038", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82038", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4974945db7ed97ba79bf0e34" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis82039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "82039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:913492db699fe335bcf2f9b8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83012", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83012", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f906bddd2a9031d7789454e0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:65aef9fa06660e59303111f8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83028", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83028", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:57be612717150562283e0eb8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83031", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83031", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:47b7d31757d57921640089ae" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b57dd57e29696aa7a925d1e3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83040", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83040", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:94142579059fd20bed646ce7" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83044", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83044", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ebd199120a2e208077afef3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83049", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83049", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6acfe13a7b0f561dc984ce77" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis83055", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "83055", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:484419bc1a606afceeed0fd5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c10e52ef675efb1b0a891a8" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:222603d39bd0bea7a1980373" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84016", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84016", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:58b82b95db1d5532d6888db9" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84029", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84029", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0080a472eb23cfaa3249435d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84033", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84033", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5f93007cb95669086a31c47b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:482ec099793ace830eff9adc" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84043", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84043", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:636ed099505e8f892fdb256d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84050", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84050", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9183f57470e5122283827a45" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84059", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84059", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c7c6a501f114533e00cce27" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84068", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84068", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e5cccad3f65b272b7f10db95" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84075", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84075", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:54689453f5d0a002f1c42073" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis84077", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "84077", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:12ef5c6fb7454ae7ae0659c6" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85007", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85007", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:17ad107ab5d2f66119facb7c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85009", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85009", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:18fb7d0e5af97e10f168545d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85011", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85011", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d2792735b9b8b51283d83a7f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85024", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85024", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bae751ae2c1cb1d7eede0743" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85026", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85026", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5edd80b21b149d00dacdc15c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a1bcaf7e8536b0256982483d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85039", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85039", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:6397fde6cc26d4351cfa2df4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca7988dd927ba24395f22c87" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85046", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85046", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5604eca43a40ac333769695f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis85047", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "85047", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:05be2a3c1b79ef12822bad02" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91005", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91005", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:7afd4e91772c22fb4269a5a2" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91013", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91013", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a7867a2f57940b77b0ae9ef5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91015", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91015", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f58a68c51f24cc800ae8d93d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91030", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91030", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:90c1762b1a451422199a1aaa" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91034", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91034", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0395b8a5266ea04169b3c7b0" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91054", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91054", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:37f7cac13a55533a4c75d40c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91059", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91059", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8707c1637280c4c40578596" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91064", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91064", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:dd96e152ca26b63e93b31df1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91072", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91072", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d2b31b87a278a146d3c656aa" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91103", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91103", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4d64a22720614b6b38c7eb61" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91114", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91114", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:c40b8284c39686db34fb268d" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91120", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91120", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9ac244766b9878eded162391" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91141", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91141", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bdd7edd8891e4529c706fa4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91142", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91142", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:25b6048ba0ec02a707028e52" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis91143", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "91143", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d05115c09dcefdd8da80c229" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92003", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92003", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1297965dc10b953c11e8197b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92006", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92006", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8d3d4e370e77fea69454c4b" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92035", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92035", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0d1864b846bb52fe119025c5" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92045", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92045", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:170b34e0b7e919ebd2556f1f" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92048", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92048", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5024ad24ccbaf007e5866a74" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92054", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92054", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:cdcd79c086bbd4c599dca3e1" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92087", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92087", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:fc2c4c5352cb19d8e79ba181" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92094", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92094", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:77ead52847844179ddeb7f7c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92097", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92097", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:28598fb8436a54d339405600" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92101", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92101", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:afcd450a288db9d306d6878c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92114", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92114", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d97d440330a30e1514ab5c50" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92137", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92137", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:9048d6e970cd431e972724c4" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92138", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92138", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:741aac13da30f1b4cf9053b3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92140", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92140", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d111de7509f28ad12255d511" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92141", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92141", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6d92fe328d9c4905e5c966e" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis92142", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "92142", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a48525eda2193af1843d1939" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93010", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93010", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ed65ce48e06ec0570d77f48" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93014", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93014", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:30c8da65b60af9893d5298ea" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93018", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93018", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5b2490c5d4e4256aea4d8020" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93022", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93022", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:162b0ca73c18446cf3d89a6a" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93056", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93056", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:73b23579a20dd10c94338502" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93088", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93088", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:8dec5d05b2281f63d39bb1c3" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "statbel_population_by_commune__nis93090", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "commune", + "geography_id": "93090", + "geography_vintage": "nis_2025", + "record_set_id": "statbel.population_structure.cy2025.people.by_commune_nis2025.total", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c76fe4b075313027029e63c" + }, + "entity": "person", + "measure": "people", + "period": 2025, + "family": "geography_support", + "category_id": "statbel.geography_support", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_commune", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "geography_spine", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "nis_2025", + "geography_vintage_authority": "vintage:be_nis_2025", + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025" + } + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__lt100", + "ledger_selector": { + "source_name": "rsz_employment_daily_wage_class", + "source_measure_id": "employed_workers", + "source_concept": "rsz.employed_workers", + "entity_name": "person", + "period_type": "quarter", + "period_value": "2026-Q1", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": [ + "rsz.t17.2026Q1.1188cc8134270812.employed_workers", + "rsz.t17.2026Q1.9ae5b76f27368269.employed_workers" + ], + "dimensions": [ + "rsz.age_class", + "rsz.daily_wage_class", + "rsz.sex" + ], + "dimension_values": { + "rsz.age_class": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "rsz.daily_wage_class": "<100", + "rsz.sex": [ + "Man-Homme", + "Vrouw-Femme" + ] + } + }, + "entity": "person", + "measure": "people", + "period": "2026-Q1", + "family": "wage_distribution", + "category_id": "onss.wage_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "rsz_employed_workers_by_daily_wage_class", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "National Social Security Office", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": "quantile_surfaces.json", + "daily_wage_class": "<100", + "daily_wage_lower_eur": "0", + "daily_wage_upper_eur": "100", + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1" + }, + "value_operation": "sum", + "expected_member_count": 24, + "period_match_policy": "exact" + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__100_149", + "ledger_selector": { + "source_name": "rsz_employment_daily_wage_class", + "source_measure_id": "employed_workers", + "source_concept": "rsz.employed_workers", + "entity_name": "person", + "period_type": "quarter", + "period_value": "2026-Q1", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": [ + "rsz.t17.2026Q1.21ae2cbb5a415ab7.employed_workers", + "rsz.t17.2026Q1.f613cce38cd6ac76.employed_workers" + ], + "dimensions": [ + "rsz.age_class", + "rsz.daily_wage_class", + "rsz.sex" + ], + "dimension_values": { + "rsz.age_class": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "rsz.daily_wage_class": "100 - 149", + "rsz.sex": [ + "Man-Homme", + "Vrouw-Femme" + ] + } + }, + "entity": "person", + "measure": "people", + "period": "2026-Q1", + "family": "wage_distribution", + "category_id": "onss.wage_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "rsz_employed_workers_by_daily_wage_class", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "National Social Security Office", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": "quantile_surfaces.json", + "daily_wage_class": "100 - 149", + "daily_wage_lower_eur": "100", + "daily_wage_upper_eur": "150", + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1" + }, + "value_operation": "sum", + "expected_member_count": 24, + "period_match_policy": "exact" + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__150_199", + "ledger_selector": { + "source_name": "rsz_employment_daily_wage_class", + "source_measure_id": "employed_workers", + "source_concept": "rsz.employed_workers", + "entity_name": "person", + "period_type": "quarter", + "period_value": "2026-Q1", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": [ + "rsz.t17.2026Q1.506880f359444476.employed_workers", + "rsz.t17.2026Q1.f64c3c536965a178.employed_workers" + ], + "dimensions": [ + "rsz.age_class", + "rsz.daily_wage_class", + "rsz.sex" + ], + "dimension_values": { + "rsz.age_class": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "rsz.daily_wage_class": "150 - 199", + "rsz.sex": [ + "Man-Homme", + "Vrouw-Femme" + ] + } + }, + "entity": "person", + "measure": "people", + "period": "2026-Q1", + "family": "wage_distribution", + "category_id": "onss.wage_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "rsz_employed_workers_by_daily_wage_class", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "National Social Security Office", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": "quantile_surfaces.json", + "daily_wage_class": "150 - 199", + "daily_wage_lower_eur": "150", + "daily_wage_upper_eur": "200", + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1" + }, + "value_operation": "sum", + "expected_member_count": 24, + "period_match_policy": "exact" + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__200_299", + "ledger_selector": { + "source_name": "rsz_employment_daily_wage_class", + "source_measure_id": "employed_workers", + "source_concept": "rsz.employed_workers", + "entity_name": "person", + "period_type": "quarter", + "period_value": "2026-Q1", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": [ + "rsz.t17.2026Q1.1c66a4cf8d6a4661.employed_workers", + "rsz.t17.2026Q1.52f6d86d075b7bf2.employed_workers" + ], + "dimensions": [ + "rsz.age_class", + "rsz.daily_wage_class", + "rsz.sex" + ], + "dimension_values": { + "rsz.age_class": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "rsz.daily_wage_class": "200 - 299", + "rsz.sex": [ + "Man-Homme", + "Vrouw-Femme" + ] + } + }, + "entity": "person", + "measure": "people", + "period": "2026-Q1", + "family": "wage_distribution", + "category_id": "onss.wage_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "rsz_employed_workers_by_daily_wage_class", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "National Social Security Office", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": "quantile_surfaces.json", + "daily_wage_class": "200 - 299", + "daily_wage_lower_eur": "200", + "daily_wage_upper_eur": "300", + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1" + }, + "value_operation": "sum", + "expected_member_count": 24, + "period_match_policy": "exact" + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__300_plus", + "ledger_selector": { + "source_name": "rsz_employment_daily_wage_class", + "source_measure_id": "employed_workers", + "source_concept": "rsz.employed_workers", + "entity_name": "person", + "period_type": "quarter", + "period_value": "2026-Q1", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": [ + "rsz.t17.2026Q1.77d8f57d640d4a35.employed_workers", + "rsz.t17.2026Q1.d486ab8c44ecf644.employed_workers" + ], + "dimensions": [ + "rsz.age_class", + "rsz.daily_wage_class", + "rsz.sex" + ], + "dimension_values": { + "rsz.age_class": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "rsz.daily_wage_class": ">= 300", + "rsz.sex": [ + "Man-Homme", + "Vrouw-Femme" + ] + } + }, + "entity": "person", + "measure": "people", + "period": "2026-Q1", + "family": "wage_distribution", + "category_id": "onss.wage_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "rsz_employed_workers_by_daily_wage_class", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "National Social Security Office", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": "quantile_surfaces.json", + "daily_wage_class": ">= 300", + "daily_wage_lower_eur": "300", + "daily_wage_upper_eur": "open", + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1" + }, + "value_operation": "sum", + "expected_member_count": 24, + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__0_01_to_125", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "0,01 - 124,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a329f9e88fe6b479b5346f9" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "0,01 - 124,99", + "band_lower_eur": "0.01", + "band_upper_eur": "125", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__125_to_250", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "125,00 - 249,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb8dadc18d74f570c4a83e2f" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "125,00 - 249,99", + "band_lower_eur": "125", + "band_upper_eur": "250", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__250_to_375", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "250,00 - 374,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:a376ab9878e45b4b7f088ea8" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "250,00 - 374,99", + "band_lower_eur": "250", + "band_upper_eur": "375", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__375_to_500", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "375,00 - 499,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:b879e38f2b030f73f297e1a9" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "375,00 - 499,99", + "band_lower_eur": "375", + "band_upper_eur": "500", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__500_to_625", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "500,00 - 624,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b4e263d9ba2114a7e1a466b" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "500,00 - 624,99", + "band_lower_eur": "500", + "band_upper_eur": "625", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__625_to_750", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "625,00 - 749,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6bf6bc78e0aeda1fc8254c9" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "625,00 - 749,99", + "band_lower_eur": "625", + "band_upper_eur": "750", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__750_to_875", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "750,00 - 874,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f5fe0471cc0653d926831f2" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "750,00 - 874,99", + "band_lower_eur": "750", + "band_upper_eur": "875", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__875_to_1000", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "875,00 - 999,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:20497043bfbb6136b245fab5" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "875,00 - 999,99", + "band_lower_eur": "875", + "band_upper_eur": "1000", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1000_to_1125", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.000,00 - 1.124,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:06d79289f4647a9d753a768d" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.000,00 - 1.124,99", + "band_lower_eur": "1000", + "band_upper_eur": "1125", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1125_to_1250", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.125,00 - 1.249,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:242d02ac50fb3deb7796a77e" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.125,00 - 1.249,99", + "band_lower_eur": "1125", + "band_upper_eur": "1250", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1250_to_1375", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.250,00 - 1.374,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:6195ce9ba617b7ef577d5f90" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.250,00 - 1.374,99", + "band_lower_eur": "1250", + "band_upper_eur": "1375", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1375_to_1500", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.375,00 - 1.499,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:97059482c7e937bff0c1277c" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.375,00 - 1.499,99", + "band_lower_eur": "1375", + "band_upper_eur": "1500", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1500_to_1625", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.500,00 - 1.624,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa180f8491839a0ed146217a" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.500,00 - 1.624,99", + "band_lower_eur": "1500", + "band_upper_eur": "1625", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1625_to_1750", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.625,00 - 1.749,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:d95796c3e08766039aa7349c" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.625,00 - 1.749,99", + "band_lower_eur": "1625", + "band_upper_eur": "1750", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1750_to_1875", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.750,00 - 1.874,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:54681db12c3293b12d2daab5" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.750,00 - 1.874,99", + "band_lower_eur": "1750", + "band_upper_eur": "1875", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1875_to_2000", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "1.875,00 - 1.999,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a2eea074941d7a54a2e789d" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "1.875,00 - 1.999,99", + "band_lower_eur": "1875", + "band_upper_eur": "2000", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2000_to_2125", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.000,00 - 2.124,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:eea5796f87538354facdc49c" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.000,00 - 2.124,99", + "band_lower_eur": "2000", + "band_upper_eur": "2125", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2125_to_2250", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.125,00 - 2.249,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:9e87df8e8f8b31d2eff11469" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.125,00 - 2.249,99", + "band_lower_eur": "2125", + "band_upper_eur": "2250", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2250_to_2375", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.250,00 - 2.374,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:1820ed9cb42638dc4170b2d7" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.250,00 - 2.374,99", + "band_lower_eur": "2250", + "band_upper_eur": "2375", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2375_to_2500", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.375,00 - 2.499,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:591410af854a557f89f7edf5" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.375,00 - 2.499,99", + "band_lower_eur": "2375", + "band_upper_eur": "2500", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2500_to_2625", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.500,00 - 2.624,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:4667449d76329b02866aba0e" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.500,00 - 2.624,99", + "band_lower_eur": "2500", + "band_upper_eur": "2625", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2625_to_2750", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.625,00 - 2.749,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:c7ef88029d3ce938688d7b96" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.625,00 - 2.749,99", + "band_lower_eur": "2625", + "band_upper_eur": "2750", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2750_to_2875", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.750,00 - 2.874,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:267a02529de98c41d5818c2a" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.750,00 - 2.874,99", + "band_lower_eur": "2750", + "band_upper_eur": "2875", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2875_to_3000", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "2.875,00 - 2.999,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:635528f21094a6f8c4386fdd" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "2.875,00 - 2.999,99", + "band_lower_eur": "2875", + "band_upper_eur": "3000", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__3000_to_3125", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "3.000,00 - 3.124,99", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:5be67e88e151d6c1fdd42281" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "3.000,00 - 3.124,99", + "band_lower_eur": "3000", + "band_upper_eur": "3125", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__3125_plus", + "ledger_selector": { + "source_name": "sfpd_pension_amount_bands", + "source_measure_id": "recipients", + "source_concept": "sfpd.pension.recipients", + "entity_name": "person", + "period_type": "month", + "period_value": "2025-01", + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "dimensions": [ + "sfpd.career", + "sfpd.monthly_amount_band", + "sfpd.pension_category", + "sfpd.population", + "sfpd.sex" + ], + "dimension_values": { + "sfpd.career": "Alle loopbanen", + "sfpd.monthly_amount_band": "3.125,00 en >", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:e547cd6cf676ae86f66208e8" + }, + "entity": "person", + "measure": "people", + "period": "2025-01", + "family": "pension_distribution", + "category_id": "sfpd.pension_distribution", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "sfpd_legal_pension_recipients_by_monthly_amount_band", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Federal Pension Service", + "target_role": "pre_calibration", + "reference_set": "precal", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "parking_reason": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": "quantile_surfaces.json", + "monthly_amount_band": "3.125,00 en >", + "band_lower_eur": "3125", + "band_upper_eur": "open", + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025" + }, + "notes": "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile surface, but nothing may read them until shared rank_only support lands. The shared transport rule drops the donor's public pension, so a shared change, still to be agreed with the NZ hub, must keep the donor's receipt for ranking only, isolated from destination income, before Belgian amounts are assigned. d1902 also settles the pension route and how these monthly amounts are annualized.", + "period_match_policy": "exact" + } + ], + "target_profile": { + "schema_version": 1, + "hierarchy_reconciliations": [] + } +} diff --git a/packages/microcosm-build/src/microcosm/build/be/quantile_surfaces.json b/packages/microcosm-build/src/microcosm/build/be/quantile_surfaces.json new file mode 100644 index 0000000000..bb5217836d --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/quantile_surfaces.json @@ -0,0 +1,443 @@ +{ + "schema_version": 1, + "country": "be", + "generated_by": "tools/generate_be_target_references.py", + "description": "BE-MC3's quantile-map surfaces (B4a), proposed pending d1902. Each band_document is the bands parameter transport.quantile_map@1 takes verbatim; its references name precal_references.json rows, which compile into the target surface the kernel reads. Everything else stays outside band_document, because the kernel refuses any key beside its band lists. No graph reads this resource: Belgium has no transport_graph.json and stays inactive. Counts stay in Chronicle; reference_inventory.json records the evidence.", + "status": "proposed_pending_d1902", + "method_card_row": "BE-MC3", + "reference_resource": "precal_references.json", + "wages": { + "status": "proposed_pending_d1902", + "activation": "Not read by any graph. Nothing may map donor wages onto these edges until d1902 picks the annual-to-daily conversion and the coverage rule (choices 21 to 23).", + "ranked_entity": "person", + "donor_column": "employment_income", + "unit": "eur_per_day", + "source_period": "2026-Q1", + "source": "RSZ/ONSS quarterly labour-market tables, T17 (daily-wage class, age and sex), record set spec rsz.t17.daily_wage_class.v1, measure employed_workers", + "cohort": "Employees registered with RSZ/ONSS at the end of the first quarter of 2026, a quarter-end stock on 31 March 2026. Chronicle's coverage note: it counts inbound cross-border workers and leaves out posted workers and the self-employed. BE-MC3 records that the classes rank normalized daily pay of the main job, without bonuses, 13th month or double holiday pay. It is not a distribution of resident earners over a year.", + "coverage": "The five known-pay classes only. T17's unknown-pay class (Onbekend-Inconnu) has no numeric interval and gets no band, so the shares rank known pay only (d1902 choice 22).", + "conversion": "The donor's employment_income is annual gross pay from all employee jobs, bonuses included; these edges are euros a day. Nothing may map donor wages onto them until d1902 picks the annual-to-daily conversion (choice 23).", + "edge_closure": "Left-closed: each class runs from its printed lower bound up to the next class's lower bound, so '100 - 149' is [100, 150).", + "top_band": "Open from EUR 300 a day. Uniform interpolation refuses an open top band; the tail is d1902 choice 24.", + "band_provenance": [ + { + "reference": "rsz_employed_workers_by_daily_wage_class__lt100", + "printed_label": "<100", + "lower": 0, + "upper": 100 + }, + { + "reference": "rsz_employed_workers_by_daily_wage_class__100_149", + "printed_label": "100 - 149", + "lower": 100, + "upper": 150 + }, + { + "reference": "rsz_employed_workers_by_daily_wage_class__150_199", + "printed_label": "150 - 199", + "lower": 150, + "upper": 200 + }, + { + "reference": "rsz_employed_workers_by_daily_wage_class__200_299", + "printed_label": "200 - 299", + "lower": 200, + "upper": 300 + }, + { + "reference": "rsz_employed_workers_by_daily_wage_class__300_plus", + "printed_label": ">= 300", + "lower": 300, + "upper": null + } + ], + "band_document": { + "bands": [ + { + "lower": 0, + "upper": 100, + "reference": "rsz_employed_workers_by_daily_wage_class__lt100" + }, + { + "lower": 100, + "upper": 150, + "reference": "rsz_employed_workers_by_daily_wage_class__100_149" + }, + { + "lower": 150, + "upper": 200, + "reference": "rsz_employed_workers_by_daily_wage_class__150_199" + }, + { + "lower": 200, + "upper": 300, + "reference": "rsz_employed_workers_by_daily_wage_class__200_299" + }, + { + "lower": 300, + "upper": null, + "reference": "rsz_employed_workers_by_daily_wage_class__300_plus" + } + ] + } + }, + "legal_pensions": { + "status": "proposed_pending_d1902", + "activation": "Parked: its references carry activation_status requires_pension_route_d1902 and refuse compilation until shared rank_only support lands and d1902 settles the pension route (choice 25).", + "ranked_entity": "person", + "donor_column": null, + "donor_column_note": "None yet: the shared transport rule drops the donor's public_pension_income, so no donor column carries pension ranks until shared rank_only support keeps the receipt for ranking only.", + "unit": "eur_per_month", + "source_period": "2025-01", + "source": "SFPD Jaarlijkse statistiek 2025, amount bands of group 1, record set sfpd.amount_bands.jan2025.group1.recipients", + "cohort": "Legal-pension beneficiaries of the employee and self-employed schemes, all careers, pension categories and sexes, a stock on 1 January 2025.", + "coverage": "Gross monthly payment. Includes beneficiaries residing abroad and excludes public-sector pension amounts. The Totaal row and the monthly_expenditure_eur measure are not bands.", + "annualization": "Monthly euros, not annualized. Multiplying January by 12 repeats one month's amount rather than observing an annual pension; it is d1902's choice (25) and is not applied here.", + "edge_closure": "Chronicle bounds each band lower <= amount <= upper in cents; each surface band runs half-open to the next band's lower bound, one cent above, so '0,01 - 124,99' is [0.01, 125).", + "top_band": "Open from EUR 3,125 a month. Uniform interpolation refuses an open top band, and no d1902 choice yet names the pension tail.", + "band_provenance": [ + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__0_01_to_125", + "printed_label": "0,01 - 124,99", + "source_lower_eur": "0.01", + "source_upper_eur": "124.99", + "lower": 0.01, + "upper": 125 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__125_to_250", + "printed_label": "125,00 - 249,99", + "source_lower_eur": "125", + "source_upper_eur": "249.99", + "lower": 125, + "upper": 250 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__250_to_375", + "printed_label": "250,00 - 374,99", + "source_lower_eur": "250", + "source_upper_eur": "374.99", + "lower": 250, + "upper": 375 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__375_to_500", + "printed_label": "375,00 - 499,99", + "source_lower_eur": "375", + "source_upper_eur": "499.99", + "lower": 375, + "upper": 500 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__500_to_625", + "printed_label": "500,00 - 624,99", + "source_lower_eur": "500", + "source_upper_eur": "624.99", + "lower": 500, + "upper": 625 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__625_to_750", + "printed_label": "625,00 - 749,99", + "source_lower_eur": "625", + "source_upper_eur": "749.99", + "lower": 625, + "upper": 750 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__750_to_875", + "printed_label": "750,00 - 874,99", + "source_lower_eur": "750", + "source_upper_eur": "874.99", + "lower": 750, + "upper": 875 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__875_to_1000", + "printed_label": "875,00 - 999,99", + "source_lower_eur": "875", + "source_upper_eur": "999.99", + "lower": 875, + "upper": 1000 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1000_to_1125", + "printed_label": "1.000,00 - 1.124,99", + "source_lower_eur": "1000", + "source_upper_eur": "1124.99", + "lower": 1000, + "upper": 1125 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1125_to_1250", + "printed_label": "1.125,00 - 1.249,99", + "source_lower_eur": "1125", + "source_upper_eur": "1249.99", + "lower": 1125, + "upper": 1250 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1250_to_1375", + "printed_label": "1.250,00 - 1.374,99", + "source_lower_eur": "1250", + "source_upper_eur": "1374.99", + "lower": 1250, + "upper": 1375 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1375_to_1500", + "printed_label": "1.375,00 - 1.499,99", + "source_lower_eur": "1375", + "source_upper_eur": "1499.99", + "lower": 1375, + "upper": 1500 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1500_to_1625", + "printed_label": "1.500,00 - 1.624,99", + "source_lower_eur": "1500", + "source_upper_eur": "1624.99", + "lower": 1500, + "upper": 1625 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1625_to_1750", + "printed_label": "1.625,00 - 1.749,99", + "source_lower_eur": "1625", + "source_upper_eur": "1749.99", + "lower": 1625, + "upper": 1750 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1750_to_1875", + "printed_label": "1.750,00 - 1.874,99", + "source_lower_eur": "1750", + "source_upper_eur": "1874.99", + "lower": 1750, + "upper": 1875 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1875_to_2000", + "printed_label": "1.875,00 - 1.999,99", + "source_lower_eur": "1875", + "source_upper_eur": "1999.99", + "lower": 1875, + "upper": 2000 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2000_to_2125", + "printed_label": "2.000,00 - 2.124,99", + "source_lower_eur": "2000", + "source_upper_eur": "2124.99", + "lower": 2000, + "upper": 2125 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2125_to_2250", + "printed_label": "2.125,00 - 2.249,99", + "source_lower_eur": "2125", + "source_upper_eur": "2249.99", + "lower": 2125, + "upper": 2250 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2250_to_2375", + "printed_label": "2.250,00 - 2.374,99", + "source_lower_eur": "2250", + "source_upper_eur": "2374.99", + "lower": 2250, + "upper": 2375 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2375_to_2500", + "printed_label": "2.375,00 - 2.499,99", + "source_lower_eur": "2375", + "source_upper_eur": "2499.99", + "lower": 2375, + "upper": 2500 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2500_to_2625", + "printed_label": "2.500,00 - 2.624,99", + "source_lower_eur": "2500", + "source_upper_eur": "2624.99", + "lower": 2500, + "upper": 2625 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2625_to_2750", + "printed_label": "2.625,00 - 2.749,99", + "source_lower_eur": "2625", + "source_upper_eur": "2749.99", + "lower": 2625, + "upper": 2750 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2750_to_2875", + "printed_label": "2.750,00 - 2.874,99", + "source_lower_eur": "2750", + "source_upper_eur": "2874.99", + "lower": 2750, + "upper": 2875 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2875_to_3000", + "printed_label": "2.875,00 - 2.999,99", + "source_lower_eur": "2875", + "source_upper_eur": "2999.99", + "lower": 2875, + "upper": 3000 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3000_to_3125", + "printed_label": "3.000,00 - 3.124,99", + "source_lower_eur": "3000", + "source_upper_eur": "3124.99", + "lower": 3000, + "upper": 3125 + }, + { + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3125_plus", + "printed_label": "3.125,00 en >", + "source_lower_eur": "3125", + "source_upper_eur": null, + "lower": 3125, + "upper": null + } + ], + "band_document": { + "bands": [ + { + "lower": 0.01, + "upper": 125, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__0_01_to_125" + }, + { + "lower": 125, + "upper": 250, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__125_to_250" + }, + { + "lower": 250, + "upper": 375, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__250_to_375" + }, + { + "lower": 375, + "upper": 500, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__375_to_500" + }, + { + "lower": 500, + "upper": 625, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__500_to_625" + }, + { + "lower": 625, + "upper": 750, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__625_to_750" + }, + { + "lower": 750, + "upper": 875, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__750_to_875" + }, + { + "lower": 875, + "upper": 1000, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__875_to_1000" + }, + { + "lower": 1000, + "upper": 1125, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1000_to_1125" + }, + { + "lower": 1125, + "upper": 1250, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1125_to_1250" + }, + { + "lower": 1250, + "upper": 1375, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1250_to_1375" + }, + { + "lower": 1375, + "upper": 1500, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1375_to_1500" + }, + { + "lower": 1500, + "upper": 1625, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1500_to_1625" + }, + { + "lower": 1625, + "upper": 1750, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1625_to_1750" + }, + { + "lower": 1750, + "upper": 1875, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1750_to_1875" + }, + { + "lower": 1875, + "upper": 2000, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1875_to_2000" + }, + { + "lower": 2000, + "upper": 2125, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2000_to_2125" + }, + { + "lower": 2125, + "upper": 2250, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2125_to_2250" + }, + { + "lower": 2250, + "upper": 2375, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2250_to_2375" + }, + { + "lower": 2375, + "upper": 2500, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2375_to_2500" + }, + { + "lower": 2500, + "upper": 2625, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2500_to_2625" + }, + { + "lower": 2625, + "upper": 2750, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2625_to_2750" + }, + { + "lower": 2750, + "upper": 2875, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2750_to_2875" + }, + { + "lower": 2875, + "upper": 3000, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2875_to_3000" + }, + { + "lower": 3000, + "upper": 3125, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3000_to_3125" + }, + { + "lower": 3125, + "upper": null, + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3125_plus" + } + ] + } + } +} diff --git a/packages/microcosm-build/src/microcosm/build/be/reference_aging.json b/packages/microcosm-build/src/microcosm/build/be/reference_aging.json new file mode 100644 index 0000000000..672bf14f7b --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/reference_aging.json @@ -0,0 +1,762 @@ +{ + "schema_version": 1, + "feed_identity": { + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112 + }, + "factors": [ + { + "declaration": { + "schema_version": 1, + "id": "rsz_ordinary_remuneration_cy2023_to_cy2025_observed", + "operation": "projected_period_average_ratio", + "operation_version": 1, + "purpose": "diagnostic", + "feed_identity": { + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112 + }, + "source_period": 2023, + "target_period": 2025, + "source_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2023.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c0d2f4c10c54cee45e5777b", + "assertion": "observation" + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2023-01-01", + "end_date": "2023-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "weight": "1", + "sequence": 0 + } + ], + "target_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2025.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "assertion": "observation" + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2025-01-01", + "end_date": "2025-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "weight": "1", + "sequence": 0, + "projection_offset": 0 + } + ], + "growth": null, + "subperiods_per_year": 1, + "projection_policy": "observed_preferred_latest_contiguous", + "rounding": { + "digits": 6, + "mode": "nearest_half_even" + }, + "expected_operational_factor": { + "numerator": 1063921, + "denominator": 1000000 + }, + "validity": { + "declared_on": "2026-11-01", + "valid_from": "2026-11-01", + "valid_until": "2027-06-30", + "as_of": "2026-11-01" + }, + "evidence": [ + "RSZ/ONSS annual wages key figures (Kerncijfers), ordinary remuneration, all employees, calendar years; pre-publication raw data, 2024-2025 not final", + "Diagnostic cross-check of the observed segment of FPB wage-driven ratio pairs; never a profile or money normalization input" + ], + "decision_references": [ + "BE-MC0 (proposed pending d1902): targets rolled to 2026 by FPB June 2026 ratio pairs", + "G8-r2 factor resolver: projected_period_average_ratio@1" + ] + }, + "operational_factor": { + "numerator": 1063921, + "denominator": 1000000 + }, + "receipt": { + "schema_version": 1, + "operation": "projected_period_average_ratio", + "operation_version": 1, + "factor_id": "rsz_ordinary_remuneration_cy2023_to_cy2025_observed", + "declaration_sha256": "12c72b7401ea0eb9784508e783f41970f08cbf548cc4615d2484721aa87ee2c6", + "feed_identity": { + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112 + }, + "source_period": 2023, + "target_period": 2025, + "source_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2023.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c0d2f4c10c54cee45e5777b", + "assertion": "observation" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c0d2f4c10c54cee45e5777b", + "decimal_operand": "160796591.5", + "numeric_token_proof": { + "numeric_representation": "binary_float_with_lexical_token", + "lexical_token": "160796591.5", + "recovered_decimal": "160796591.5", + "decimal_values_equal": true + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2023-01-01", + "end_date": "2023-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "period": { + "type": "calendar_year", + "value": 2023 + }, + "source": { + "extracted_at": "2026-10-24", + "extraction_method": "CellSelectorSpec and SourceRecordSpec resolved from cells", + "method_notes": "Each fact carries source_record_id, source_cell_keys, and source_row_keys when available.", + "raw_r2_bucket": "ledger-raw", + "raw_r2_key": "raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "raw_r2_uri": "r2://ledger-raw/raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "source_file": "annual_wages_key_figures_2020_2025.csv", + "source_name": "rsz_annual_wages_key_figures", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_size_bytes": 68891, + "source_table": "Lonen en bezoldigde prestaties, Kerncijfers-Chiffres Clés, 2020–2025", + "url": "https://www.rsz.be/file/6103c41969844d308979992d7f84d51e59927e1e/c4c5776181e3dd24273ecb6b9486065cb468fadb/ruwedata-donneesbrutes-periods-wages.xlsx", + "vintage": "rsz_raw_wages_prepublication_2026_10_22" + }, + "unit": "EUR_thousands", + "assertion": "observation", + "provenance_class": "administrative", + "entity_role": "employee", + "period_coverage": { + "basis": "calendar", + "end_date": "2023-12-31", + "notes": "Calendar-year remuneration or paid days/hours; pre-publication raw data, landing page updated 22/10/2026. The 2024–2025 figures are not described as final. RSZ-registered employment in Belgium; includes inbound cross-border workers, excludes posted workers and self-employed people. Administrative employment population differs from Statbel fiscal declarations.", + "source_period_label": "2023", + "start_date": "2023-01-01" + }, + "weight": "1", + "sequence": 0 + } + ], + "target_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2025.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "assertion": "observation" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "decimal_operand": "171074878.6", + "numeric_token_proof": { + "numeric_representation": "binary_float_with_lexical_token", + "lexical_token": "171074878.6", + "recovered_decimal": "171074878.6", + "decimal_values_equal": true + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2025-01-01", + "end_date": "2025-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "period": { + "type": "calendar_year", + "value": 2025 + }, + "source": { + "extracted_at": "2026-10-24", + "extraction_method": "CellSelectorSpec and SourceRecordSpec resolved from cells", + "method_notes": "Each fact carries source_record_id, source_cell_keys, and source_row_keys when available.", + "raw_r2_bucket": "ledger-raw", + "raw_r2_key": "raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "raw_r2_uri": "r2://ledger-raw/raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "source_file": "annual_wages_key_figures_2020_2025.csv", + "source_name": "rsz_annual_wages_key_figures", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_size_bytes": 68891, + "source_table": "Lonen en bezoldigde prestaties, Kerncijfers-Chiffres Clés, 2020–2025", + "url": "https://www.rsz.be/file/6103c41969844d308979992d7f84d51e59927e1e/c4c5776181e3dd24273ecb6b9486065cb468fadb/ruwedata-donneesbrutes-periods-wages.xlsx", + "vintage": "rsz_raw_wages_prepublication_2026_10_22" + }, + "unit": "EUR_thousands", + "assertion": "observation", + "provenance_class": "administrative", + "entity_role": "employee", + "period_coverage": { + "basis": "calendar", + "end_date": "2025-12-31", + "notes": "Calendar-year remuneration or paid days/hours; pre-publication raw data, landing page updated 22/10/2026. The 2024–2025 figures are not described as final. RSZ-registered employment in Belgium; includes inbound cross-border workers, excludes posted workers and self-employed people. Administrative employment population differs from Statbel fiscal declarations.", + "source_period_label": "2025", + "start_date": "2025-01-01" + }, + "status": "observed", + "sequence": 0, + "weight": "1", + "projection_offset": 0 + } + ], + "subperiods_per_year": 1, + "projection_policy": "observed_preferred_latest_contiguous", + "denominator_mean": { + "numerator": 321593183, + "denominator": 2 + }, + "growth": null, + "root_bounds": { + "lower": { + "numerator": 1, + "denominator": 1 + }, + "upper": { + "numerator": 1, + "denominator": 1 + }, + "exact": true, + "decimal_places": 14, + "degree": 1, + "radicand": { + "numerator": 1, + "denominator": 1 + } + }, + "numerator_mean_bounds": { + "lower": { + "numerator": 855374393, + "denominator": 5 + }, + "upper": { + "numerator": 855374393, + "denominator": 5 + } + }, + "unrounded_factor_bounds": { + "lower": { + "numerator": 1710748786, + "denominator": 1607965915 + }, + "upper": { + "numerator": 1710748786, + "denominator": 1607965915 + } + }, + "rounding": { + "digits": 6, + "mode": "nearest_half_even" + }, + "operational_factor": { + "numerator": 1063921, + "denominator": 1000000 + }, + "validity": { + "declared_on": "2026-11-01", + "valid_from": "2026-11-01", + "valid_until": "2027-06-30", + "as_of": "2026-11-01" + }, + "evidence": [ + "RSZ/ONSS annual wages key figures (Kerncijfers), ordinary remuneration, all employees, calendar years; pre-publication raw data, 2024-2025 not final", + "Diagnostic cross-check of the observed segment of FPB wage-driven ratio pairs; never a profile or money normalization input" + ], + "decision_references": [ + "BE-MC0 (proposed pending d1902): targets rolled to 2026 by FPB June 2026 ratio pairs", + "G8-r2 factor resolver: projected_period_average_ratio@1" + ], + "receipt_sha256": "0c6b93472a6c4e8a3510bc83106a49d25b71e6729c04e16b154e94b053fac36d" + } + }, + { + "declaration": { + "schema_version": 1, + "id": "rsz_ordinary_remuneration_cy2024_to_cy2025_observed", + "operation": "projected_period_average_ratio", + "operation_version": 1, + "purpose": "diagnostic", + "feed_identity": { + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112 + }, + "source_period": 2024, + "target_period": 2025, + "source_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2024.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fff2864b2ff60754bce8bfcf", + "assertion": "observation" + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2024-01-01", + "end_date": "2024-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "weight": "1", + "sequence": 0 + } + ], + "target_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2025.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "assertion": "observation" + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2025-01-01", + "end_date": "2025-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "weight": "1", + "sequence": 0, + "projection_offset": 0 + } + ], + "growth": null, + "subperiods_per_year": 1, + "projection_policy": "observed_preferred_latest_contiguous", + "rounding": { + "digits": 6, + "mode": "nearest_half_even" + }, + "expected_operational_factor": { + "numerator": 1032192, + "denominator": 1000000 + }, + "validity": { + "declared_on": "2026-11-01", + "valid_from": "2026-11-01", + "valid_until": "2027-06-30", + "as_of": "2026-11-01" + }, + "evidence": [ + "RSZ/ONSS annual wages key figures (Kerncijfers), ordinary remuneration, all employees, calendar years; pre-publication raw data, 2024-2025 not final", + "Diagnostic cross-check of the observed segment of FPB wage-driven ratio pairs; never a profile or money normalization input" + ], + "decision_references": [ + "BE-MC0 (proposed pending d1902): targets rolled to 2026 by FPB June 2026 ratio pairs", + "G8-r2 factor resolver: projected_period_average_ratio@1" + ] + }, + "operational_factor": { + "numerator": 1032192, + "denominator": 1000000 + }, + "receipt": { + "schema_version": 1, + "operation": "projected_period_average_ratio", + "operation_version": 1, + "factor_id": "rsz_ordinary_remuneration_cy2024_to_cy2025_observed", + "declaration_sha256": "d44873e9991fb138a9a8d2d734c6fc001c73d17fdb85752dfd0443b7b474e6d5", + "feed_identity": { + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112 + }, + "source_period": 2024, + "target_period": 2025, + "source_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2024.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fff2864b2ff60754bce8bfcf", + "assertion": "observation" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fff2864b2ff60754bce8bfcf", + "decimal_operand": "165739460", + "numeric_token_proof": { + "numeric_representation": "exact_integer", + "lexical_token": "165739460", + "recovered_decimal": "165739460", + "decimal_values_equal": true + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2024-01-01", + "end_date": "2024-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "period": { + "type": "calendar_year", + "value": 2024 + }, + "source": { + "extracted_at": "2026-10-24", + "extraction_method": "CellSelectorSpec and SourceRecordSpec resolved from cells", + "method_notes": "Each fact carries source_record_id, source_cell_keys, and source_row_keys when available.", + "raw_r2_bucket": "ledger-raw", + "raw_r2_key": "raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "raw_r2_uri": "r2://ledger-raw/raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "source_file": "annual_wages_key_figures_2020_2025.csv", + "source_name": "rsz_annual_wages_key_figures", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_size_bytes": 68891, + "source_table": "Lonen en bezoldigde prestaties, Kerncijfers-Chiffres Clés, 2020–2025", + "url": "https://www.rsz.be/file/6103c41969844d308979992d7f84d51e59927e1e/c4c5776181e3dd24273ecb6b9486065cb468fadb/ruwedata-donneesbrutes-periods-wages.xlsx", + "vintage": "rsz_raw_wages_prepublication_2026_10_22" + }, + "unit": "EUR_thousands", + "assertion": "observation", + "provenance_class": "administrative", + "entity_role": "employee", + "period_coverage": { + "basis": "calendar", + "end_date": "2024-12-31", + "notes": "Calendar-year remuneration or paid days/hours; pre-publication raw data, landing page updated 22/10/2026. The 2024–2025 figures are not described as final. RSZ-registered employment in Belgium; includes inbound cross-border workers, excludes posted workers and self-employed people. Administrative employment population differs from Statbel fiscal declarations.", + "source_period_label": "2024", + "start_date": "2024-01-01" + }, + "weight": "1", + "sequence": 0 + } + ], + "target_schedule": [ + { + "selector": { + "source_name": "rsz_annual_wages_key_figures", + "source_measure_id": "ordinary_remuneration", + "source_concept": "rsz.annual_wages.ordinary_remuneration", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "rsz.annual_wages.year2025.ordinary_remuneration", + "dimensions": [ + "rsz.annual_worker_type_sex" + ], + "dimension_values": { + "rsz.annual_worker_type_sex": "total" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "assertion": "observation" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98", + "decimal_operand": "171074878.6", + "numeric_token_proof": { + "numeric_representation": "binary_float_with_lexical_token", + "lexical_token": "171074878.6", + "recovered_decimal": "171074878.6", + "decimal_values_equal": true + }, + "validation": { + "unit": "EUR_thousands", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_vintage": "rsz_raw_wages_prepublication_2026_10_22", + "entity_role": "employee", + "provenance_class": "administrative", + "assertion": "observation", + "period_coverage": { + "start_date": "2025-01-01", + "end_date": "2025-12-31" + }, + "source_column_id": "ordinary_remuneration" + }, + "period": { + "type": "calendar_year", + "value": 2025 + }, + "source": { + "extracted_at": "2026-10-24", + "extraction_method": "CellSelectorSpec and SourceRecordSpec resolved from cells", + "method_notes": "Each fact carries source_record_id, source_cell_keys, and source_row_keys when available.", + "raw_r2_bucket": "ledger-raw", + "raw_r2_key": "raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "raw_r2_uri": "r2://ledger-raw/raw/belgium/rsz-annual-wages-key-figures-2020-2025/2025/7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97/annual_wages_key_figures_2020_2025.csv", + "source_file": "annual_wages_key_figures_2020_2025.csv", + "source_name": "rsz_annual_wages_key_figures", + "source_sha256": "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97", + "source_size_bytes": 68891, + "source_table": "Lonen en bezoldigde prestaties, Kerncijfers-Chiffres Clés, 2020–2025", + "url": "https://www.rsz.be/file/6103c41969844d308979992d7f84d51e59927e1e/c4c5776181e3dd24273ecb6b9486065cb468fadb/ruwedata-donneesbrutes-periods-wages.xlsx", + "vintage": "rsz_raw_wages_prepublication_2026_10_22" + }, + "unit": "EUR_thousands", + "assertion": "observation", + "provenance_class": "administrative", + "entity_role": "employee", + "period_coverage": { + "basis": "calendar", + "end_date": "2025-12-31", + "notes": "Calendar-year remuneration or paid days/hours; pre-publication raw data, landing page updated 22/10/2026. The 2024–2025 figures are not described as final. RSZ-registered employment in Belgium; includes inbound cross-border workers, excludes posted workers and self-employed people. Administrative employment population differs from Statbel fiscal declarations.", + "source_period_label": "2025", + "start_date": "2025-01-01" + }, + "status": "observed", + "sequence": 0, + "weight": "1", + "projection_offset": 0 + } + ], + "subperiods_per_year": 1, + "projection_policy": "observed_preferred_latest_contiguous", + "denominator_mean": { + "numerator": 165739460, + "denominator": 1 + }, + "growth": null, + "root_bounds": { + "lower": { + "numerator": 1, + "denominator": 1 + }, + "upper": { + "numerator": 1, + "denominator": 1 + }, + "exact": true, + "decimal_places": 14, + "degree": 1, + "radicand": { + "numerator": 1, + "denominator": 1 + } + }, + "numerator_mean_bounds": { + "lower": { + "numerator": 855374393, + "denominator": 5 + }, + "upper": { + "numerator": 855374393, + "denominator": 5 + } + }, + "unrounded_factor_bounds": { + "lower": { + "numerator": 855374393, + "denominator": 828697300 + }, + "upper": { + "numerator": 855374393, + "denominator": 828697300 + } + }, + "rounding": { + "digits": 6, + "mode": "nearest_half_even" + }, + "operational_factor": { + "numerator": 1032192, + "denominator": 1000000 + }, + "validity": { + "declared_on": "2026-11-01", + "valid_from": "2026-11-01", + "valid_until": "2027-06-30", + "as_of": "2026-11-01" + }, + "evidence": [ + "RSZ/ONSS annual wages key figures (Kerncijfers), ordinary remuneration, all employees, calendar years; pre-publication raw data, 2024-2025 not final", + "Diagnostic cross-check of the observed segment of FPB wage-driven ratio pairs; never a profile or money normalization input" + ], + "decision_references": [ + "BE-MC0 (proposed pending d1902): targets rolled to 2026 by FPB June 2026 ratio pairs", + "G8-r2 factor resolver: projected_period_average_ratio@1" + ], + "receipt_sha256": "1fa388f0c5b6d3ad8e01f7a0c3355155e5aacc84b710ee4f49b137a2b98d2b9c" + } + } + ] +} diff --git a/packages/microcosm-build/src/microcosm/build/be/reference_intervals.json b/packages/microcosm-build/src/microcosm/build/be/reference_intervals.json new file mode 100644 index 0000000000..bf5081a8b8 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/reference_intervals.json @@ -0,0 +1,92 @@ +{ + "schema_version": 1, + "country": "be", + "description": "Generated by tools/generate_be_target_references.py from the class bounds Chronicle publishes on Statbel A.1 (universe constraints), checked to tile A.1's positive range without gaps.", + "disclosure": "Statbel's labels ('Minder dan 1', '1-2', '100 en meer') do not state a closure; Chronicle's A.1 universe constraints do: 0 < t < 1,000, then lower <= t < upper, and t >= 100,000 for the open top class. The table follows them: left-closed positive bands, a nil band for t == 0 (Statbel counts zero-income declarations outside A.1, and no reference fits the nil band, because the proxy's zeros are not Statbel's zeros), negative proxy income floored to zero, integer cents. Cuts are income-year-2023 euros and are not aged: no shared operation scales them by a declared annual ratio pair, so the A.1 references stay parked (BE-MC5, d1952; proposed pending d1902).", + "tables": [ + { + "id": "statbel_a1_standin_bands_iy2023", + "entity": "tax_unit", + "currency": "EUR", + "input_unit": "integer_cent", + "income_column": "statbel_net_taxable_income_proxy_v1_cents", + "universe_column": "statbel_net_taxable_income_proxy_v1_universe_status", + "source_period": 2023, + "target_period": 2026, + "positive_band_closure": "left", + "nil_band": "present", + "negative_income_policy": "floor_zero", + "first_lower_cut_cents": 0, + "source_locator": "Chronicle statbel.fiscal_income_distribution.a1.by_income_class_eur1000.v1, Belgium, taxable income classes", + "description": "The eight d1952 stand-in bands of total net taxable income, income year 2023, each an exact sum of A.1 EUR 1,000 classes.", + "diagnostics": { + "boundary_window_cents": 100, + "alternative_positive_band_closure": "right" + }, + "bands": [ + { + "id": "nil", + "kind": "nil", + "indicator": "statbel_a1_standin_nil_indicator", + "source_label": "zero total net taxable income (outside A.1)" + }, + { + "id": "under_10k", + "kind": "positive", + "upper_cent": 1000000, + "indicator": "statbel_a1_standin_band_under_10k_indicator", + "source_label": "A.1 classes class_under_1 to class_9_10" + }, + { + "id": "10k_20k", + "kind": "positive", + "upper_cent": 2000000, + "indicator": "statbel_a1_standin_band_10k_20k_indicator", + "source_label": "A.1 classes class_10_11 to class_19_20" + }, + { + "id": "20k_30k", + "kind": "positive", + "upper_cent": 3000000, + "indicator": "statbel_a1_standin_band_20k_30k_indicator", + "source_label": "A.1 classes class_20_21 to class_29_30" + }, + { + "id": "30k_40k", + "kind": "positive", + "upper_cent": 4000000, + "indicator": "statbel_a1_standin_band_30k_40k_indicator", + "source_label": "A.1 classes class_30_31 to class_39_40" + }, + { + "id": "40k_50k", + "kind": "positive", + "upper_cent": 5000000, + "indicator": "statbel_a1_standin_band_40k_50k_indicator", + "source_label": "A.1 classes class_40_41 to class_49_50" + }, + { + "id": "50k_75k", + "kind": "positive", + "upper_cent": 7500000, + "indicator": "statbel_a1_standin_band_50k_75k_indicator", + "source_label": "A.1 classes class_50_51 to class_74_75" + }, + { + "id": "75k_100k", + "kind": "positive", + "upper_cent": 10000000, + "indicator": "statbel_a1_standin_band_75k_100k_indicator", + "source_label": "A.1 classes class_75_76 to class_99_100" + }, + { + "id": "100k_plus", + "kind": "positive", + "upper_cent": null, + "indicator": "statbel_a1_standin_band_100k_plus_indicator", + "source_label": "A.1 classes class_100_plus to class_100_plus" + } + ] + } + ] +} diff --git a/packages/microcosm-build/src/microcosm/build/be/reference_inventory.json b/packages/microcosm-build/src/microcosm/build/be/reference_inventory.json new file mode 100644 index 0000000000..7c27c8de09 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/reference_inventory.json @@ -0,0 +1,14687 @@ +{ + "schema_version": 1, + "country": "be", + "generated_by": "tools/generate_be_target_references.py", + "feed_identity": { + "version": 1, + "country": "be", + "scope": "be_calibration", + "source_repo": "PolicyEngine/chronicle", + "source_commit": "2c7e8357f1dcb9af2337c10d6cf4cbd82b1e55ef", + "build": "build-bundle --suite be -> build-consumer-artifact", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "consumer_fact_schema_versions": [ + "chronicle.consumer_fact.v4" + ], + "consumer_fact_schema_sha256": "d953306d6f01fbc64db4372d0262d3012ee590269f8a25b276b18dca0626c6a0", + "fact_row_count": 87112, + "facts_sha256": "e01a463065a81ba60139a24a605e52797442504478be60970e0ff66f9d3c6b95", + "manifest_sha256": "7839792643a6a32a1784328644df16c250e8d4ba08287c455983a6e7ceebb34c" + }, + "policy_year": 2026, + "method_card_status": "BE-MC0, BE-MC3 to BE-MC6 proposed pending d1902; nothing publishes a number", + "reference_counts": { + "target_references.json": { + "total": 60, + "by_family": { + "demography": 18, + "fiscal_income": 18, + "income_tax": 19, + "social_security": 1, + "caseloads": 1, + "benefit_expenditure": 2, + "self_employment": 1 + }, + "by_contract": { + "statbel_population_by_region_sex_age": 18, + "statbel_a1_standin_declarations_by_band": 8, + "statbel_a1_standin_taxable_income_by_band": 8, + "statbel_b4_declarations_by_type": 2, + "statbel_b1_enrolled_tax_by_rank_group": 19, + "onss_worker_personal_contributions": 1, + "onem_complete_unemployment_recipients": 1, + "fpb_unemployment_benefit_expenditure": 1, + "fpb_grapa_expenditure": 1, + "fpb_net_mixed_income": 1 + }, + "by_activation_status": { + "active": 18, + "requires_prerequisites": 16, + "requires_declared_tax_units": 2, + "inactive_pending_b1_checks": 19, + "requires_rules_binding": 1, + "requires_ageing_ruling_and_receipt_binding": 1, + "requires_receipt_contract_and_rules_binding": 1, + "requires_pension_route_d1902": 1, + "requires_currency_bridge_b4": 1 + } + }, + "precal_references.json": { + "total": 596, + "by_family": { + "geography_support": 565, + "wage_distribution": 5, + "pension_distribution": 26 + }, + "by_contract": { + "statbel_population_by_commune": 565, + "rsz_employed_workers_by_daily_wage_class": 5, + "sfpd_legal_pension_recipients_by_monthly_amount_band": 26 + }, + "by_activation_status": { + "active": 570, + "requires_pension_route_d1902": 26 + } + }, + "holdout_references.json": { + "total": 7, + "by_family": { + "income_tax": 1, + "national_accounts": 1, + "household_accounts": 5 + }, + "by_contract": { + "eurostat_d51a_c1_individual_income_tax": 1, + "nbb_household_gross_disposable_income": 1, + "eurostat_household_gross_disposable_income": 1, + "eurostat_household_social_benefits_received": 1, + "eurostat_household_social_contributions_paid": 1, + "eurostat_household_current_taxes_paid": 1, + "fpb_gross_wages_and_salaries": 1 + }, + "by_activation_status": { + "requires_holdout_measure": 7 + } + } + }, + "regions": [ + "BE1", + "BE2", + "BE3" + ], + "age_bands": [ + "0_17", + "18_64", + "65_plus" + ], + "standin_bands": [ + { + "id": "under_10k", + "lower_eur_iy2023": 0, + "upper_eur_iy2023": 10000, + "a1_classes": [ + "class_under_1", + "class_1_2", + "class_2_3", + "class_3_4", + "class_4_5", + "class_5_6", + "class_6_7", + "class_7_8", + "class_8_9", + "class_9_10" + ] + }, + { + "id": "10k_20k", + "lower_eur_iy2023": 10000, + "upper_eur_iy2023": 20000, + "a1_classes": [ + "class_10_11", + "class_11_12", + "class_12_13", + "class_13_14", + "class_14_15", + "class_15_16", + "class_16_17", + "class_17_18", + "class_18_19", + "class_19_20" + ] + }, + { + "id": "20k_30k", + "lower_eur_iy2023": 20000, + "upper_eur_iy2023": 30000, + "a1_classes": [ + "class_20_21", + "class_21_22", + "class_22_23", + "class_23_24", + "class_24_25", + "class_25_26", + "class_26_27", + "class_27_28", + "class_28_29", + "class_29_30" + ] + }, + { + "id": "30k_40k", + "lower_eur_iy2023": 30000, + "upper_eur_iy2023": 40000, + "a1_classes": [ + "class_30_31", + "class_31_32", + "class_32_33", + "class_33_34", + "class_34_35", + "class_35_36", + "class_36_37", + "class_37_38", + "class_38_39", + "class_39_40" + ] + }, + { + "id": "40k_50k", + "lower_eur_iy2023": 40000, + "upper_eur_iy2023": 50000, + "a1_classes": [ + "class_40_41", + "class_41_42", + "class_42_43", + "class_43_44", + "class_44_45", + "class_45_46", + "class_46_47", + "class_47_48", + "class_48_49", + "class_49_50" + ] + }, + { + "id": "50k_75k", + "lower_eur_iy2023": 50000, + "upper_eur_iy2023": 75000, + "a1_classes": [ + "class_50_51", + "class_51_52", + "class_52_53", + "class_53_54", + "class_54_55", + "class_55_56", + "class_56_57", + "class_57_58", + "class_58_59", + "class_59_60", + "class_60_61", + "class_61_62", + "class_62_63", + "class_63_64", + "class_64_65", + "class_65_66", + "class_66_67", + "class_67_68", + "class_68_69", + "class_69_70", + "class_70_71", + "class_71_72", + "class_72_73", + "class_73_74", + "class_74_75" + ] + }, + { + "id": "75k_100k", + "lower_eur_iy2023": 75000, + "upper_eur_iy2023": 100000, + "a1_classes": [ + "class_75_76", + "class_76_77", + "class_77_78", + "class_78_79", + "class_79_80", + "class_80_81", + "class_81_82", + "class_82_83", + "class_83_84", + "class_84_85", + "class_85_86", + "class_86_87", + "class_87_88", + "class_88_89", + "class_89_90", + "class_90_91", + "class_91_92", + "class_92_93", + "class_93_94", + "class_94_95", + "class_95_96", + "class_96_97", + "class_97_98", + "class_98_99", + "class_99_100" + ] + }, + { + "id": "100k_plus", + "lower_eur_iy2023": 100000, + "upper_eur_iy2023": null, + "a1_classes": [ + "class_100_plus" + ] + } + ], + "standin_band_reason": "Fixed before any candidate (d1952): EUR 10,000 steps over the dense middle, wider steps above EUR 50,000, A.1's open top class whole; every edge is an A.1 class edge; eight bands, sixteen constraints.", + "standin_gaps": { + "measure": "statbel_net_taxable_income_proxy_v1", + "unit": "tax declaration (S2-d tax_unit); joint declarations count once", + "in_measure": "net professional income, rule-computed from transported gross amounts", + "published_gaps": "Components of Statbel's total net taxable income left out of the stand-in, as shares of it (method card BE-MC5; d1952). Within bands they can be larger than nationally.", + "national": { + "band": "all", + "declarations_iy2023": 6846186.0, + "taxable_income_eur_iy2023": 274707991587.37, + "component_shares_of_taxable_income": { + "professional_income": 0.9804992672847079, + "immovable_property_income": 0.014947349534038036, + "capital_and_movable_property_income": 0.005510746189298706, + "miscellaneous_income": 0.001157214923974624, + "deductible_expenditures": 0.0021145779320557163 + }, + "omitted_share_gross": 0.023729888579367083, + "omitted_share_net": 0.01950073271529207, + "identity_residual_eur": -0.01 + }, + "bands": [ + { + "band": "under_10k", + "declarations_iy2023": 937036.0, + "taxable_income_eur_iy2023": 3070063069.25, + "component_shares_of_taxable_income": { + "professional_income": 0.9595986159951101, + "immovable_property_income": 0.02519848271029131, + "capital_and_movable_property_income": 0.0033038102837665345, + "miscellaneous_income": 0.0159551657197604, + "deductible_expenditures": 0.004056074708928392 + }, + "omitted_share_gross": 0.04851353342274664, + "omitted_share_net": 0.040401384004889906, + "identity_residual_eur": 0.0 + }, + { + "band": "10k_20k", + "declarations_iy2023": 838884.0, + "taxable_income_eur_iy2023": 13708204696.7, + "component_shares_of_taxable_income": { + "professional_income": 0.9912500478513517, + "immovable_property_income": 0.009116430572420925, + "capital_and_movable_property_income": 0.0017326149270091968, + "miscellaneous_income": 0.0025143532623420313, + "deductible_expenditures": 0.004613446613123918 + }, + "omitted_share_gross": 0.01797684537489607, + "omitted_share_net": 0.008749952148648266, + "identity_residual_eur": 0.0 + }, + { + "band": "20k_30k", + "declarations_iy2023": 1634125.0, + "taxable_income_eur_iy2023": 40205856133.07, + "component_shares_of_taxable_income": { + "professional_income": 0.9913302376500499, + "immovable_property_income": 0.009227389444764247, + "capital_and_movable_property_income": 0.0012725470541072963, + "miscellaneous_income": 0.0008747289975271217, + "deductible_expenditures": 0.0027049031464485805 + }, + "omitted_share_gross": 0.014079568642847245, + "omitted_share_net": 0.008669762349950094, + "identity_residual_eur": 0.0 + }, + { + "band": "30k_40k", + "declarations_iy2023": 1013263.0, + "taxable_income_eur_iy2023": 35099727677.01, + "component_shares_of_taxable_income": { + "professional_income": 0.9857787374909764, + "immovable_property_income": 0.014128450381534244, + "capital_and_movable_property_income": 0.00203641256558287, + "miscellaneous_income": 0.0006833036894388543, + "deductible_expenditures": 0.0026269041275323777 + }, + "omitted_share_gross": 0.019475070764088345, + "omitted_share_net": 0.014221262509023558, + "identity_residual_eur": 0.0 + }, + { + "band": "40k_50k", + "declarations_iy2023": 716476.0, + "taxable_income_eur_iy2023": 32003198754.01, + "component_shares_of_taxable_income": { + "professional_income": 0.9836367045086585, + "immovable_property_income": 0.015453225158564269, + "capital_and_movable_property_income": 0.002444170559363191, + "miscellaneous_income": 0.0005523766279077016, + "deductible_expenditures": 0.002086476854493591 + }, + "omitted_share_gross": 0.020536249200328753, + "omitted_share_net": 0.016363295491341523, + "identity_residual_eur": 0.0 + }, + { + "band": "50k_75k", + "declarations_iy2023": 912211.0, + "taxable_income_eur_iy2023": 55358056929.57, + "component_shares_of_taxable_income": { + "professional_income": 0.9811309438087946, + "immovable_property_income": 0.01695812417394564, + "capital_and_movable_property_income": 0.003268815827662136, + "miscellaneous_income": 0.0005495389648286252, + "deductible_expenditures": 0.0019074227752310705 + }, + "omitted_share_gross": 0.022683901741667473, + "omitted_share_net": 0.01886905619120538, + "identity_residual_eur": 0.0 + }, + { + "band": "75k_100k", + "declarations_iy2023": 415483.0, + "taxable_income_eur_iy2023": 35704329792.58, + "component_shares_of_taxable_income": { + "professional_income": 0.9803493917184294, + "immovable_property_income": 0.016331211054161212, + "capital_and_movable_property_income": 0.004244718629937589, + "miscellaneous_income": 0.0005653042156863159, + "deductible_expenditures": 0.0014906256182145292 + }, + "omitted_share_gross": 0.022631859517999647, + "omitted_share_net": 0.019650608281570614, + "identity_residual_eur": 0.0 + }, + { + "band": "100k_plus", + "declarations_iy2023": 378708.0, + "taxable_income_eur_iy2023": 59558554535.18, + "component_shares_of_taxable_income": { + "professional_income": 0.9664960867557434, + "immovable_property_income": 0.017134554592442407, + "capital_and_movable_property_income": 0.015893255069527844, + "miscellaneous_income": 0.0017967110868480146, + "deductible_expenditures": 0.0013206075045615997 + }, + "omitted_share_gross": 0.036145128253379864, + "omitted_share_net": 0.03350391324425661, + "identity_residual_eur": 0.0 + } + ], + "declarations_with_taxable_but_no_professional_income": 42007.0, + "zero_income_declarations_outside_a1": 523770.0, + "zero_handling": "The proxy's zeros (no professional income, or losses floored to zero) are not Statbel's zero-income declarations; the nil band is not fitted.", + "stress_test": "Declared, not executable in B3: rerun with unemployment and sickness benefits left out of the measure (d1952); a measurement variant owed by B4/W3.", + "pension_gap": "Legal pensions are part of net professional income but are not modelled until d1902 settles BE-MC3's pension route, so the proxy cannot yet represent pensioner declarations." + }, + "ageing_pairs": [ + { + "id": "fpb_t06_net_national_disposable_income", + "use": "holdout", + "fpb_row": "national_income_account.net_national_disposable_income", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.national_income_account.net_national_disposable_income.country.v1", + "source_row_id": "net_national_disposable_income", + "row_label": "4. Revenu national net disponible", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:63c570cc58902f2813b3bde9" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t06.published_cell", + "entity_name": "institutional_sector", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.national_income_account.net_national_disposable_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:5148b5898c391c11ff484930" + }, + "numerator": 534156000000.0, + "denominator": 500699000000.0, + "ratio": 1.0668205848224181, + "base_period": 2024, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "FPB publishes no household disposable income; national net disposable income is the nearest disposable-income row (a proxy).", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "eurostat_household_gross_disposable_income", + "nbb_household_gross_disposable_income" + ], + "observed_segment_to_2025": 1.036830510945698, + "projected_step_2025_to_2026": 1.0289247601802982 + }, + { + "id": "fpb_t07_total_population", + "use": "calibration", + "fpb_row": "labour_market.levels.total_population", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.labour_market.levels.total_population.country.v1", + "source_row_id": "total_population", + "row_label": "I. Population totale (II+III)", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + "numerator": 11896000.0, + "denominator": 11730600.0, + "ratio": 1.0140998755391881, + "base_period": 2023, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "Declaration counts follow resident population (August's alignment); A.1 band counts and B.4 type counts share this pair so the bands still sum to B.4's joint plus individual total.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "statbel_a1_standin_declarations__100k_plus", + "statbel_a1_standin_declarations__10k_20k", + "statbel_a1_standin_declarations__20k_30k", + "statbel_a1_standin_declarations__30k_40k", + "statbel_a1_standin_declarations__40k_50k", + "statbel_a1_standin_declarations__50k_75k", + "statbel_a1_standin_declarations__75k_100k", + "statbel_a1_standin_declarations__under_10k", + "statbel_b4_declarations__individual", + "statbel_b4_declarations__joint" + ], + "observed_segment_to_2025": 1.0102126063457966, + "projected_step_2025_to_2026": 1.0038479713764936 + }, + { + "id": "fpb_t11_actual_social_contributions", + "use": "calibration", + "fpb_row": "household_account.actual_social_contributions", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.actual_social_contributions.country.v1", + "source_row_id": "actual_social_contributions", + "row_label": "Cotisations sociales effectives", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.actual_social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a66b02d02ed92c58e542e7ed" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.actual_social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3f953c8cbe00192899c93c3b" + }, + "numerator": 101300000000.0, + "denominator": 94613000000.0, + "ratio": 1.0706773910561973, + "base_period": 2024, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "Employee personal contributions follow FPB's actual social contributions; gross wages stay free for the wage-headline holdout.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "onss_worker_personal_contributions" + ], + "observed_segment_to_2025": 1.0400473507868897, + "projected_step_2025_to_2026": 1.029450620922339 + }, + { + "id": "fpb_t11_current_taxes_on_income_and_wealth", + "use": "holdout", + "fpb_row": "household_account.current_taxes_on_income_and_wealth", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.current_taxes_on_income_and_wealth.country.v1", + "source_row_id": "current_taxes_on_income_and_wealth", + "row_label": "1. Impôts courants sur le revenu et le patrimoine", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.current_taxes_on_income_and_wealth", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:67bb0b178a502334a5798bfa" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.current_taxes_on_income_and_wealth", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3638106fd28d6f6d119c0d5" + }, + "numerator": 83113000000.0, + "denominator": 77033000000.0, + "ratio": 1.078927213012605, + "base_period": 2024, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The household account row matching Eurostat D5 paid.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "eurostat_household_current_taxes_paid" + ], + "observed_segment_to_2025": 1.0290784468993808, + "projected_step_2025_to_2026": 1.0484402003204119 + }, + { + "id": "fpb_t11_gross_wages_and_salaries", + "use": "holdout", + "fpb_row": "household_account.gross_wages_and_salaries", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.gross_wages_and_salaries.country.v1", + "source_row_id": "gross_wages_and_salaries", + "row_label": "Salaires et traitements bruts", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.gross_wages_and_salaries", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:f17958efe84e42471bf68f80" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.gross_wages_and_salaries", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b99b4161fa76ca1069ad5e7" + }, + "numerator": 247221000000.0, + "denominator": 240536000000.0, + "ratio": 1.0277920976485848, + "base_period": 2025, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The card's wage-headline comparator (FPB salaires bruts), rolled by its own 2026/2025 step.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "fpb_gross_wages_and_salaries" + ] + }, + { + "id": "fpb_t11_net_mixed_income", + "use": "calibration", + "fpb_row": "household_account.net_mixed_income", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.net_mixed_income.country.v1", + "source_row_id": "net_mixed_income", + "row_label": "2. Revenu mixte net", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.net_mixed_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:82a8d913db8aa3594a182492" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.net_mixed_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0db8ec51ab64a7f7519fc5d4" + }, + "numerator": 41044000000.0, + "denominator": 39834000000.0, + "ratio": 1.0303760606517045, + "base_period": 2025, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The target's own series (BE-MC3 self-employment aggregate).", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "fpb_net_mixed_income" + ] + }, + { + "id": "fpb_t11_social_benefits", + "use": "holdout", + "fpb_row": "household_account.social_benefits", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.social_benefits.country.v1", + "source_row_id": "social_benefits", + "row_label": "5. Prestations sociales", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.social_benefits", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf52974b05acf19d1d3ccb28" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.social_benefits", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:e87808ae0b585214ec608b92" + }, + "numerator": 132674000000.0, + "denominator": 124608000000.0, + "ratio": 1.0647309964047251, + "base_period": 2024, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The household account row matching Eurostat D62 received.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "eurostat_household_social_benefits_received" + ], + "observed_segment_to_2025": 1.032509951206985, + "projected_step_2025_to_2026": 1.0312065226684493 + }, + { + "id": "fpb_t11_social_contributions", + "use": "holdout", + "fpb_row": "household_account.social_contributions", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.social_contributions.country.v1", + "source_row_id": "social_contributions", + "row_label": "2. Cotisations sociales, dont:", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:4c597d6ad755576b4e1faf01" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:deed6d1fc86e5e7032cbfa5e" + }, + "numerator": 120094000000.0, + "denominator": 112346000000.0, + "ratio": 1.0689655172413792, + "base_period": 2024, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The household account row matching Eurostat D61 paid.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "eurostat_household_social_contributions_paid" + ], + "observed_segment_to_2025": 1.0358980293023339, + "projected_step_2025_to_2026": 1.0319215666056591 + }, + { + "id": "fpb_t11_total_resources", + "use": "calibration", + "fpb_row": "household_account.total_resources", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.household_account.total_resources.country.v1", + "source_row_id": "total_resources", + "row_label": "a. Ressources", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + "numerator": 571010000000.0, + "denominator": 518286000000.0, + "ratio": 1.1017276175702218, + "base_period": 2023, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "Net professional income mixes wages, replacement incomes, pensions and profits; the household account's total resources is the one FPB row spanning them (August's resource alignment).", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "statbel_a1_standin_taxable_income__100k_plus", + "statbel_a1_standin_taxable_income__10k_20k", + "statbel_a1_standin_taxable_income__20k_30k", + "statbel_a1_standin_taxable_income__30k_40k", + "statbel_a1_standin_taxable_income__40k_50k", + "statbel_a1_standin_taxable_income__50k_75k", + "statbel_a1_standin_taxable_income__75k_100k", + "statbel_a1_standin_taxable_income__under_10k" + ], + "observed_segment_to_2025": 1.0691336443585202, + "projected_step_2025_to_2026": 1.0304863413322458 + }, + { + "id": "fpb_t17_direct_taxes_households", + "use": "holdout", + "fpb_row": "general_government_account.direct_taxes_households", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.general_government_account.direct_taxes_households.country.v1", + "source_row_id": "direct_taxes_households", + "row_label": "- Ménages", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t17.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.general_government_account.direct_taxes_households", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:09dcccdb13ecc60173a18079" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t17.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.general_government_account.direct_taxes_households", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebae7d68bab03979e30b2b5e" + }, + "numerator": 81561000000.0, + "denominator": 77771000000.0, + "ratio": 1.0487328181455813, + "base_period": 2025, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "Government direct taxes on households, the FPB counterpart of D51A_C1.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "eurostat_d51a_c1_individual_income_tax" + ] + }, + { + "id": "fpb_t24_federal_cash_income_guarantee_for_older_people", + "use": "calibration", + "fpb_row": "social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people.country.v1", + "source_row_id": "federal_government_cash_income_guarantee_for_older_people", + "row_label": "4. Garantie de revenus aux personnes âgées", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:13ee4f4b5a469ddeb487eafc" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:776e68a9e93ca03151c53baf" + }, + "numerator": 1034000000.0, + "denominator": 1025000000.0, + "ratio": 1.008780487804878, + "base_period": 2025, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The target's own series (GRAPA).", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "fpb_grapa_expenditure" + ] + }, + { + "id": "fpb_t24_social_security_cash_unemployment", + "use": "calibration", + "fpb_row": "social_benefits_detail.social_security_cash_unemployment", + "record_set_spec_id": "fpb.economic_outlook_2026_2031.social_benefits_detail.social_security_cash_unemployment.country.v1", + "source_row_id": "social_security_cash_unemployment", + "row_label": "a. Chômage", + "numerator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.social_benefits_detail.social_security_cash_unemployment", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:61a041fd9dff09745593e4da" + }, + "denominator_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.social_security_cash_unemployment", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ad11668f4cf559bb3c388f" + }, + "numerator": 4255000000.0, + "denominator": 5602000000.0, + "ratio": 0.7595501606569083, + "base_period": 2025, + "target_period": 2026, + "numerator_assertion": "source_projection", + "denominator_assertion": "observation", + "reason": "The target's own series, FPB T24 line a., rolled by its 2026/2025 step. unemployment_series_choice in the inventory compares it with the larger line 4.", + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": [ + "fpb_unemployment_benefit_expenditure" + ] + } + ], + "rsz_wage_cross_checks": [ + { + "factor_id": "rsz_ordinary_remuneration_cy2023_to_cy2025_observed", + "rsz_observed_factor": 1.063921, + "fpb_gross_wages_observed_ratio": 1.0642338220849668, + "use": "diagnostic only" + }, + { + "factor_id": "rsz_ordinary_remuneration_cy2024_to_cy2025_observed", + "rsz_observed_factor": 1.032192, + "fpb_gross_wages_observed_ratio": 1.0319934442828398, + "use": "diagnostic only" + } + ], + "b4_identity": { + "joint": 2215303.0, + "individual": 4630883.0, + "a1_declarations": 6846186.0, + "closes_exactly": true, + "use": "A.1 band counts and B.4 type counts share fpb_t07_total_population, so the identity survives ageing." + }, + "destination_mass": { + "commune_sum_2025": 11825551.0, + "nuts1_sum_2025": 11825551.0, + "nuts1_sum_2026": 11867634.0, + "commune_minus_nuts1_2025": 0.0, + "create_mass_reference": "Not in B3. CREATE needs exactly one unfiltered national person count. The suite has no national Statbel population fact, and a national row composed from the 565 communes refuses: the shared composed-geography path labels only UK areas. W3 chooses between a shared Belgian geography label (NZ hub) and FPB's annual-average population." + }, + "b1_checks": { + "verdict": "B.1 stays inactive: no check passes completely from the documents.", + "asserted_evidence": { + "b1_total_matches_spf_total": true, + "b1_deciles_sum_to_total": true, + "top_percentiles_sum_to_decile_10": true, + "decile_bounds_strictly_increase": true, + "percentile_bounds_strictly_increase": true, + "decile_9_bound_below_percentile_91_bound": true, + "b1_and_a1_taxable_income_totals_match": true, + "chronicle_states_zero_income_exclusion": true + }, + "tax_definition": { + "evidence": { + "b1_total_enrolled_tax_eur": 62840116133.93, + "spf_finances_total_taxes_eur": 62840116133.99, + "difference_eur": -0.06, + "b1_deciles_sum_minus_total_eur": 0.0, + "top_percentiles_sum_minus_decile_10_eur": 0.0, + "negative_deciles": [ + "decile_01", + "decile_02" + ] + }, + "passed": [ + "B.1's total enrolled tax equals the total taxes in Chronicle's spf-finances-pit-2023 package to EUR 0.06. That fact carries Statbel's concept and evidence URL, so the match reads one administrative total twice and corroborates nothing independently.", + "B.1's deciles sum to its total, and percentiles 91-100 sum to decile 10, within EUR 0.10." + ], + "missing": [ + "rulespec-be's candidate output belgium_pit_federal_and_local_tax_before_withholding (final_tax.yaml at 530849e) adds article 134 federal tax and the articles 465-466 local additions but not regional_surcharge.yaml's regional additional tax. No document in the suite says whether Statbel's total taxes include the regional additional tax.", + "B.1 counts declarations (joint = one); every rulespec-be PIT output is per Person, and the couple pipeline needs relation bindings (S2-d) that are not built.", + "That output is also the D51A_C1 holdout's measure: a B.1 producer must be a separately bound declaration-level measure, because S5 refuses a pre-calibration stage whose module produces a holdout measure." + ], + "result": "fail" + }, + "income_ranking": { + "evidence": { + "decile_upper_bounds_strictly_increase": true, + "percentile_upper_bounds_strictly_increase": true, + "decile_9_bound_below_percentile_91_bound": true, + "b1_minus_a1_total_taxable_income_eur": 0.02, + "decile_taxable_income_shares_sum": 1.0, + "chronicle_concept_note": "B.1 excludes declarations with zero total net taxable income; Statbel reports those declarations separately in A.1 Home. B.1 total enrolled tax; low-decile cells are negative because of refundable credits." + }, + "passed": [ + "Chronicle's B.1 facts state that B.1 excludes zero-income declarations, as A.1 does; B.1's and A.1's taxable-income totals agree to EUR 0.02, and the published bounds increase." + ], + "missing": [ + "The stand-in ranks declarations by net professional income only; 42,007 declarations with taxable but no professional income, and every pensioner while pensions are unmodelled (d1902), would rank differently from Statbel's total net taxable income.", + "B.1 publishes no declaration counts by decile; classifying model declarations needs either model-side ranking or the published bounds, and the bounds are income-year-2023 euros that need the same unavailable cut ageing as A.1." + ], + "result": "fail" + }, + "policy_year": { + "evidence": { + "b1_legal_vintage": "income_year_2023_assessment_year_2024", + "model_policy_year": 2026, + "rulespec_be_final_tax_effective_from": "2025-01-01", + "negative_deciles": [ + "decile_01", + "decile_02" + ] + }, + "passed": [], + "missing": [ + "B.1 is assessed under income-year-2023 law; the model applies 2026 law (BE-MC0). rulespec-be defines its PIT outputs from 2025-01-01 (its article 134 module states income year 2025 parameters), so B.1's own year cannot be reproduced, and no document bridges 2023 to 2026 tax law: ageing a 2023 tax mass by an FPB ratio would mix growth with law changes.", + "Deciles 1 and 2 are negative (refundable credits) and rolled_forward_by_ratio refuses a negative base, so the declared ageing route cannot carry them to 2026." + ], + "result": "fail" + } + }, + "unemployment_series_choice": { + "lines_2025": { + "chosen": { + "row": "social_security_cash_unemployment", + "label": "a. Chômage", + "eur": 5602000000.0 + }, + "alternative": { + "row": "social_security_cash_unemployment_total", + "label": "4. Chômage", + "eur": 6510000000.0 + }, + "company_supplement": { + "row": "social_security_cash_unemployment_with_company_supplement", + "label": "c. Allocations de chômage avec complément d'entreprise", + "eur": 167000000.0 + }, + "career_breaks": { + "row": "social_security_cash_career_breaks_and_time_credit", + "label": "d. Interruptions de carrière et crédit-temps", + "eur": 740000000.0 + } + }, + "choice": "The target takes line a. Line 4 also holds benefits with a company supplement and career breaks and time credit, about 14% of the level. This row choice is proposed with d1902.", + "open_question": "No document in the suite says whether line a. includes temporary unemployment, which the ordinary-benefit output does not compute." + }, + "geography_vintage_bindings": [ + { + "layer": "nuts1", + "chronicle_vintage": "NUTS_2024", + "typed_authority": "vintage:be_nuts1_2025", + "relation": "crosswalk", + "basis": "Chronicle labels Statbel's regions NUTS_2024. The typed nuts1 layer records no code list, so the mapping rests on destination_mass: the three regions' 2025 population equals the 565 communes' sum. A package test holds every nuts1 row to this binding. This choice is proposed with d1902." + }, + { + "layer": "commune", + "chronicle_vintage": "nis_2025", + "typed_authority": "vintage:be_nis_2025", + "relation": "exact_alias", + "basis": "nis_2025 is an exact typed alias of vintage:be_nis_2025." + } + ], + "holdout_information_overlaps": [ + "The tests check separation at the fact and measure level; holdouts still share information with calibration through economics, not facts:", + "FPB gross wages (wage-headline holdout): ONSS's calibrated worker contributions scale with wages.", + "Eurostat D62 social benefits received contain the calibrated unemployment and GRAPA aggregates.", + "Eurostat D61 social contributions paid contain the calibrated ONSS worker contributions.", + "Eurostat D51A_C1 and D5 measure the same personal income tax that B.1 would calibrate once active.", + "The A.1 stand-in is 98% net professional income, and its amount pair, FPB T11 total resources, contains gross wages, the wage holdout's own series.", + "RSZ T7's daily-wage cells at 2026-Q1 sum to the same class counts as the T17 wage surface, under different facts and semantic keys: a holdout on T7 would share the surface's information." + ], + "grammar_gaps": [ + "A national row composed from commune facts refuses for Belgium: the composed-geography path labels only UK areas (ledger_targets._geography_fallback_label), so CREATE's single national mass reference cannot be the commune sum.", + "A schema-2 target_profile requires period_match_policy 'exact', which refuses rolled_forward_by_ratio; the documents keep B1's schema-2 hierarchy catalogs with a schema-1 target_profile (NZ's documents use the same schema-1 profile, with inline hierarchies).", + "No shared operation ages interval cuts by a declared annual ratio pair: scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's projected_period_average_ratio cannot project an annual series past its last observation.", + "G8-r2's resolver needs dated period_coverage on every operand; Chronicle's FPB, Statbel NUTS1, NBB, ONSS, ONEM and most Eurostat facts carry none.", + "rolled_forward_by_ratio refuses a negative base, so signed targets (B.1 low deciles) cannot be aged by it.", + "rolled_forward_by_ratio's series key treats every FPB annex row of one table as one series (same concept, entity, geography and empty dimensions); the generator and tests enforce row identity themselves.", + "The typed vintage alias set admits only a layer's full id, its country-shortened id and its authority value, so Chronicle's NUTS_2024 label cannot be an alias of vintage:be_nuts1_2025; geography_vintage_bindings carries the mapping instead.", + "The schema-1 target_profile drops B1's required_families, basis_periods, tolerance tiers and subnational vintage rule. Package tests restore required families, the vintage rule and each row's periods. Caseload tolerance moves from B1's 15% to BE-MC6's 5%, and the ONSS contribution row moves from B1's standard_admin_release 10% to 5%.", + "A selector cannot pair a record set with a dimension value, and T17 holds each daily-wage class in one record set per sex. Each wage row lists both record sets beside an age and a sex roster, so the package tests' cell check expands their product: 24 cells that exist and 24 that cannot. A list of the members' aggregate keys would bind each member without the artifact, but the package scan admits fact keys only as single strings, so the rosters stay key-free and the feed audit proves their members.", + "No shared code reads a rank-only input. Transport drops the donor's public_pension_income (TransportRule.DROP), and transport.quantile_map@1 ranks one column and overwrites that same column with the mapped amounts. So the SFPD surface rows are kept non-executable only by activation_status, and each one is a named activation gap.", + "Uniform interpolation refuses an open top band, and both surfaces' top bands are open; Pareto interpolation needs a declared alpha, and no shared mode scales the donor's own tail." + ], + "quantile_surfaces": { + "resource": "quantile_surfaces.json", + "wages": { + "record_set_spec_id": "rsz.t17.daily_wage_class.v1", + "period": "2026-Q1", + "measure": "employed_workers", + "age_classes": [ + "-20", + "20-24", + "25-29", + "30-34", + "35-39", + "40-44", + "45-49", + "50-54", + "55-59", + "60-64", + "65-69", + "70+" + ], + "sexes": [ + "Man-Homme", + "Vrouw-Femme" + ], + "members_per_class": 24, + "classes": [ + { + "label": "<100", + "reference": "rsz_employed_workers_by_daily_wage_class__lt100", + "workers": 100457.0 + }, + { + "label": "100 - 149", + "reference": "rsz_employed_workers_by_daily_wage_class__100_149", + "workers": 1218251.0 + }, + { + "label": "150 - 199", + "reference": "rsz_employed_workers_by_daily_wage_class__150_199", + "workers": 1182699.0 + }, + { + "label": "200 - 299", + "reference": "rsz_employed_workers_by_daily_wage_class__200_299", + "workers": 1066243.0 + }, + { + "label": ">= 300", + "reference": "rsz_employed_workers_by_daily_wage_class__300_plus", + "workers": 369203.0 + } + ], + "unknown_pay": { + "label": "Onbekend-Inconnu", + "workers": 191700.0, + "facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0173ec9c898e96ff38f14951" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1be9e0086c49f0fff813a753" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2712c746489ebdd43985341f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:28b0d96b85d86aa978abab76" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2fff356dbb2cfe4bd30d75ee" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:37a10351a60c5b16681118df" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3998e698370c40a8ccbb8145" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4709675c96209c2898ec18bf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:52c1457134d2220fdd33131f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6ae2c5f8676fc254d3ffbd49" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:74a90f184fa1ab55dc0f254c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:79dfe462a53520e7994a7a2c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7bf2f2611c80bafaa9c7ea41" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a408c0d622818048b3c3d44" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a64dd4cdec47eacdd213da5f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:af2049af6481da82d2827255" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1d3adeb80c0df368fe21b61" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6f055b85a80a6cf8340bd7e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cf479a753463a8ec1479ad6f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d6a3facfd37f85a75c56d8f9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dd27d7fb24a3a4927aaa0d15" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f0eaa914354aa9c57bf2e337" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2f7414540b05d2ba3a2bfa4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f90986bb293c8813e5e91377" + } + ] + }, + "known_pay_workers": 3936853.0, + "table_workers": 4128553.0, + "known_plus_unknown_equals_table": true, + "unknown_share_of_table": 0.04643273321185413, + "t7_cross_check": { + "record_set_spec_id": "rsz.t7.daily_wage_class.v1", + "workers_by_class": { + "100 - 149": 1218251.0, + "150 - 199": 1182699.0, + "200 - 299": 1066243.0, + "<100": 100457.0, + ">= 300": 369203.0, + "Onbekend-Inconnu": 191700.0 + }, + "equals_t17_by_class": true, + "use": "Diagnostic only: T7 crosses NACE 2025 activity, worker status and sex; no reference reads it." + }, + "measure_pin": "employed_workers, never jobs: T17's jobs measure shares the person entity, the count unit and the classes, so _surface_bands cannot tell them apart; the generator and the package tests pin the measure." + }, + "legal_pensions": { + "record_set_id": "sfpd.amount_bands.jan2025.group1.recipients", + "period": "2025-01", + "bands": [ + { + "label": "0,01 - 124,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__0_01_to_125", + "recipients": 281092.0 + }, + { + "label": "125,00 - 249,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__125_to_250", + "recipients": 112943.0 + }, + { + "label": "250,00 - 374,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__250_to_375", + "recipients": 68579.0 + }, + { + "label": "375,00 - 499,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__375_to_500", + "recipients": 53494.0 + }, + { + "label": "500,00 - 624,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__500_to_625", + "recipients": 52925.0 + }, + { + "label": "625,00 - 749,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__625_to_750", + "recipients": 49474.0 + }, + { + "label": "750,00 - 874,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__750_to_875", + "recipients": 44861.0 + }, + { + "label": "875,00 - 999,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__875_to_1000", + "recipients": 39229.0 + }, + { + "label": "1.000,00 - 1.124,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1000_to_1125", + "recipients": 38226.0 + }, + { + "label": "1.125,00 - 1.249,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1125_to_1250", + "recipients": 43057.0 + }, + { + "label": "1.250,00 - 1.374,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1250_to_1375", + "recipients": 50885.0 + }, + { + "label": "1.375,00 - 1.499,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1375_to_1500", + "recipients": 61147.0 + }, + { + "label": "1.500,00 - 1.624,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1500_to_1625", + "recipients": 80839.0 + }, + { + "label": "1.625,00 - 1.749,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1625_to_1750", + "recipients": 222464.0 + }, + { + "label": "1.750,00 - 1.874,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1750_to_1875", + "recipients": 415308.0 + }, + { + "label": "1.875,00 - 1.999,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__1875_to_2000", + "recipients": 189369.0 + }, + { + "label": "2.000,00 - 2.124,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2000_to_2125", + "recipients": 108687.0 + }, + { + "label": "2.125,00 - 2.249,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2125_to_2250", + "recipients": 139867.0 + }, + { + "label": "2.250,00 - 2.374,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2250_to_2375", + "recipients": 88870.0 + }, + { + "label": "2.375,00 - 2.499,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2375_to_2500", + "recipients": 81395.0 + }, + { + "label": "2.500,00 - 2.624,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2500_to_2625", + "recipients": 67760.0 + }, + { + "label": "2.625,00 - 2.749,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2625_to_2750", + "recipients": 54626.0 + }, + { + "label": "2.750,00 - 2.874,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2750_to_2875", + "recipients": 37484.0 + }, + { + "label": "2.875,00 - 2.999,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__2875_to_3000", + "recipients": 21993.0 + }, + { + "label": "3.000,00 - 3.124,99", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3000_to_3125", + "recipients": 13845.0 + }, + { + "label": "3.125,00 en >", + "reference": "sfpd_legal_pension_recipients_by_monthly_amount_band__3125_plus", + "recipients": 30814.0 + } + ], + "band_recipients": 2449233.0, + "total_fact": { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f9dc8ab69a3b6cbcc0db3f68", + "label": "Totaal", + "recipients": 2449233.0 + }, + "bands_sum_to_total": true, + "excluded": "The Totaal row, which the bands sum to, and every monthly_expenditure_eur fact. SFPD's other groups are not stacked: groups 2 to 164 split group 1's population by career, pension category and sex, and the FPD-beneficiary and IGO groups count other beneficiary populations." + } + }, + "exclusions": [ + { + "id": "jrc_euromod_be_statistics", + "reason": "jrc-euromod-be-baseline-statistics-2025 is outside the Chronicle be suite while d1822 (move it to the scorecard, its only consumer) is open; no reference selects JRC. August took two calibration rows from it: the unemployment recipient count, now read from ONEM/RVA's own 2024 count (a different concept, parked), and the RIS amount and recipient count, for which the suite holds no source, so no RIS reference exists." + }, + { + "id": "ris_amount_and_recipients", + "reason": "August's RIS amount and count came from JRC; the suite holds no RIS administrative source, so the gap is named, not filled." + }, + { + "id": "legal_pensions", + "reason": "FPB pension amounts and SFPD's other beneficiary tables: legal pensions are not modelled until d1902 settles BE-MC3's pension route. SFPD group 1's 26 amount bands are B4a's parked legal-pension surface rows in precal; its Totaal row and expenditure measure are not bands. Groups 2 to 164 split group 1's population, and the FPD-beneficiary and IGO groups count other beneficiary populations, so none is stacked on group 1." + }, + { + "id": "family_allowances", + "reason": "FPB family allowances and Opgroeien/Ostbelgien caseloads: child benefits are reported as not modelled at level until indexed amounts are encoded (BE-MC0)." + }, + { + "id": "rsz_wage_classes", + "reason": "RSZ daily-wage classes (B2f): B4a's wage surface reads only T17's five known-pay classes of employed workers at 2026-Q1, as precal rows. Earlier quarters, the jobs and FTE measures, the unknown-pay class and T7 (a diagnostic in quantile_surfaces) are not read." + }, + { + "id": "usd_eur_rate", + "reason": "Eurostat ert_bil_eur_a is B4's currency-bridge input (BE-MC3), not a reference." + }, + { + "id": "regional_a1_and_b1", + "reason": "National bands only: the short list d1952 asks for; v0.5.1's 606 regional A.1 rows failed to fit." + }, + { + "id": "a1_component_tables", + "reason": "Professional, property, movable, miscellaneous and deduction tables are gap diagnostics in this inventory, not fitted rows." + }, + { + "id": "a1_and_b1_totals", + "reason": "Published totals duplicate the band and decile partitions; B.1's taxable-income masses duplicate A.1." + }, + { + "id": "zero_income_declarations", + "reason": "Statbel's 523,770 zero-income declarations are a diagnostic; the proxy's zeros differ, so the nil band is not fitted." + }, + { + "id": "b3_b5_tables", + "reason": "B.3 professional-category and B.5 dependant tables are outside the card's targets; v0.5.1's wage-only B.3 proxy destroyed weights." + }, + { + "id": "b4_age_and_decile_cells", + "reason": "Only the all-age joint and individual totals are targets (BE-MC4); age and decile cells would multiply weak cells." + }, + { + "id": "statbel_commune_fiscal_income", + "reason": "Commune fiscal income is a diagnostic surface for a later commune spine gate, not a B3 reference." + }, + { + "id": "spf_finances_pit_total", + "reason": "SPF Finances' total taxes equal B.1's total: one administrative total, read twice. The tax-definition check records it, and no row targets it." + }, + { + "id": "spf_municipal_surcharge_rates", + "reason": "Communal surcharge rates are W3 rule inputs, not references." + }, + { + "id": "statbel_population_2025_nuts1", + "reason": "Statbel's 1 January 2026 cells are the target-year observation; the 2025 cells would duplicate them." + }, + { + "id": "movable_income", + "reason": "Movable income stays out of the stand-in (art. 313 CIR 92 withholding dispensation) and out of the targets until the investment-income match check (d1952 build item 5)." + }, + { + "id": "eurostat_d11_wages", + "reason": "Eurostat D11 duplicates FPB's gross wages, the card's wage-headline comparator." + }, + { + "id": "eurostat_b3g_mixed_income", + "reason": "Mixed income is a calibration aggregate (FPB net mixed income), so it cannot also be held out." + }, + { + "id": "eurostat_survey_and_social_protection", + "reason": "Eurostat ilc_* survey aggregates and spr_exp_func expenditure are excluded: surveys are validation-only and outside the card's holdouts, and ESSPROS overlaps FPB's T24 rows." + }, + { + "id": "fpb_projections_as_direct_targets", + "reason": "No reference takes an FPB projection as its base: every base is an observation. Seven rolled rows still equal FPB's 2026 projection, because each base equals its pair's denominator: unemployment benefits, GRAPA and net mixed income in calibration, and gross wages and the Eurostat D61, D62 and D5 rows in the holdouts. Those rows say so in ageing_target_equals." + }, + { + "id": "german_and_french_rows", + "reason": "Four Eurostat members carry DE and FR rows (72 of 87,112); the generator refuses any non-Belgian fact before it can name one." + } + ], + "resolved_reads": [ + { + "name": "statbel_population_by_region_sex_age__be1__male__a0_17", + "reference_set": "calibration", + "selector_sha256": "821261226de6a3ea0e29197fc92d0a1adb096aab81c573c0778f848074863c8a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:120cd8981baad80a656e1b30" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:58eb938e425bd99d7c6de069" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be1__male__a18_64", + "reference_set": "calibration", + "selector_sha256": "c2d13444ec440426124fe6e5955f8f469b078ac9db0022fd793969672fdb8dce", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f3a6c98b66da2c0df41224b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:522b27c275adbd0795fad4f8" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be1__male__a65_plus", + "reference_set": "calibration", + "selector_sha256": "a521119d0864fbef6b8a9bb5102cf7a6de54f9085c8f2d818f5c406acbf16bf9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:04cad2d2d74601f480a04878" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a5f6dc0e1ef2db8c4fb786c0" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be1__female__a0_17", + "reference_set": "calibration", + "selector_sha256": "1008d50263a4df2fc1a881b222f45e111198aa69125ab0f0a325e7948f1c23af", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5bd4d90dbf75fa183b749e89" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:489d724c91e7d1b3d0d0a4a9" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be1__female__a18_64", + "reference_set": "calibration", + "selector_sha256": "47529acc15ed6fd2c249499ebf7a998f8b44d8fb107a8e1a1a60b5bd9860d85c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:31103ab0dcc5bb5bd663c6a3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:548a9b12b930b077f27b4728" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be1__female__a65_plus", + "reference_set": "calibration", + "selector_sha256": "f5e6151217a96b5d7c6f727da82894a4d1b5ce1d7a745291f4a7add8f715c423", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:633f2cac5dcab7a455322cf0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2c50c592943200715215b028" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a0_17", + "reference_set": "calibration", + "selector_sha256": "078ca4839f8c3c21ca389c8660346c4a89b0165917869b6cbb8afbba8666109e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b73dde1c55bf24c4e9826526" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1ec0f01c890b7903fdf733e8" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a18_64", + "reference_set": "calibration", + "selector_sha256": "cc96c6f44a1225206a02b0841e90244046cbc2c8df7742630863da9999d157a6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fac6476a0da56862ec9d981e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:406bc93f1eabb4e212279127" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a65_plus", + "reference_set": "calibration", + "selector_sha256": "67c906072bf0215c049414c7d1b265115d9031026d2ef3fff4e815c7386e2c40", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b1fb01f519506661f18756a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a88a573adb6ef32cbed397bd" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__female__a0_17", + "reference_set": "calibration", + "selector_sha256": "4b52f953e6a0ddc282ce3bfacf38b94fecf714cb0336cc27307b1f6fd0d48920", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a8aaa9d9b3acbd074350860" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c602927f3d3cd12127725e72" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__female__a18_64", + "reference_set": "calibration", + "selector_sha256": "d60fd9fa55d85af2e700059754d092bc03cb6b56cf040c45338a3b231182e7da", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9bd542188b4920c4fc2fc000" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:124767e994213f0bee0fd858" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be2__female__a65_plus", + "reference_set": "calibration", + "selector_sha256": "4250594e98142406a9df9585370ebc06fc411e241f83866178518577242ad94b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:01f7112f0ac2cc62931fb498" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:983663dd0550c1cc5ede939e" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__male__a0_17", + "reference_set": "calibration", + "selector_sha256": "31a1c0f9a4c9fd4302d8b822980ba2dd2f8cca222308844faece45acc870254c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e7d1c04c5969b6ef0f54a195" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:850b2c53fed70ac89e0cabb6" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__male__a18_64", + "reference_set": "calibration", + "selector_sha256": "0e924a109b30c861486fb1dd03af61f5785f55a28d65123c8546ac1bd271bf16", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b490791a47549aceb713316" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7f1e964ea5df462b82d90454" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__male__a65_plus", + "reference_set": "calibration", + "selector_sha256": "246cd62ddb7d8417382b6a8ddc5da2f3781066a97b8470ba6e01c02e9097eade", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ad6a44e0f4906dea7225e982" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:10cdd6c20c7eafd3c5d77641" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a0_17", + "reference_set": "calibration", + "selector_sha256": "40b2eb29af55cd14d09687692a1797408a5c6a300516c6b2489cc5673ca7881b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8dd7262af62fcdd238a028ba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:53da67f407126167092a5114" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a18_64", + "reference_set": "calibration", + "selector_sha256": "f5dd93339e6092a305c69770d73f34ae96e21a30831cb4371e7840346427630c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53e961ba941bbbac70214d47" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dc3778088005ef88883cf0c0" + } + ] + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a65_plus", + "reference_set": "calibration", + "selector_sha256": "67f5e6f761452ffb804ab0dd2395100b1599cbc23b652081bb7b16ad9563ebc7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:000c18596fb1e051cddc4fe4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:45232b738d20d9309ab98172" + } + ] + }, + { + "name": "statbel_a1_standin_declarations__under_10k", + "reference_set": "calibration", + "selector_sha256": "841fddbf568f9098d11444c876edf7128500d1d9c942c34f683da72a5740cd8a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:114f42a3ac944b9344a21870" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1770c0ba71a6574d2bac9f98" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:21172336f0eba19244bb2a2b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:27361653fbab59a859b04d05" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2e7d39c74e73cc77298e9302" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53bbd48c4f6a0004fa421f37" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:73728d46d9837136b13d935d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:75e297f4d850328532271114" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:afb523a9c9d0920f59cf1fc6" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c4bbeccf52ce68b43c3b55ef" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0c66d016e493b94365622e4a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1719a44153276215539e83ea" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:46a35dd8eb0ae7f6a95fc675" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:56404437581a0a617f61c0ae" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6980359814b06dbbd9160c82" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7d45f627cf79421d07493077" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a6e8075ddff2303fd63068e9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:aea0f10fedc374b6f6bc0f36" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f088f0f7f9c4a8a241917608" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fd3007959536671a2cde416e" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__under_10k", + "reference_set": "calibration", + "selector_sha256": "3fb5a95406841d06893dd0bf5e95f129191231ab909e6ac52c0719783dc5653c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:03e35c91952d2ac2d1055adb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:247166ef837b5d0ccf21399a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2b856d3d44485d10d4c639cd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:368cdf80a0376d1c9bcf51f1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4be2dc0515b4b30eafe19112" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7dbec3f268c60452b5718756" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae891ed4a7885759dca02df0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b52f70a1ed702b96fa07dff1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf48221bc324d8344dbc4751" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ff2cb970e6078602fd465c0e" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:356581b6d4e9e5e02544accd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:43e9375fc6c9cd0b1e89be5e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5460f321a6f584fdc4660d73" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7171523324b0588b595172dd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7b208ca29dfd2745dc842b4e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:81dc70797b9d6241c1d8c67e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:afbfa9036ebbba0a35cf4f7e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b7da56ef3c2d1ec24332f995" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b93dbd5323f3f684b104161f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c52a0e0290acc5dfccf35cd3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__10k_20k", + "reference_set": "calibration", + "selector_sha256": "e862b7cf0afe44e41a0afc3964ee96d622813622b7feceeab875211d13065b43", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2e42eef08f6a64d886936951" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:361cbc729a742e653ae583ab" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ee1d10c194076504fe7f44d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f29fec1b41160e3a18ba3cd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:66f70d9410520739df8f9018" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ce9ea0e3f64582662c52f80" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9e615a0b4c5cd2c5b2fffb09" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a2984d4e323715f2d0556dfe" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb02608da6ff03b50af964c8" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e26bd9637e0706f813584896" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1c12b7c9919b53345cb7f651" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1d4fc25e6fa771d5681da19e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3376d74d57d7fd0f3d55cf10" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:55e02359a6fd0329e6af41fe" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:60b91db906af83fe8662902e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:80bb55a294c06643dc0b557d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a71e7882eb04dea26126d75a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c92b88076d3d8eff3fbb435e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d314013f7fe2b349da46bf69" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d3247ff7fa9c8e6e51614822" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__10k_20k", + "reference_set": "calibration", + "selector_sha256": "3cb7d6e82c3422fceb0b64f81b38ea16d46e747f03578e1912af575b30712ef7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:10a7b971f0b7b148ae529385" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:11e980ca8d13d7124ecd9dc0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216f8c6f05e83b30de922cf7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:25ac038fda7a188bc1219f15" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ab01d1db41309c4c435f3fe" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:470da16b2820764021c6814d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4d4985344bba3c1b5628cb19" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:59814387124cada8267e8847" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ab1a426a985fc91c4a8a5951" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b65e2bc82093eab02313157d" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0e6f7d2ca811e388af3448ef" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1e045a8d0f8ac3ccea49abbc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:532636a3dee22eb2709cb206" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:65e9807ad6ca001994a1ac99" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6e565876a5f9137a30231a52" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7488ba133f02faf5a1c992d8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bfbed2b478f727972065b5f4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ccabe388fa4e8092d1e16384" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f0ae02da386d63e5716d1d0a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f317dea68d95d4d0c8a88ca5" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__20k_30k", + "reference_set": "calibration", + "selector_sha256": "2eafcb7f99f3a5365232d7e21f20d1a5396143eca9c8a04c46823d1e69890615", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:052ed48c321f723308b3b3c0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b12d5aafdae46787d9934c0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:395b3164461a194d1c07cec3" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:43bb6591202cd6f94f9ca21a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8570a27267e6092579a8eba0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a4e8af93bf3a142a2a2c73b3" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ccf8d7f1ab4e7731e300edba" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d2a0927b5f29e586df77ca02" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d4b9e0adc9d595aa157fb377" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e821301558d6fe84dc3aa6cd" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:478bc1f287d64d4f88ddedb0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:49ac863bcc05c853b04f5cfd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6f11fa694250bf3c5310a4a3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:72a45373f7962436864601dd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9360c918c3c04f1b7a0be060" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b1fe8ef7afb204c8e48f478c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c73ec2984d2c53ce6fb8feb2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e0e552c63d2ed026992cb44c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e28bd80e7759b8248b3531ee" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f41b0f8ba22b349f43ca34c8" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__20k_30k", + "reference_set": "calibration", + "selector_sha256": "a141456d262d7e6951f590b7a61564551aa7757166659b7a3ac72afa1a5932e6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0504a2f0556287682bc0060a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0bf448ae4c3c6a1188268d29" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1f7271713ef3680f9d4337ed" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2805138958358b6d48c902f2" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6d893ceff6da97f2ccf121a6" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:95c4b4196d3e9ebd9604458c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a4856291bee708b31ab211a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9df03893ffadc905eae2d467" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a056c445f90aef5da1c0fcb5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b9d884bd5310006f71060149" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1aa444e3c29898026cabd78a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3189d6d58d506ac3939fc78b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3bd8d082985171a29d74f089" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4869ec6d6b2fb66279ab82df" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:56260b4ece55e0b7980cb944" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5a26c496e64a0e8136fcb0cf" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:61133e70faffbabcd554ca6c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6e226b1cb58a8b0950285dbc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:758f94170b11e5a0553f5198" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:dd8b38a6179cf431754bb491" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__30k_40k", + "reference_set": "calibration", + "selector_sha256": "6dcea454850493141741ff7dc05e2dbc201ae438f15057307003bf7589e110c0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e707027eeb4d419d4de22c4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:333e6643956053ca5447458b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:38c72a2d4cdc164774a2b007" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:781c351f6ca408218504100e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7d30c30af33274fbcc271b41" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:939c0566c893917c4c591c84" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9b0d144c1fbbccb46b5e6108" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b15de98df90aca79ab12c290" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f926356d61039c084a628488" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fffe9a95a2e2ce1acce9d040" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0e736b898a885e1214571b41" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:20e28763f3dac6d1c72c4219" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3c7b6dc8b45fccb56c810839" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:419458732056ebbfcfb00536" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:52ebe86ce6d41d5c924913e6" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:607cf36c897ceb5e4ba3ca5f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:64c1825359f2ec908180d17d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6f8b4464feefb701dc446a30" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9aacbcab6ff1312074a10213" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b9b326f08626872ab6d990bb" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__30k_40k", + "reference_set": "calibration", + "selector_sha256": "d9bffef36dc426e1d29da578feaa7b52dfcc8df1ff0fb3171e7bb696232ea3d5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0241a0ca21b3d34e1cd8ce46" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:218d92e5e401086990583c1a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:255a9787c80f7fda70d0cf42" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:33d11f4982c513a3b7550339" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b733f4a98eb99f81190710e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:51a3d1c282f4431602b53266" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:700cbc58e1030ca064d52f68" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf58e7c8fdde4d5a2bf32bce" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2558f8cf9fb9b4cc010c842" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f9e5c91dd8f04d4921f7798c" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5bd5492d28a7bb01df42191b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:683543309e10ce5e800e504d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6a54f5ab54b2d27a64823d79" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8c43cba9c26eeed1a21619ba" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c1d00dddcae71b5011b8b9d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:aa8de0077c037b1df1a72ef4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bc051d80b9b6dacda91d15eb" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c2a794a092a0da84c58de5ca" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d50316e82bd2b5c08c8109b2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:dd42bfb662401591c6f1f290" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__40k_50k", + "reference_set": "calibration", + "selector_sha256": "d47131fa49cee7df04e6d12da356e57ee7efcdec118ebbe1a8956d629cf1bc04", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2109ea2a59573abcb4941aac" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:47127e8ee01fe76af48a689e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:521f89e95836881a286eb5b7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:561c7150b119d8051bc62ef9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:64ac2dd80fd5e68029e7a0fa" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6de2cfb26539a46a81d2a11a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:85d494942843fc43de745939" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b7dbdd3c2db26ac9f368fc1c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cfade8fd8477bca3c2c7cffb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e0f81ecf0194089dfad4a524" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1ca4cb01f957192793134972" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:22bfdaa90de7183153c2d38a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:26549467cf6b473ad16de2ec" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2a0e9e374009c9f2814d09f7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:404897cccb684bb71706f631" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5d572f0f31c4b07c632ddbe1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:60f6ad3ec670fb5b8ddda9f5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6238f8e659310e0ce3c58f1f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:753c3e5837bf1d082aece3af" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f4906fe7357db70ff5a9a5ff" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__40k_50k", + "reference_set": "calibration", + "selector_sha256": "e7e1677730c775c0a1044899e0df1f06023a5a8cc646e82b5d1d9431efe0ff07", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:00190a31d57c9cc9b4424a6e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3d8217c4b8a81a226b37ba08" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4077f34995da1e340e84f929" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a9a71d421a0de2ed63bffd5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:534113b96172de137044efb3" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5f29ec8c96b51b7e2606a54b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:797f4e08c02eea29bf3029fd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8667f78172253564c0f85535" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ccb4f81bffc203c56d564b1e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e5588b11517e7735c01ea0c6" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:26e2748aba2c976991ff1987" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3eba3dd641111eccdd16bc2f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4eb84752ba0a9fbf2fc2576b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6f0ac12c0ef2b6988b75f686" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8a07758aae26377d22b967d4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c6b384852d787f9405b9e3b2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d6139806b97237b22182d6e8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e485d3b1b68df825a3ffbfb4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e87f89e9d75bbb25afb90f0f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ec6768cec1aeddef21d76592" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__50k_75k", + "reference_set": "calibration", + "selector_sha256": "1f154e89ae76dece31686c1f228ea957ea81e50027e31e72f6c3867c1007da81", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:00374c57163e7864edc3d259" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:021607e92505d906e2b402b0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:099d5e67fa8eaae82708c035" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:242bab4c8bd8fbcec9b08d36" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3afe82339ce66aeaf803fb4f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3dd97c7908cac4f251fc0415" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ace663158ed2998b4c9626" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:52902c5cf78084e796f9c437" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53a6b619679f080e74a27336" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:546a923560493d73ce44a81b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:554cd7b0b9ce44266334b008" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:655361258069c4b8028a7053" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6cf2b0ae71ddcc5a564d0024" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:74ebb8ee77534a6a6eb0974d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:79c5d722d99fb8c893691ee7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8d47c8d1d76f2be51fa4da38" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:94c856ccb7ffe26161dff53e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:adea55591c48783a184faae6" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b2c07c288907ad1b7bc12b0c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cbbf70f353292afd90314177" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ccaa50fae95ca3862501391b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e01df2b3cd734b57e90928b5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e652590bcd9b1bb35939135d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e9e3527920b50f8a09fd0195" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:eb578de10b2459c6f863696b" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0374108611c7b1563a9968ca" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a865adbe974f95d01b5765a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:11560db44446d89fcad63e67" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:132ae2cff60b10c8f4d4c3a0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:254e1484f4639f2dc16542dc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2ea5267032e879dd4846bfc0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:33209fe07815364c074fec61" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:423b05601c2bc4aadadafa0b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5f1a59996f4b181042e0844c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:60b946e54eda7866613ff7ba" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6121b675c8a79a955d1b024f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:63fa8b5c78bcfeafddc591b4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:804f4e9e43e8570fae21ee5d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8406ba881a975a86fc972dbc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:943869e4cd0b5823de0fe838" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:99e6cfad66d2721c110a038f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a05a80b768f3195e0ee44480" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a8cb4861b8d3358ce5ab0f91" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b9b2f270488927af9ba639b8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cac955400c040c299ae77dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cd3e61e22d714b94f5ecb11e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d8baec716b5cbc9e708260cf" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e134a9ad8c51b81cbb964cff" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e38d2c127b202df49202df9a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e5cecb6c5ba8af4fb214459e" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__50k_75k", + "reference_set": "calibration", + "selector_sha256": "32fb4d56971230678aacf3d9b133f42c1367a2e3a91c70f81ac61c4491b9452c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:30e116f7afb7eb9b5129127f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ad18a520fd04b8a97fef91d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b1722f7c87d8b4e0393db8d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c7743abe9a498af79b660cf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3e0961c58400cf4a47273688" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:45dc193f478070fdd5eb3143" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:495fd29853c077dda007e687" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:636e57148ae09040cef15fd5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:655df2071ceced21495cada7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b19af68d38ec9cdeffbf809" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:736e0732b0c019ff8dc8430d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7c1b30923d65a3b318e7ccb6" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:85a2417cdb276db444b82721" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:89dce4a33f7a1ad60ae8eac5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8f5abdb6eafc34a75a140e83" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9139d0e20192acca6cef48ca" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:97ff63314efac4de0158692e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:991ef6ac9b0732e36ca5ad74" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:aa10ec6747d0b8d38ae5f2b1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1325d0a5f4a40585d6f2288" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b9c103c758e57c457a598330" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c0400f1f1bddfa962fb2a879" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e53f133140432c640f9d6457" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f00fbb8984c6bd971443eedb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f25874bcc0cf51f82e384085" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:00f2ea0b11b191706c15367e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:037b205f65816030346e7393" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1098bcfcbf5fdce65df2976c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:11021e6cb18b5e86ebd3b68e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:120918412e0a0154825be643" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:291872a9e4f01ffe55da6382" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2f180ce18ac7ed978ec17a5f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:37fd8bd087c1df88495d9121" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:541c0d30adcab312d9357ae2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6d552ae23bbc1281e77f8cfc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7020e3f09328eb5230f2a920" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7777b62dda8949af695d9512" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:86498a699e18c9e5716d212f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:94d297fc802a275048840e13" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:98635b32eb8f8ef0b3b6d9a4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9bed3b25edd46b0dda8b25be" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a3661d4255a809c75a73e577" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b603852c4faf1d495c70cf58" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b67be4627ec36a6c76330fdb" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bc21e75f95d2af35701243d9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c8896c9bf03fcb90fabfd17a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d75b03cdf15417a26d8cd2e2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d95d5960ea1c324f41320a70" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:eee292b108d421bc860ca58d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fa11dae913a97d7158bcf5f0" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__75k_100k", + "reference_set": "calibration", + "selector_sha256": "438f812f3fe654f170c2c37e3a009b5d8733d8c443d927a181f77946a6231ae6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0225b0fb074813695ccac841" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2dcc8a2698672e7fe4ffd827" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:325f7c9f9c4b240bf758f219" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:37fdf3e44d7002c36ec5a626" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:39c6497ab8874f2c3112ce50" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:41494cf6df3a756757ccf146" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:438b2d673f420aa4084f57ff" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4be31a1b94e8829c7aa20acf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f639a868c06e3f0512f719a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5ab1e52c1ee687122267b352" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5b73bab6e64357ea78a62c02" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:66230f42ec171d0251dbdb77" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6f7c64fec3947b7fa3f67ded" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:807a387a6cdabc9a47e814ee" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:818ef59d170c24f7f13a0a6d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:82e05d9c2867996ab06cf3ee" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8fd5c959335b0c4f0d62c5b4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:98ced87da70aebb9bbf88a26" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c5f650f6f1c39066389a2181" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c9eafe07695478e2734d05ff" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cba4c87ba611192209914dd0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ccb6b757edcecc25c3cfedfa" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ece5f263af1650b662ec3329" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f47237fb4bf641eab8649033" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f68004299897a3490d7481c8" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:07759e549ac2ba56bca83d9d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:16efd535762a16bb986ca788" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:184b4ea0dd4e7ade5122af2d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1f4b8a9b57252246c0f4d6f5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:241da0907b668517b4d778a6" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:33de7b83ea159d1d84a6ef0a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3588601ad6b4b8e902ef8acd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:382f943e55ffe787ebf29b66" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:38503d5a9373d9e97da4a669" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:465b8123a3560dd33a5c571d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:56e8c3be3a37706e2363ac2c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:57a8a42d583f8b80bea0ccb7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5d425c9b5302f68b2ed0fbbe" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6d71c8cdb85d86c5be7f4206" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7add4afd51a8d8c9ae477048" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8095d7b96465960dc81d2e9c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:812f25ec512f027f9e6edf5f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:982ffe6fb410bfdd3dc7d28e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:99146c7504299f1634bf3975" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ab84be7b4621fff8150ec8ef" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ca11967f9976ff9828f3d124" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cd41ca0ee6d54f2b2bf036f7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e8c46a036a2f429413544771" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f380789bb9cd00eb6baacb5f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f3deee8affa47414ebb5c531" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__75k_100k", + "reference_set": "calibration", + "selector_sha256": "5a67cd764147d219e3515e3b89cf732466f9c48fb887c017513cbd44f81c02dc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:02419020ad8d5e7b50d4e147" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0ad25616442d6f3add0534d1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0df37c5c857b146a24f65962" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e161855a1539abb69567444" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:347d8aacbafb98bb3754f12e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:351e353a115fe9fc689b3c8f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:39df78089f9f7a62ec857aba" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:41e9cf6be0ffb0caabf024b1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:43b62c5e96b4c1ff0dabcbb1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4b3a13f6c721b7a04004dd85" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4c1c6ac207829e3d58b6ed9d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c0e18c4b003df14f7c143db" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:70243958bfc888d5bab7b24d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:87c41f243be6589b405cc0ed" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:89a8c357861de813e948f940" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c66cca865dc180d7b0622b8" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8e2ac56c74825d0d506ee236" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8ff335d6c6b410043425f3cd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c715bab776127c5df8976232" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3ed4a6cd00886cddb01981d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:da1388be2c4b4f5dc4b35657" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:de7c6b77eefd16804806e135" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f249b74202d70bcb6af692fb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f9826e633cbc341222541ed3" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fc8dfe4c6569f5bddf07bf45" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:12c799147c13c5ce09ad2111" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:166bc92f9505053e81ce2b49" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:262568193fe4f3b393cc7096" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2861f7e52ac623869fc7aa42" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2938d5a032b78d1ed98f0207" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3017907315d4a04158872c8f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:50d12973c96a6a5db3915ae3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5553021b30605e8e8abab98b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5a5f7146695bc6a576f3055b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:613a1f6bd8c752dcf05389fd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6828f0280cefc4036adf3508" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:70660d81bb423ad2c36d3615" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7db28902b5e4e26b0a4c6fb3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:95f4fcf315356e219273ab3e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9a4b12a0c654c51506956814" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ab24895b9f4e8b8b8897d90f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ae62098acd5935d65cab8136" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb69a6b3764e3f884e4aa2d9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c4472202deb6721d0136c990" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e67d180fd036f803b5acf084" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7130fa816b6575046981eef" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ebbf89635f488cbdb2e3ba23" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:eeca9fb2c499a0e86bc661b0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fa5adf4d4da91d31d984cc57" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fe6881ab2bac30bd60b0ee28" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_a1_standin_declarations__100k_plus", + "reference_set": "calibration", + "selector_sha256": "b123cd350b25ffbdb33cb2e93bd6b57e2d36bde4c8edc5e45b2ec1d91d86cf34", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b72f44f341a3d1c4c8fcc571" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ec326227146c198aa685c52e" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:7e459cd803b9778a0b24e47e" + } + }, + { + "name": "statbel_a1_standin_taxable_income__100k_plus", + "reference_set": "calibration", + "selector_sha256": "0ab74de6ae8bceaaa1d5a04365483af0e0ca9b623e4ae701333d1da655e51547", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d104436d6743b4c030077c7c" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:521200a07520f02487c8507f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:de46d0df44def91363384dd2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7fb3b924f7f55fa6cb62103" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:6cd13f5663a6a43a8ddd3493" + } + }, + { + "name": "statbel_b4_declarations__joint", + "reference_set": "calibration", + "selector_sha256": "f462b22b9609e84bfeb74868bc2fde240a51c038f28927611601e824fb2aeba9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:30213a94a5fbd0cf462ea7ea" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:47240b3ae26bc119821a6098" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:47de8daa25362b289e557587" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:545e7f759661430c2f098973" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e496f962650242e21136a03" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:abc2f5c51c58f0acb60b0c77" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6a072e068b1a57467222f0a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba38b418f952eb5fe192fe13" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c785bcfdc0d6a818c5605495" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d80f9511c2e1e75b08019cea" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:03619e28dc2e0fe21e6be9a0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1931e0256eddb67e4431b0e5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:47e4352284a914ac47bdd354" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:62988ed88835a49d720ac397" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7e521e1438604fa43287b52f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b1fd402b489a0faec3afc771" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b7b8f2c2ebc1879829be471d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d23eea806065a0aa21374131" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e49605f1b8bdef6daf6d6662" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f2f380170b0c89bff7c4ebe2" + } + ] + }, + { + "name": "statbel_b4_declarations__individual", + "reference_set": "calibration", + "selector_sha256": "a832417f42fe43afbeb4bc776c153b283d66aa67b271014da0f03b2eac3a5097", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5cd58387095122d5d4bf33f0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7627ede5832adc817e9c8c49" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3d68c8c496736e437d8e8df" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b0782d1c52e1def5f9964d0e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c4aa0a8f10792a37e688f2cc" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d00c969481c344bc2faa1825" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d327b6bf8cdbb046ed8332ab" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:db367480af1684d2c1e6a956" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dbeb3603c33ddbe448bdfe75" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebc68a29b87fed04e9ca2a05" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:19ebbe0d05dd5d1f6dc5b864" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:34639aa445f8af6bc774ff3d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:40f0ed8e84dffbb3b6f45694" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:63e540fcddfa12b9106bc31c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:91644e2fd5fddd36df6c55e3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9640d7bf6d3e454b507c7d17" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f22bf961164f8ead257dac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a8629d96a33b60363340f546" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b12ce7c1bbfa08297366361d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d71a3e710a62108aeef1280a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e28cae812ae79bd17a034cef" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e35ad15583a829ebbb58c9f9" + } + ] + }, + { + "name": "statbel_b1_enrolled_tax__decile_01", + "reference_set": "calibration", + "selector_sha256": "15e458c16c9e876233b37c87c4561c9013f4ab4b618458d491335d0a39851242", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0b2b5e737d0305a356532b3b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:aef702c6dc7f33e5fd7d75cd" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_02", + "reference_set": "calibration", + "selector_sha256": "adcce56dfca1ef8ca76abb506a6d53a0f223b30dce40e1bb4ce093312b521b31", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c6ca78a1c708058c93a0f976" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4f3788ec9e96cd111de2ed75" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_03", + "reference_set": "calibration", + "selector_sha256": "037531ebf14ff972671c15e38f06f1f57e3661c01e27748633a92db2e6062dda", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:109397450babe832524a5c97" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:863e833a5e0d358371e01576" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_04", + "reference_set": "calibration", + "selector_sha256": "a77eab441fb15312a9f0ff330fd2c795d4b3c2dcc8d3b61fb92d71c0fff83354", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:af9649af17a29cc5dd903c59" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f2749c95a5c320bab916ba58" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_05", + "reference_set": "calibration", + "selector_sha256": "deaee715d6aacc914db31488479673fbf6a5a3d1e17c9fbf10ae9bec392bd8cd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a4e850043abefabfa3ed8b0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:151998cb966045d14f1d613b" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_06", + "reference_set": "calibration", + "selector_sha256": "24e52dcdd69cdeb5ea647eb70af9ef0bbbf190b6f8b6882413c7fdae5044a89e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:72b19dd783c1bc3da72aae0d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3e92791597e28e381742c1bc" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_07", + "reference_set": "calibration", + "selector_sha256": "80cc6fdff54b545ec6587aa09422d4d1b046892ee8099fd1772ed42c38d6ff18", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:076e8b7e6856e7e8a9c7352d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:407759f215b555dc80737775" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_08", + "reference_set": "calibration", + "selector_sha256": "d020de9cd4a4e52046ad3bda036c653b707118351a334a132ea0472d508f30a1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5075cc8a100e029980205e4c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cadab754ee06042f8926a25c" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__decile_09", + "reference_set": "calibration", + "selector_sha256": "84d67e7b10cfa09034fa8d92b1ccf081ddb1008d81b3a72357f5c4b8033896ec", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:de89896fe88dcc2b7deb9565" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:85e3ac9e76520c5670786042" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_091", + "reference_set": "calibration", + "selector_sha256": "19a5d80aed3efdc0443e8b1feac57941270744fbdbe3d9cd77974000663b52b5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:46f239dcfed5e9445903306d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:18705ea80ea31e4ede8f635b" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_092", + "reference_set": "calibration", + "selector_sha256": "ca49aec7b8f4f1e8d7673c1e82e6d1320cb5957f1cd09d0db83851bd0597ed60", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f8b2d677fb9b21b13760d44" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d45aa345de0817f49d4547f7" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_093", + "reference_set": "calibration", + "selector_sha256": "45ec3898710fe899cde14cfd4a1d7742709a6441a70243a0d35472160d5f68ad", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7e02cda58a39d38f57c9d523" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:27954ac20de3bfff688e68f4" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_094", + "reference_set": "calibration", + "selector_sha256": "e259c461b24dfde2fe3083682af2e126e918f59073e26b7374b4282c8dd38ec7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bcf3324ba69806b46180b770" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5b000df800d4adb5a9f7db59" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_095", + "reference_set": "calibration", + "selector_sha256": "9fcf6596dfdd6485c186aa4b5d9b6479ef10f1066fae455c5c90c0b16a5fef69", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a2ba3c05dfec9a9a7f2e875" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8806286c6848317c04b9bbd6" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_096", + "reference_set": "calibration", + "selector_sha256": "bc3ce493a73e137c6a20d18456460d7d30bfd0da28560069a5f5eb64e8935e62", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1ce91b227610925d0740895b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5124a8439ea9f8f08d3a8e1d" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_097", + "reference_set": "calibration", + "selector_sha256": "606c3b2e9c37d8f6c89c20ab45fe8cab4cfbeb91b11248a1b5d5be1f127dc397", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb3fdf0a97324fdd08a83c92" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1ccbc5af17009af540cd2a94" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_098", + "reference_set": "calibration", + "selector_sha256": "42d9beaa6f9f5edbd88171cb70141e4cc70ae2f7619c34de0b6d57c651203ae7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a885fe815f21b066406344a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:73df832162a926f9f8cb4deb" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_099", + "reference_set": "calibration", + "selector_sha256": "55d9a9bb76f5e50f0d037e7a148699867aa68a2daf69f82d74b9e6f774599b6e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:707eddca745f7611662f6d46" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e0e73ed759fbd62f8bf184c3" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "statbel_b1_enrolled_tax__percentile_100", + "reference_set": "calibration", + "selector_sha256": "9d57843a0c9816a517a859d8ceecbf5d80cbe9a5698257223c4c0389c7aaf825", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fefd7bd484d320ad42b5f7fe" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f3faa7fd2c8be738fa75da24" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:2e4f54e61171ff8e5ed5770f" + } + }, + { + "name": "onss_worker_personal_contributions", + "reference_set": "calibration", + "selector_sha256": "b078c7128d3da087c087e6172f799721377a83fff6ed9fb5342384a298eff77a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6355af1bd917ae71a7df3ae" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3f953c8cbe00192899c93c3b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a66b02d02ed92c58e542e7ed" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:016e305bd1f0d6b707d5789c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2ed8b7eebe206fed5c4b124a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ed3a3dfb35252f0bb52a0a04" + } + ] + }, + { + "name": "onem_complete_unemployment_recipients", + "reference_set": "calibration", + "selector_sha256": "f80225725da5d8eabf86449cb3dda25df448948f9b523ee40617141d6daf7ccf", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:466ad99667f2d50f94a42726" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0c722a128a1871eecce5232e" + } + ] + }, + { + "name": "fpb_unemployment_benefit_expenditure", + "reference_set": "calibration", + "selector_sha256": "23b469afb84b648c2a7af5dc4c80295c1ae2488c65b70c61ed38633b4e2597f2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ad11668f4cf559bb3c388f" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ad11668f4cf559bb3c388f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:61a041fd9dff09745593e4da" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2b5f46c35897b369659a742e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b36f50e4b2548e27c906c37a" + } + ] + }, + { + "name": "fpb_grapa_expenditure", + "reference_set": "calibration", + "selector_sha256": "c177aaaee2187c53a1f79b86ccbfd974f1cc077e776d9b909eecb915d6753630", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:776e68a9e93ca03151c53baf" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:13ee4f4b5a469ddeb487eafc" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:776e68a9e93ca03151c53baf" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1d1feeabde4c29a1e7fe8b2c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4f321ab4b4483cb6530a6cab" + } + ] + }, + { + "name": "fpb_net_mixed_income", + "reference_set": "calibration", + "selector_sha256": "5f7cbc4eb439e0aed2aee10ac75fd54f15b17a607260e70e7b403ce4ddec91d4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0db8ec51ab64a7f7519fc5d4" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0db8ec51ab64a7f7519fc5d4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:82a8d913db8aa3594a182492" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:aa9d0691e462a66d0427277b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b0edd0b4792972cc7767b04e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11001", + "reference_set": "precal", + "selector_sha256": "f5737a23c6f7db0bb5fc0c306403e61efdc19cc8344f270d9c9cb74060b0c4d3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f835115b964f486edb03713c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fa23d77da7abc7a7d1b33619" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11002", + "reference_set": "precal", + "selector_sha256": "3ecf576a2ea632bbbb56ad597697931b8b4fb983d908ba0920a414a94c028895", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ba2424c10ef64feaf16d030" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:76a87246c43380f4d15acf9d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11004", + "reference_set": "precal", + "selector_sha256": "0ff4ae86c2c465e316d969876868b7522c88d7c788d54aa2adad94354cd22282", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1c156d0b0bfc79da703fa489" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:489abff34d4bafe03be6ce03" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11005", + "reference_set": "precal", + "selector_sha256": "fdc2cbde3345ddaebca7f904bd8dd4e505765abbdd1ad6c2e6e8dcb6693f4d68", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed6bf439079a3a43301b05ef" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8f33ce08240c6d696e7717d5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11008", + "reference_set": "precal", + "selector_sha256": "bebe6b464e4ccc3929277625b41f800ec9fd16a573204f145de208511db5468a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:24f980b6aeca203045018aad" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ec5bde165c3fe065952a5630" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11009", + "reference_set": "precal", + "selector_sha256": "6bdc2bc1acd51dc519590ceb4e876b39466edb664fb22bf779e5a8c65d91486f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3d2995f8041fc351e1b93796" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:05d68fa00b6f7577c44071ce" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11013", + "reference_set": "precal", + "selector_sha256": "73cba3af6a35522f3a3d7152e391cbe111dafcdf952b53255052b2d226ee25a1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a8c62bac99c48d4064404d5b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8ea4977f8dcbbffd9c122679" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11016", + "reference_set": "precal", + "selector_sha256": "00b5babb9d902e0cdf10777dfe600a86035d4c0b7bafbf894c2919861c3d3cd1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3a2d1f16fd426c4645fa3ed3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:053d25099ae1fda042e699ce" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11018", + "reference_set": "precal", + "selector_sha256": "69502f010b8992eb19aa724d9a17db9e5b0c3d0f4988e247c4d6549b8b2f85ea", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:baa871d4fe4ff0792582bad9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ef00b35738396f1aee433a71" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11021", + "reference_set": "precal", + "selector_sha256": "a334ad3738e7a5307702ce9cdbee9b9bb8baa138380ae71fb6bb0646f1e698c7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:48cec63734831d3be43e08b2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:daf025b5c33327908d3ef404" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11022", + "reference_set": "precal", + "selector_sha256": "e70f1026344b53adef89d8001b1e5a6a4a28f57e7382ec582c12f82416d6d9b0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b404aa5f491504f62767655" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fab1b0b12b9959599e80dc23" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11023", + "reference_set": "precal", + "selector_sha256": "3c975a9db6e525b9a9e067bce9b68a634c523923b143294ff541ab2d95104d67", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:08116f6132827984973e65f4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b3fc2c1381a33d77a4b6fe54" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11024", + "reference_set": "precal", + "selector_sha256": "ac4ab2790ed05154da26c9b6c946245665cd36de67f3a39b479f8ee615aa0de3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f5b244ddc70261fc1c5f8da9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f0ce104034230e29458fae35" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11025", + "reference_set": "precal", + "selector_sha256": "3c92fedbb8bb0b95786b835d2a59b754ef9113f1e32b7b91b2c3ba2f68e8ffd9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:092c1f4acec379d6b08dbb28" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:43df5c46866f93cc67ec9434" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11029", + "reference_set": "precal", + "selector_sha256": "1182638b88f3ef25e1b0a9e85e5ce5a2c827f0b99818cebbd59418fe21f5d605", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f98312c26d9a824224fa6a51" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ff8d84fb54b95688daed343c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11030", + "reference_set": "precal", + "selector_sha256": "1416d60b8f83988e6e9989050b613551c049fe29d0b7377697b25ce3327a29db", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:891aa52e5f887cf1bd674c25" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d9efb621048e19161f729435" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11035", + "reference_set": "precal", + "selector_sha256": "37998009f8421a0a11850cc4b19bb901abaa6e970310dc254fa7a002268f824c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:db2bd7cb8285dee24cb77b49" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d38f5aadb1f3b34ed9d75f43" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11037", + "reference_set": "precal", + "selector_sha256": "a11aea844974f499d07191ab592c4c45dc8193c77b077d17025453f037446948", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebb1a2c549597c0fce21afb6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7790709fd3e7fc633bb1a9df" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11038", + "reference_set": "precal", + "selector_sha256": "c1284a6bf94eaf6cd4a4080ae4d08858694a2f1e1b9e42f4e30491447d81ac5b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:98a3c165a4741125655ed192" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:46c88a2246d23d7606769614" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11039", + "reference_set": "precal", + "selector_sha256": "df5c1ebfe1ded360dbb639d0a204ef72664d65d9d4a0fc3e8a25712ea1c922c8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4bf83330863636ea38c1d733" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ea11ec0c20915904b4dba333" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11040", + "reference_set": "precal", + "selector_sha256": "7b2ccdb45ffd46fa5392991808911830f106a7a476faff2c46f628dd08768ee5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa8d8999f82ceaa94631b056" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3539535dca7cb5ab7e11cc49" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11044", + "reference_set": "precal", + "selector_sha256": "68a3dcccaf4046e5a13a3040c2c2cd44574424e2652309c2ef588df97e95fbac", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:aabf84f79af2cefa2171d2f7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5781c7dc65c8a2457d6c1c18" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11050", + "reference_set": "precal", + "selector_sha256": "42fe474ab75a5fbdb47af549cd1a14f6030d8c90aa0b1a5c320d12f14b9887ad", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2e6faf54b3e648d21be8c45" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2ed9ae8d907b72caa5c0c21f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11052", + "reference_set": "precal", + "selector_sha256": "78cfc299a837e15fc67ca1a2bb98d20b002196ede52fd9cc40079941eaa8cee1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d756c12971df249306e7d3b4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:028febb42a6cef4d8886843d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11053", + "reference_set": "precal", + "selector_sha256": "fe2c075cb156d85a827e7fc27aa9dfa26ea91793e95d86647764a4c629a04268", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d624d5e14e2a1e017f986c1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cc10e919aaf44d9197ff7339" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11054", + "reference_set": "precal", + "selector_sha256": "7a055590897355ca266851df7a525f08447eba55a707bd5419195071969d89d3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a2a11691d7d6e984c13e3050" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b39924a96ddcfce3c87e64b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11055", + "reference_set": "precal", + "selector_sha256": "ceda18e5d4aa1993703041046807ba00cf281ca07d6cf34831e18ce51f3a7b0a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:66de23402f11fe4d3b3f9dd8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:412cb25d8c7e46dc4e5fde59" + } + ] + }, + { + "name": "statbel_population_by_commune__nis11057", + "reference_set": "precal", + "selector_sha256": "495806b282ccffbeae70ab8558d3c2cc9c8cbc80e0b6959af50cad5e47c300bb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:18ea2e86b6dca871d88c9e4e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:41f5563e143a2a142f83afee" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12002", + "reference_set": "precal", + "selector_sha256": "938dcdfa122acbaa5a7b90244de037eb1dc14eef54ec17844ca59342330ffae9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f6190f8fc954c70d136f4ee9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bdc2495767a79ae1dc76b7bc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12005", + "reference_set": "precal", + "selector_sha256": "79647c1bc3c9c7d53b49410bcb438092e548a3aec3f30e5eee43fc0e3d5ecd42", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f1775f2016a51e43fe59b4b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a3e6a538a5c3587190bc1b8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12007", + "reference_set": "precal", + "selector_sha256": "f863542f9e787e0fd00e84bccebe20e41ee9c2c540d1027df45c7b7831e983cb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:10b473e26371b4b277607435" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5bda82f348c370d4d64bfe99" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12009", + "reference_set": "precal", + "selector_sha256": "451c40ffa2ef5b9c668da83d3174662183771f8885b45ac21d747cb382ec2c5c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6a54548943390bb86e8931d4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a0aaeae509d21c00f4de2839" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12014", + "reference_set": "precal", + "selector_sha256": "06260014497c47c43e92e704587a6885ad957bbb5ffdddfcf11736af16aa7aa0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f4eb38aa2aad661ecdd5095" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:eae7012795f594bfae6d72e4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12021", + "reference_set": "precal", + "selector_sha256": "fa3851725c457e0b5fc7d3622b88a5a6af86a55854a0113c61fb12227a9dd8df", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cef10270c47a06a30ffac49c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7877b451b325c40afecbba75" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12025", + "reference_set": "precal", + "selector_sha256": "71e2af9c2982a158d19bc0051a4c64b7f038049e51f02cccb3cc15f473b8c49c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:33452ad4ba8d42960048f7bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5af90ab639f71f5e9287255f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12026", + "reference_set": "precal", + "selector_sha256": "6f454a5e02f40b30a672def131d59fb4a1af6b5849ef33775cc96a910624fc45", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:48bd6471bcce0cddcf9b7dc3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bd109c6910a9fb4ecd2643cf" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12029", + "reference_set": "precal", + "selector_sha256": "d19dc9a395e006c808ee920c0dd134cb2d95496d9875821dccd0ff4cb5f7fc41", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:626bca7ff95c4ef6e5a340ea" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:60284222c117b4c7a357a9b2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12035", + "reference_set": "precal", + "selector_sha256": "62be3570d4278996f91165565b17fbd8430e2e4c4f3321e694121ad0f3411e88", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ee823cc457c2997863731355" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:04119be4be748fe4c987e50d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12040", + "reference_set": "precal", + "selector_sha256": "3caa78777155ea60e4c2f2604da7c771511cbc23edd84cc7d109ba1a0de55dff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:aafabc0708fa2641fd703750" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c98f469af1c7a63dedfe0ca" + } + ] + }, + { + "name": "statbel_population_by_commune__nis12041", + "reference_set": "precal", + "selector_sha256": "c229dc2574bee9f321b6201a321d9d929d16a270247a0961112c55ace0b90743", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b55f80c204853baae1a1edba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7b82a4a6d12d7dc10fa64ed0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13001", + "reference_set": "precal", + "selector_sha256": "5304718611286159441609d08aea641623e2a643f559867ab609df792eb25037", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d52f015d80c444dfa43859cf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:024b4144bb95069bc5aaf01a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13002", + "reference_set": "precal", + "selector_sha256": "1ad0bb2a00a9c30203b31e2465116250e62e334f441b3455c9a574000244ccd3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cebbe381ca8fccdcb1f61a23" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8671133f2c47cac128bd8fa8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13003", + "reference_set": "precal", + "selector_sha256": "eacc5a5fab26298b035b1b292563d24edc168e99e3e26ef45e414a4f432d20b9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:976fb693e7839076b2f9fcd6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:229c3d9fb1fb9184e5f428aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13004", + "reference_set": "precal", + "selector_sha256": "52ee3a0359713a0184baf4ae944610f7fa1e495e9898284b8c978ebfc92213e7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c05b10dbe151b156f627d0f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9d4cd0380cd966d471d49db5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13006", + "reference_set": "precal", + "selector_sha256": "78bce2dffec8d9bc5ad81194f2211eae290c24b2edc6088e0618a9593fc39f54", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f7778bbb860be66dd9dd485" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d9a205ec69373647d26b84de" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13008", + "reference_set": "precal", + "selector_sha256": "765f12fccd3363c006304ed03b3fec907481bc5375cd94cabccf13a86c12b71b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ff89fb85cf7345ac72dc6ab8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:107ddc3b0536d8493059274c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13010", + "reference_set": "precal", + "selector_sha256": "7c183664e717a86de87e35214537c1d46548e1ab5b1613cac7cd3435c2746a97", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:30e7b019c4b92bce243175a9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:85b37130aaf421e3a0d2d096" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13011", + "reference_set": "precal", + "selector_sha256": "27758f78b2954db7e09d2e767d719d9b5c6bfa61ec43c90f5f0e5761fe0cbd52", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1db0dafa387cead3002f7b7d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b8228db6765482fbccafb80" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13012", + "reference_set": "precal", + "selector_sha256": "e58e07b6cc58a69de6fc9524b137c2a63ef7c4a70ad8488536cf614ffe68cb8e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f1424c8d7e34bc49400eb97b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5502e1ad5bcbdeeb5286e999" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13013", + "reference_set": "precal", + "selector_sha256": "0e9a80294878669a2ff06205ed14663b48652c35ca89549187c05a788d5d5c50", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d4a175a703e3164f6e373eb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1bbd3226610a2c1b56f1bd98" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13014", + "reference_set": "precal", + "selector_sha256": "13b6ad484653c228e4a9a11f82a34dbfc82cfd76618a6ba3dfd8d3c0397634d2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ce392bc5794f7800929262cd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b6c0e41c69e7658f9921474d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13016", + "reference_set": "precal", + "selector_sha256": "b4d74e0e8e74d46379c737faf7491b8b13bb25ebadea48399355746a61dfc851", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c0302158da4a50383d565f81" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b637d7a11459b0aed7f5c039" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13017", + "reference_set": "precal", + "selector_sha256": "bb95da21b8fa445812d0be5df97523081ed7784f07b4a766a152346196487c1f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ad4b4bc71267284a7573dc7e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d2c1e4c000b66200495bee0a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13019", + "reference_set": "precal", + "selector_sha256": "bfb7f0f2a4bbfe0c5dfcda9ebfd3952c87ed25fcdb702136b9e06588bb72f8b9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e970df2eb316e2d28e88027f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:baaf6ca93708c030f38f6f11" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13021", + "reference_set": "precal", + "selector_sha256": "77e4ea18ba8c4cc49d3c55b7684bfbf93eaa868a0c8943838b624b2d4c3fc286", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:82687547c5bc5bf7540b3345" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f4fa64095aff80298ea8594b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13023", + "reference_set": "precal", + "selector_sha256": "514e81505d0b5e94f15087a5052680da5060170df32fb50dbc94cb32f32d7d46", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca77ba8aa9abe7613d7e5161" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ce3ea8232a1766548edb5f51" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13025", + "reference_set": "precal", + "selector_sha256": "fbcc5a5b9f1ff79917ecdae9e82c035fc410cea9a766361dc236a09cef55ab8e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:642c3432f8266c0e6c4bb1fc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:49e086381f2edc8072e1ba34" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13029", + "reference_set": "precal", + "selector_sha256": "57b8f9823a6aba002ed417077d427334cacfa656d72bb1c1b90cbe0259ac98c4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:09dcc9eb78ffda3711909c89" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:25e1f88ec8ee0e8c3951c0a7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13031", + "reference_set": "precal", + "selector_sha256": "2d0da4a75ef728c002f0bd0526d5acf02d827eb22f4ea6ea0fb77be4b8b1dc4f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:393be545013ee65506482cd9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:92d5cab4536fbdd14238a944" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13035", + "reference_set": "precal", + "selector_sha256": "c731871cbf5206228b09e34c010d2ba9186cf38e6e126eaae781da1745166424", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6d46ee43c52f46a7f24d9a3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3107a75f5078e6020110b2a4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13036", + "reference_set": "precal", + "selector_sha256": "068470b49a8ed74d41133d349020126355ace88842cbc6e2d21376f40f83e12f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae24c11949f28849171412a2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c408189ef55f9da596869c8c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13037", + "reference_set": "precal", + "selector_sha256": "d0e22aebb36fb1ae47337c6b3efe79d9e1cacabd3caf742c49197691684392fa", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:863eee0a9aa6bb0806246b76" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:864294423528956ed5c8688c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13040", + "reference_set": "precal", + "selector_sha256": "fff9a7ed60c6daf14d795e851a07548c2d70d1e5f3b8fbb394dc28138f29df56", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f0b61d7c8f0223ff32d5a082" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5eaba42ca7ffe29c25c7309d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13044", + "reference_set": "precal", + "selector_sha256": "e571c5700e4cb15b906d22eb16202d279bb6f875193e9402c865f7d02d7a1fb9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53afa95554353d0f64f4225b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:975fff1cc985958a2a6b2613" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13046", + "reference_set": "precal", + "selector_sha256": "f1466b6225835949c1f3ca78b5de10564b3a292fff0451ed83807a5c3f1a7552", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ac792f7c1625c5e811d91ed9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e9299e62985abe8dc3dc623b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13049", + "reference_set": "precal", + "selector_sha256": "99b26eece101a37f48c9cb63e1ae1a15e524907f7840474d38e0e34899ea3418", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:60dc283e6f738559c881494e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:48f377198de64aadf0b2ac9e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis13053", + "reference_set": "precal", + "selector_sha256": "52de71d4e240b9de925d8f7ec663ec554d1a92215c897ee33ff9fb881f8649ff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7bf8c05501cd74064bd8ebf0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:deb471d6e175881b2ffc1fc2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21001", + "reference_set": "precal", + "selector_sha256": "47d8e62afa838e3419d51fedc05f20b4e60d317d67ef4ee43cb2a4e680f3e08b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d585c928c6696cb65cf6d3d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fecc2852d45a6252c16b7cd9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21002", + "reference_set": "precal", + "selector_sha256": "bb62337aaf2860082a28630c4b830e22c6b3471a57bd9380389509fe95b161fc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3f43ac05a99a9609571acfba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:51265bf4b22ccd649b9f946b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21003", + "reference_set": "precal", + "selector_sha256": "c794e88a1fdf740fd313fa1efa67dce3a7b16e66032b04f8cbc8b2aaa7615754", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e99159281cb445de87f5e53" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b3ed4b37ca507751861f344a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21004", + "reference_set": "precal", + "selector_sha256": "fdee38f2a4a82d79dae377d5fe0a107f2d7f514fb3254de0c929e34b8ab73a97", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:adf7b902d17a732ffd39714a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8aa77f63b43173079a3049ad" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21005", + "reference_set": "precal", + "selector_sha256": "9ca3a51791acd444f8522633c32c0a5bb6a759124c8b8d11059702eb265fc361", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a36c085c3b65b1b35557485" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c362e566e2023fb414c81359" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21006", + "reference_set": "precal", + "selector_sha256": "adf5ba82df01e7c48d92ad44ac5a107e04d964057ffebdc5376a52c2b690db4b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3808bccd2c24287170bb73f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5ed60cc319a1b7e044db7ffb" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21007", + "reference_set": "precal", + "selector_sha256": "c43914f241555336a798e8a979e5918dbff3e1fffa618eebc0a58f1bd671b401", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c171cf681cdd918c0094f7f2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8842629954358fbc44786484" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21008", + "reference_set": "precal", + "selector_sha256": "1d9d40b132bc956b0b922323e3e6f85b726e6658f931496e8d4706108067e153", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f56398ca97e85fb7580fa156" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:41da97d51a1f5be5d3d174dd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21009", + "reference_set": "precal", + "selector_sha256": "cf46de5c230861cb8b2548af77d3e9ea003587e667090abbc2c77665532efc89", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a4db8707f90bf0273197bd4b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ed3bfae7d102c26b67248f33" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21010", + "reference_set": "precal", + "selector_sha256": "9f19d9aaf904b0e0e4751b2522fe12fae9c8c64536ae68a426f3f75fefa95c50", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1ec9cff646c9328e12b5c444" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6829de9858baedc2ac6d2a58" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21011", + "reference_set": "precal", + "selector_sha256": "fcdec48a1b10b42633dd18318463278203965a95a9ba0632cdf510584b07c676", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:58c68d409718ade65e5b8621" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2c1709edb84e75884383dc92" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21012", + "reference_set": "precal", + "selector_sha256": "3898a6f0b0a18572c8f153ddf7b3c333bb72b74f8cc2699b445e60310a627b0e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:578c2849c6e5d57df35d1952" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:55c511f6287ff572c41b78b9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21013", + "reference_set": "precal", + "selector_sha256": "9abeed7fe460e773d0ea22b764618d87efee3905972bba3dc672592b0bdc00f8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a620c03e1210238fc29ea577" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bbd88d07c22e33b072ccbec7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21014", + "reference_set": "precal", + "selector_sha256": "d60fb5c8e51b0f48c2f265fa37f9d753e71b04428e0105e8e1576274c43fcd7d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cfc0334c4613fff27bf2b99e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4fea7bda7261e2bdd9eb4755" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21015", + "reference_set": "precal", + "selector_sha256": "b4c2192a20bc59346c3112811680bff6aba03b3248283a82a2274c5e97a648da", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:077ba5c4a856618fbd129319" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:512b66d9aa7df2d5eedca228" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21016", + "reference_set": "precal", + "selector_sha256": "e2d7d4030dc035766853fb3303bb8b03e34fc7c72a37141040b688522b39d882", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f009d8f5cf42298920f4e918" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1671baf50bec38668f206a95" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21017", + "reference_set": "precal", + "selector_sha256": "f4296d8e4c7a050c1bff4f41cc37e32a219684a3d132548721a3d29cb3385740", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b004cdb8f5a52eed4181d751" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c64541b64e251b6f0df59c6b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21018", + "reference_set": "precal", + "selector_sha256": "b7b1939a462da0bd6fe9a86476ea34ed0310e9b420ee93ab7cfd1299a5849d08", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3cc2395a22bf1bf75d5461f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:57b73f7eb35518f5fb362ba3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis21019", + "reference_set": "precal", + "selector_sha256": "449c8f39513ad481154aa6f20e2301a7e2f05841e82a54766bebaa175e50aa2d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:57f326ae5e8333f987bca517" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:93fea638fd0c78ed071e5c1e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23002", + "reference_set": "precal", + "selector_sha256": "1db102e118425fce6b227d4e18d7153336f47900e6914450640923bc103f456a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:02c1aeb6508aef38296abc03" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5a169a92925d733b32eb2335" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23003", + "reference_set": "precal", + "selector_sha256": "e465195fa21ccecb9c766d908a831f18e56ad7ddef1202d484a29bcc721f7549", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e75560176e8ac1c5c90d408a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:70246551079a43904e810cef" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23009", + "reference_set": "precal", + "selector_sha256": "f5804e195032c5ad8ce2fb50b83bd8beedaa1b48e6e76de14ffcac6547298a53", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9e015382188dad2766ee592a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ec0b9f8e63450a81b5b52b78" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23016", + "reference_set": "precal", + "selector_sha256": "a7d7890aef601dd5a6987b2ae1d5b29e3f386e618b2a2dafd8092002ef013dbb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:970a1a96b78bcc18fccc82d7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6b7a3cf3699fb7dea30facda" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23025", + "reference_set": "precal", + "selector_sha256": "286848aea88fa1578004c0f111184a9187e7180c1d1e93ecc88a5664b80c3a48", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9de1f68743a33ca0db77c515" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e1ad39ac42907e07385ce8b3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23027", + "reference_set": "precal", + "selector_sha256": "2b3d568fdd7ee588b8ca66e78829acc43124aaf26754ce84b4c02ba311cbdf02", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:73afc64d64f10b8a9c72a237" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dc98104e91fe5dec9f4faad5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23033", + "reference_set": "precal", + "selector_sha256": "e770e080c66e5a4747c372db8a0e777b253f442f0baf8abb0082f0ca8cce7ee0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a4b98bbe9e8d2cb634f2729" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1b15e3b95c368382b4cd0d1a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23038", + "reference_set": "precal", + "selector_sha256": "4f632da96d4bf9ce49c9ccfa926ef59f1798c5f52728455419d11cfa33f9276c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5715b8c9c20c8b08f6082a70" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:072861c83f9d142312099318" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23039", + "reference_set": "precal", + "selector_sha256": "792c76d9250194295ba87c42ef23670d38c5bbd91a261afb123aab3eba4202dd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:95941c49512c441b7babd917" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:547456ac6fb7307995fdf338" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23044", + "reference_set": "precal", + "selector_sha256": "fdc87fad38f4864b0bf8b847beae11e5e3d00364d468e5264fe2b0d1fe25dc3a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:291cfd1f0a5d12d9b770ab5c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b19fe3e8763d014f17f91709" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23045", + "reference_set": "precal", + "selector_sha256": "d50c67b7ecf5aa066a7f1775029ef0061c2c1e0adee6affeb4064b99ff11b990", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:16f1dd1eabeb3286a9982a6b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1c29edf26e20ae7cae507404" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23047", + "reference_set": "precal", + "selector_sha256": "417bc68c129ac9a69751f40864b4e588f0ef760b8895e25f8d255e433cd3a7b8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f182c3ab8fed8e6f1159af9e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9a19d65659874887576ea6f2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23050", + "reference_set": "precal", + "selector_sha256": "ff0a2d5f7ee16a632b89b842007f49c155cde26eb1dc6caec22ab6e7aa500d7d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8f3d37e28ee7624546f5e22" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:89a2f44be8f86c2bf4e7b587" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23052", + "reference_set": "precal", + "selector_sha256": "31935e5e1453455643b0114343498b696e0b1bbf7a269868cfcd2c3cee77feaa", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e78d274c0e47771e4e2afe57" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a96d57efb33fe621b1652e5b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23060", + "reference_set": "precal", + "selector_sha256": "985288fd9e89cd708c9c667d44508d5f9c48170f81adfafa8b79b2c1b8e839ad", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d524ba967a61f8e5a54f8286" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8423c7329adf50cbe7f9178d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23062", + "reference_set": "precal", + "selector_sha256": "16fba6fb365d7530f21d8682c8cc8f00bfa553312a46bc4ba8d5095e43c04135", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b4adae8fc9a3ee1fa5e48b48" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c530617e18069f98ef8328b4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23064", + "reference_set": "precal", + "selector_sha256": "6da5567a012688d0fdc6d7dc92157819a9ad1ac2b562cc0b3baf17bda1b60729", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:572d29e3571b2e58f5556140" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c0195934ab9b4055cb37c980" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23077", + "reference_set": "precal", + "selector_sha256": "2982ffef6b0f73667b5f65ec43369843ce8623f77d1a381341f3236acf22da14", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:12be6c01c2cdfc615bc5d205" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb5c17ca2ada8574dc76e9b8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23081", + "reference_set": "precal", + "selector_sha256": "da62330f93c5cc2e049d56bab9df6850d307ab4d8aa30d97d21f63f7c1d4d26b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8af66f6157bcf18c053e1e4a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e1b02178b4bddfd59dc422c2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23086", + "reference_set": "precal", + "selector_sha256": "4a2223c6d1e00f605d17862c7e4258520e8f7270f10e66477162cc5e12b53952", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a2b031fdeb2934d15aa6f7b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb81330edfa912fa651dd0ce" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23088", + "reference_set": "precal", + "selector_sha256": "f91df689598dec3706290de4cb3de24f56b6f084f1b922de53d1e3203dd978d4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c85647316d9575e13c411a88" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:05d954d5eba40f94e9b2cf52" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23094", + "reference_set": "precal", + "selector_sha256": "17aa3e85014691c19f03ab28a1285d43a6cc4b5cfc409997cc0a1cccc9f0baf4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:116e3846d00d39960b117565" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:500791b1b8afac6b230b4619" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23096", + "reference_set": "precal", + "selector_sha256": "0bf8093c989e78696e3213f1f1a6d49e30ffe90f56aa7c515dc246bd4f124720", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:096812daecac9db839c86645" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:604d31dc2918413617aa067b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23097", + "reference_set": "precal", + "selector_sha256": "ce8ce84f4c7d68ea008fec3134ebc7ce96789c5271d919f551bf56a7e0998ca5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b0b0b218246bbfe80e389c90" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:42418dac9138dd86848452ed" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23098", + "reference_set": "precal", + "selector_sha256": "69862e0403941c898149546831278d0180d36950fe5916b4524f8d34a744b172", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b485b6097f35bea80cb9eded" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:458b4c7cc25f94179cf1c70d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23099", + "reference_set": "precal", + "selector_sha256": "a23909833413502d7107a017a2395135b27c202c426fcaa29989ba4622f4b8d1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:afbb509d195f11a46cc1eabe" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:91745a357c3f8ac3d2e85367" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23100", + "reference_set": "precal", + "selector_sha256": "8191c5ce7c37ba758bac403c89eb2b66deb04623bf0a29ff88e475b02b6e7bc8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d6125bb7906437bb79468dc9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bac755370257d464e06e52f4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23101", + "reference_set": "precal", + "selector_sha256": "caa53fbd0b0fd14c4d3f2724d91a9356c95c9efc1bf194d5a0318ef2cf05573b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2f2606e0a0ca8623b310a11d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2eb19cf4a72b21a12b1ca9ce" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23102", + "reference_set": "precal", + "selector_sha256": "390b7752553f97f4cae028571511057e66f63e9e8ff32497d1b690cc75f5174b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:635c096e4510fe3c5bdae1d0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:70ea2bec229af0c649d923d5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23103", + "reference_set": "precal", + "selector_sha256": "65f9c7be2ba2679b228e1adc2c22da4e2bf34080d077824ee48c10a25ad87193", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8a91ff7e1228d95aa6946a8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:db3c77ff47f1836e22ea3cb5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23104", + "reference_set": "precal", + "selector_sha256": "313641f58823c67bb5a6b48039ff48cd2e7dfeb53ca1a479b08ac311ee77f38d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8f0ed336fdae18d38f46e12" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:42be418066bd0d9bfc5ee92a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23105", + "reference_set": "precal", + "selector_sha256": "d2596994776873f208bfcc40b6ea0a9cc41e13b0646703ddc6d77bdb58323b7c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d43b7fb8f155532e880d2681" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7a687db475bbbafdb64f6e27" + } + ] + }, + { + "name": "statbel_population_by_commune__nis23106", + "reference_set": "precal", + "selector_sha256": "264c40a8ebe8f82706c249185fbdfbd5edb0ac3d7ddecc6d9b56fe5e0c840cfe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:07e05bf61687b9f6e64c2d40" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ef7acf64a6b03541b9e0bf39" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24001", + "reference_set": "precal", + "selector_sha256": "7977af90d6a30a19a4c0d565ad28851a6a26fe20c9ea9868d4ddc609bc4722cb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:290808a46e8999400f54aab3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e8ba328407a65deddb11a2cd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24007", + "reference_set": "precal", + "selector_sha256": "88710a2a7552b08ac20def8a3cccbabeb91f0e600a09cec4237384d6a37b69c6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fd5c031595c6d661568c9dbb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5b45921e880490efbadccf31" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24008", + "reference_set": "precal", + "selector_sha256": "4f2adcc4d2463506d01e71dae3ab892aa592b8828e19527759eb836ea41db484", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e249a927c38fee8d6c75f8bf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f2ee2c61f9360bf4b1bf8798" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24009", + "reference_set": "precal", + "selector_sha256": "569db6fbfa55782bb8e7efc614cbcdeae9413209b5b292bd141827d0f985c63a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a77532e81eb73a7ed431e3b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:87bedafeea95e5d493bf9a4a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24011", + "reference_set": "precal", + "selector_sha256": "b749c616fbec5e2ab26ecfeaeff7611d4bb1cc052e39db0cdfde8fa438dc63f2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d80184141938f21025028433" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:45f9c66b3bcb4cff1364f605" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24014", + "reference_set": "precal", + "selector_sha256": "6d048006590441854d2be3b349b06c47e9c0be1bcf41d923bef93ced48a55604", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:da4194053a9e4a44a860c29e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:feef3f04b6c41b8e78906c65" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24016", + "reference_set": "precal", + "selector_sha256": "d0de7986d9c378d2aaeef8c707b9f64bca8e174163afe60c42d2bd81740969d2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:091ec51e72a5cca51f049011" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bc4c097e7fbbf942a38f8087" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24020", + "reference_set": "precal", + "selector_sha256": "07dd2a60c6d456a862ec2c1e195652e552a339f373e08c5e2486fab184e2e3f1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d1f49a680fe37f043bbece67" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f60a77e416edee865324f80e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24028", + "reference_set": "precal", + "selector_sha256": "f124a7f986c8e5ff20d6f0752cc4c99c48699f61c86d7740c6f93fad5f06d07f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:89b39f4fa8557888916cceee" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d525019d3b4fd011190898f8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24033", + "reference_set": "precal", + "selector_sha256": "ff9f151267e1a718098d2d1fac6873ec4b35f523b1ac824b5157e01ad57064e4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb62bce1f8914f706da3b183" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:052eb2f4b7670717ad5aaa32" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24038", + "reference_set": "precal", + "selector_sha256": "df1b56a8696b30fa94cfc5266d510b6d86b3f9589ceb5c56dbd954480ad2e084", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:13f22d7994295b96ffc30f56" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:82ca96559b93ba3e31494f13" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24041", + "reference_set": "precal", + "selector_sha256": "1aa93a51ef1d20d9df77b5f5c70c17dba93e2f684e6edb10c6b93c027ac423ad", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e45ee3be9062000e6d950e1d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5ddad8fd8dc2d010cb77f756" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24043", + "reference_set": "precal", + "selector_sha256": "7710028986fb58553f5a3757976643d1c5d15ff45b032d1168bf35db807e9cff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5062d5a85793a70a5b192900" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bdd9f09d5e56a222310c9573" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24045", + "reference_set": "precal", + "selector_sha256": "c122b49e5b8f087bbd8dbda861e65170bd1f8ce888640610f910767a90db1bfd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8619b2d24950bdceeee0424" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b449b8e18b5f5d8f3a1d6785" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24048", + "reference_set": "precal", + "selector_sha256": "9df3ca3b2923e5fc8a61aa15bc02af9f0390edcd35017ff99f0d8a9bcd3a0567", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d23d36208473375a7fb52346" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4da924647b39164378843def" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24054", + "reference_set": "precal", + "selector_sha256": "73495bca2021c9963375f30673dce0d59e5b17d03b4825fa2f4bd7ce0f94c41b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9ab941b3590c212a66860819" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:be526bd0ba47819e9b2ff61f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24055", + "reference_set": "precal", + "selector_sha256": "6eb055d53ec717dfc4895e8c9bdf1b55b38953dcb7d02b1d1a9b01cfb9af2433", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8c377b535343776637202e0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cd08c68c36e6111780462fd9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24059", + "reference_set": "precal", + "selector_sha256": "be742ecd4a3be8addb659726f213b7fe9d0b21b06ae309512790164938d68cfc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:26cf5378797afaf309171c5c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d0b3aaa4086f328879365e7f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24062", + "reference_set": "precal", + "selector_sha256": "ec5ee364ab2b14454a1b703800c8524da9dd44a261474013b7842a38c60d813b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c52e23bc2d1635535b376d7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e4350f0d7b52882cc3c074fd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24066", + "reference_set": "precal", + "selector_sha256": "7d9e53a3012cc7ea5b9acd593fe0831958f35f8e164aa6802a01ca135af91353", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca901229dcbdae0e16ab21a6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1b5bad39bf5e1ba17227a90c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24086", + "reference_set": "precal", + "selector_sha256": "242b8a047ff26e2d6a4bc20c7104349638e84b8d90547ea1df34413f40f117b2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2f74e9b6d9cac9dbfd06074c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b53ad760f274dab86e95316b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24094", + "reference_set": "precal", + "selector_sha256": "98a7a94b443b7631de5c23b5c1f235b332c92afc2e8f307c253878efc2643593", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1342d25ec822fa3106c55a3b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b3dcfc4f6cad92d90c48f89f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24104", + "reference_set": "precal", + "selector_sha256": "af9ce266d5355ae2260027dff0c75bcc53bdcc7ba74cff8f08e43fedeba54604", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0fb71fb9ea3220dc1494a60b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:89faae3147a861ff8b4c36e8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24107", + "reference_set": "precal", + "selector_sha256": "160d20c8c31681fd5c09e360fcb2bb39c8ab72212cdf08eeebd2dd75ba1e26ee", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:12577df5cd35c0225611600c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6cfe3bf33528d237b4fb6ee0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24109", + "reference_set": "precal", + "selector_sha256": "2f1f9cb922f618c6643bee3e37364acd4897032efb9bbf55f415824a8263e99f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d9eb1bd176b99b7b436b714d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b2520413605d96f35a37011e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24130", + "reference_set": "precal", + "selector_sha256": "096d47bbaec0456aeee03d95ce0788e278b2b30122a0c351e5d13741d9e14193", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:50fd2f56481894f5c90003b5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7084e6b798742eee101d19be" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24133", + "reference_set": "precal", + "selector_sha256": "baebba6b252a49cdd28805bb02bbc2b15da8b4b8112fd7b53890124d0a32fab9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8aab0f9a8df63239d7acf3ce" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0af93f30813befa2024c97fe" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24134", + "reference_set": "precal", + "selector_sha256": "90a4b056468edba37d50f445b4a7d462435d06bff6f2246b6b83e4b2414ac89a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:268aacfea79d3a3eb1f8a5c8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9e35549c07d2198c8b4deeb8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24135", + "reference_set": "precal", + "selector_sha256": "38ca65bbe381e85a02d658f3b7226089b0000d0a130edc9e1a1a893468936d1e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:47e59b4a9a9564549ed47e75" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:be5b58116df1f47a6090a723" + } + ] + }, + { + "name": "statbel_population_by_commune__nis24137", + "reference_set": "precal", + "selector_sha256": "6c84aa82a4a0ed6184e739aa868150fc4400acf8bd9854320b3e4099e709eb87", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3887d0558525c60dbcbdaa20" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8466c1d0fb080e1b2f513c63" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25005", + "reference_set": "precal", + "selector_sha256": "8ad2e593ec27d4eeb43eb21f44488c19d4372ef06978e75d58e1664d687144c8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e52d8a343ddab1232a07c549" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8a28af3d618ea3308f108306" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25014", + "reference_set": "precal", + "selector_sha256": "05af2334134ee4ce49012f13d27e74a8639e489b1622a6c2cf70c6b19caf56d5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b473d7c2a7a71da986c91b3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:40cfabc9244b46ff0130ef8c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25015", + "reference_set": "precal", + "selector_sha256": "0700a0f414cbea2bffb2268697aa31c9df6bdd4f2298791ff19226fbebbf1216", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b339942f67186cdea703e09a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7d3049da8363376f19b207b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25018", + "reference_set": "precal", + "selector_sha256": "e87495438d98d69976d499ef2cca2d8efbb42ae0ca69826e80a326ab462c6cdc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3eabea0848677203edc9d746" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:580374fed917088f9977ee7e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25023", + "reference_set": "precal", + "selector_sha256": "bf1ef77ced25e88944fe081bd78979400beb82b0b0913d5cb951ae16213827f9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e373a069c5f86a3d61d7b414" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cc4610c15447b4c435e472ef" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25031", + "reference_set": "precal", + "selector_sha256": "00ba5a06ced0f396045ad0e286fe0422add4640820544de4ef1bc19d96b491bd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba2160017a20db3fb9137464" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bda9c9e7c6b6e2370f5c0f3a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25037", + "reference_set": "precal", + "selector_sha256": "be78ac452a525b99819be081d55cac80f832ed28bc46f46891c59671c7bdabf5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:456c70c431866c3a567fa257" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c321c02393b774e34b4f5dc5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25043", + "reference_set": "precal", + "selector_sha256": "fdf8b33b2fa5c70033be33fa3e255599217ef465786a9e74602f6fc53343a601", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c4b80d36f74eac641e90ae5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cfad89b03a38c597b015ef3c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25044", + "reference_set": "precal", + "selector_sha256": "4df50bca478365eabd4378d6397c439b36317192da57956d8df2ff8e949f955e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e1bb3cf4855649ba39a06da7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:74fa0617c0e8386bfc9bbc5f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25048", + "reference_set": "precal", + "selector_sha256": "bb8eace76e7be78ffdfde7bf801f591ddf031266620336063ded505fefaee454", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:52baae60ec2e139d8ec81f95" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ddbf6a1e491bb8f468034726" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25050", + "reference_set": "precal", + "selector_sha256": "9f9bd7742ae80367417cab17b22a993da6c64884c2eafcd0837a6071ac96ced3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a5a678e6289a085bb67cad7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:02f05318a822faa64d945135" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25068", + "reference_set": "precal", + "selector_sha256": "02c3cc69138b4559450d6a4eef7f621721473745a69ca5363267380a040bbd8b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3feb759a6a807fac70c7646" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2567246b3c456eaa89821e0e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25072", + "reference_set": "precal", + "selector_sha256": "634f1744e22d60350e90a86b4aeefeb8dcac49d45378a20ad01f95c6fc9909ff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:59b1eed7d57188acdf4afa9b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f8ed54d2190bce4b8dbc7943" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25084", + "reference_set": "precal", + "selector_sha256": "3617b249dfcfee2f4890944584f6b3f538f4ccd572b3ecbd0bbaaace65cb5fc6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7d9aec4fd75b824cc3512fd1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ec1b34d8dcfb1f670cdef961" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25091", + "reference_set": "precal", + "selector_sha256": "758db8d028d3d39e6e5f3ad743098d8b0616aeb87a2fa305ca31fa4bb0f55cec", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca47c1515d58c7d9fcc38878" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:15fa0cc6fe50073c76818487" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25105", + "reference_set": "precal", + "selector_sha256": "cd54943d1abb57b827810c7f89998193d3819833445b01765ed36ef67de4ccff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c6bc9ca977b955098f6b1cf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb765fd590520555d1509de3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25107", + "reference_set": "precal", + "selector_sha256": "636db55b1dc68dcd30ff4c9df15fb679407e038ef5943f77e83ea3f483fab70b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6153710f9b421ecb3ae6064f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:27498f75ba8b5804ada026d1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25110", + "reference_set": "precal", + "selector_sha256": "38ed16fee6c8ee638bebc2dd60e8ce16a5254939e414a0db05b66184f14e37da", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c5fc63e0cd8fe4acf4b15557" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4c5b382d0bf93bea516de54a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25112", + "reference_set": "precal", + "selector_sha256": "ed4648c3d2397d89bd4f670510fd80a607c2812c9ef35dc8d67d8c0aa8a57411", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0fd2c9fc072ff6bfa4343beb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6f9d8520b4183ee37251b4fc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25117", + "reference_set": "precal", + "selector_sha256": "2fc157b886aacd0dbd1b401df671e1a5227798bc64cf7b115d805508f163c52b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:31db1f7056602c80bf0d00af" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:01f09280fdf917c136e0e158" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25118", + "reference_set": "precal", + "selector_sha256": "7d2ff663cd6e957d8e512c73e5f957ebcbe3e541512199ff7ab8fadaf8f7d9fd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e15715df9512ef12e5a303cf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9772ab34e8195a8f05323d15" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25119", + "reference_set": "precal", + "selector_sha256": "d21b25f9bac747abedc4f404b2e9a3509524546dfb6a40de6ba9593b9e135469", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1391c6d2072df22995b58062" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ef79da8f3ef8b62eba5e70c4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25120", + "reference_set": "precal", + "selector_sha256": "9d2c75d7d89001c7c9d6b36cf30a128624145dbf9e3056edf038b20ac26f0b0d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e205087c16bdd6d8a050f719" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:234f2c27b1df1376e5e0a601" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25121", + "reference_set": "precal", + "selector_sha256": "92043d64205a8e058bfcef718ec8e45754a5b115a0f29c76dd3c5078cb239380", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa8126693f6a4a618b5e675b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d1c085e2da812ced87e2a4a0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25122", + "reference_set": "precal", + "selector_sha256": "8aeb844baeb808e92ccc4c46eefff24fa8e2ebcb45ec4119fe4cedad03b13d82", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:325747d2ab4f680fcb14fe2c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:13f6c2052283061e637bf952" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25123", + "reference_set": "precal", + "selector_sha256": "08f0272805cd11b2229e5b2fe1e063cc5c5ab6898ce522342bbf2a9396ab84c3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2013a6adbb90eef840a8000e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a3e607f7c7a534282919405" + } + ] + }, + { + "name": "statbel_population_by_commune__nis25124", + "reference_set": "precal", + "selector_sha256": "ddb394621f9ed750f9b82b15426cf80aa7e9fe4a1ee24e62c2c7d42419d246a8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5c4a05b60564aa3c66296e73" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:75a6b6ed5c12a636ac998d0c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31003", + "reference_set": "precal", + "selector_sha256": "81a301247a0817b9259664ddae0fb0051d59ea70af2bb5927fdc5ef0d89241d0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5656ddcab84e4399b2294164" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:26ac209ff055f355f17fd8ba" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31004", + "reference_set": "precal", + "selector_sha256": "56ec21a40235f6c646b3b0ca5c06eea945b14dd2d192c8e1070452b76d0467ba", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f305f40fd233d1710a9d7c12" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b44c1f2a0ed5cdb0ef787455" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31005", + "reference_set": "precal", + "selector_sha256": "1183097b2cbce97f5ad1ca4d4f0fa92bab89f1720d2034d37660b82fa50a74e3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c59e7f8128efd9c9531cd0f1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d7f8406d772ab8eb4c33ea23" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31006", + "reference_set": "precal", + "selector_sha256": "41ab6b34a921c5cea3763a74163b44cbd877ff1b7d2d7afe02f4156bc10c196f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3558a5de469ce985206c6da1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:28b008c646a435e63d146c73" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31012", + "reference_set": "precal", + "selector_sha256": "8eb861580ada1aeb72ce415b66127f9cb60bdbe67ffd2a18ceb253d67d1f4063", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:07e45fc4a9e39b152c2c1400" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:54f522568532e7a66826b81b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31022", + "reference_set": "precal", + "selector_sha256": "3a3f2546279f0f2a6d21db7224981ff232221321ffb585909df3f96e24652d01", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a8df469042b32e93e27eef51" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7b299c230253eb77931afcf8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31033", + "reference_set": "precal", + "selector_sha256": "91f249ae296642ed10d537c6db9eb84de3735529d93b5f26e5d242a241529d22", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebc2e1d40b1ee6f7812ebd58" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb7c6c5e57344f63bb09a522" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31040", + "reference_set": "precal", + "selector_sha256": "858a4a5cd96194208837c2161de697fb4a48f539160b2bb4466d190ab7154626", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b8e2a6eb01ca96b67a8179f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:62b208267a55b5a123333243" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31042", + "reference_set": "precal", + "selector_sha256": "863e49e013e6b871c79de03501e2fec0380d46b67ab2ab06a4b1a987213f999e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:88becf36b166c7b1ab0414bf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b344422207eb182aeed0e751" + } + ] + }, + { + "name": "statbel_population_by_commune__nis31043", + "reference_set": "precal", + "selector_sha256": "49258110e3a6f968f5999c4d02aa171bbac6d9ac1d59aac3eb6e2f313098c615", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:505c9a6337f1a369dcad0459" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:77307cc98fe86ccb6c598389" + } + ] + }, + { + "name": "statbel_population_by_commune__nis32003", + "reference_set": "precal", + "selector_sha256": "149be4dc7cfd7034c8aefbfe886ef8adeec75508d9aad7b29d49025e4a19f0fd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d700fb0ea693fa46d47aa57" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f5be88b48d7c6e5105ffdda3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis32006", + "reference_set": "precal", + "selector_sha256": "e0d5da08d028d504652e08fa9496f94869ce9e18c8dc69446f169e24aa9ae52b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:22948739fc10b5f6f408ad49" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:215623be38c77cea73759cca" + } + ] + }, + { + "name": "statbel_population_by_commune__nis32010", + "reference_set": "precal", + "selector_sha256": "e9ac5ffcf36d93088382f21f05b5362ad6bc06eef75b3ec74bac769eccf7232d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3af80a5f50bc791bd5c33d34" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ca31f155a94f0c614c34f0fe" + } + ] + }, + { + "name": "statbel_population_by_commune__nis32011", + "reference_set": "precal", + "selector_sha256": "88b3da1e5bb035df8adc2e689da680f83853f210918ce059316afd179e934f9e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:389437292e1107c3affc44ef" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d622c655553389543ca85380" + } + ] + }, + { + "name": "statbel_population_by_commune__nis32030", + "reference_set": "precal", + "selector_sha256": "d643e33ec7b953037c54098e8eb4c374af2f2ac57855bf77aab1f44df135ec6c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:54612aec68ccf491eb6aef71" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2f900b7f941f28fbb9cf699b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33011", + "reference_set": "precal", + "selector_sha256": "ee7046b4f332c7754f0b7a93b262e9f32f5f6d414df9f10358eaeb90859c7c8a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b55584ce01e614800f12838" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c8c259d76fa443b15bc412f9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33016", + "reference_set": "precal", + "selector_sha256": "942bc4120093bdfb04bc4f5bf6a357e9d3e7f6899e4233cc91d865c826100652", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b9c907234f1d0a01636d879a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8bbd45d0e57faec6add4d329" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33021", + "reference_set": "precal", + "selector_sha256": "3cecaebad774e73572b8a67faabb3d8a9ee0254d6b9a207f053b6876703e2c9a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bea80785821aeb284f0a1ed" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dab502e5a57fc4458013615e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33029", + "reference_set": "precal", + "selector_sha256": "49ac02a1f75be3a072cbbe76a519f5bbc05df7ab96f95ae203e15777b42e73ea", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5557be004e3f31ded58471f2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:350929a0491a07fc2e201a7a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33037", + "reference_set": "precal", + "selector_sha256": "780880f57f0eea25f29e751ac876a023d6fcf7cc5ae81dc5e0229c42b8ddac9c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a603254f4e7ec5e2bd481808" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2f03563c59ab87506c7b49c1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33039", + "reference_set": "precal", + "selector_sha256": "cc4aa93c22cf30cc1c88241d1e95ebecb4d87c723c1880e8a1bb494f2989e999", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b63f30e14a847c0fdf2282a5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a775fa8a2b165a54aa5bd1b9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33040", + "reference_set": "precal", + "selector_sha256": "a4ba0c12a92081a937ccf5ec5abeb9d00194d05b976363a1721bb8474a31d0a8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6ca7ef35b01024fc398e0f0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:264a7b8e12b3079278e05704" + } + ] + }, + { + "name": "statbel_population_by_commune__nis33041", + "reference_set": "precal", + "selector_sha256": "f278029e98c93b303e9b3e1ad3ad6bdf62bb5f748e3b050d3664229d6b977718", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c938b07a350705e840ef1e04" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0639fccc504190b6722899d1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34002", + "reference_set": "precal", + "selector_sha256": "15500271da0ad00742074c8e42f0b7eeb7391cbac84f89b5c74061b6b6d54e83", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f78584ab1b3d0ff2875df595" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2a0bbde7faf5c40e8bbb3b9b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34003", + "reference_set": "precal", + "selector_sha256": "13cb70408bdda6d647a60bc648b34f093f35d97ee0f727c2d1ba1a03627ff5da", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:992b23de736973ea54d23672" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dad8dbcda6a9e22c65ca3c56" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34009", + "reference_set": "precal", + "selector_sha256": "54b5ac136516d178cfe13ddd71a72882be3742d2768f729ed0acaad22b18e607", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:785a7e5be8511159ce8f5327" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b02ca9098db83cd67b30a257" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34013", + "reference_set": "precal", + "selector_sha256": "86e463ef7022392bd5a0b4d69184e2d1816e366852f892bf7561c4cb47a5ff3a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f59d3093630854766b360a4a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:acd94e7d54e89947d0ebdef5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34022", + "reference_set": "precal", + "selector_sha256": "745db556b550951c9cd794f19eb31b3a045197a5ec9714c7af2023c60981c80b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9354e84843441f338eea5f26" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0e62dd185a748f71d46ae8d0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34023", + "reference_set": "precal", + "selector_sha256": "eaadf1ad47920b31fa8f98fd718bd63885c8ce55e20c7a43af4f7ab7d714ef8a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:28fd6594f5f01500a678f085" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f88d2a77ae9fc8db122976f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34025", + "reference_set": "precal", + "selector_sha256": "47782a4b52417d6074b47408cb6b678a800676af9e2d28888dd7de129bf90590", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2bc23bb384ea5284fd5ef680" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7de16f6f3b092ab0da140e9f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34027", + "reference_set": "precal", + "selector_sha256": "c3ff70ef5642a745ee1814f7737ad9ac8b4184f666b943c9d64844ee4075ca79", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb5322b8ee98143b3a2e33fa" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2b972c205fb009ec723586e8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34040", + "reference_set": "precal", + "selector_sha256": "ff30ac54e0fbdfb10ad683a1acf32052d6c421be6cfd87a2a8bd09e1cd9f683b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4fe29239f50ccaee44db1d53" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2ce7807d5f1ff69266ef93e6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34041", + "reference_set": "precal", + "selector_sha256": "ec852a11dc54a8a0edadd83664bd5c91694016370081d515fd1077238682bab5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dc45910e0cadc87fea32ab41" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e96cfbbef1948b92e99193ef" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34042", + "reference_set": "precal", + "selector_sha256": "10256fdbd869c966f3102bd13988b699c7d4f8936935da9bee31f703fda6425e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b4ef4944132a0724b3b14ea" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0b4389f17419652204ef95e8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis34043", + "reference_set": "precal", + "selector_sha256": "30936beefec1f4f82b3ae60eb2a7f5a1f2ab6dc9253d22fa98121d4ace7132c6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:59fd239e1f23157fd1b572f4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4f728987918d89d02cc4c675" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35002", + "reference_set": "precal", + "selector_sha256": "e1aecf33b307432a450357eeb044f6e9dcc4de62f236f5d4eff9796728dc919f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c7ff4efac840ccc6a7997132" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0da55ac0a37e93b2a717cdab" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35005", + "reference_set": "precal", + "selector_sha256": "470630e54e40e6990aae929c80a9863d39004fca133169f2d07ba24cf3003b8f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cd6acddef8eed5ae41f63f7f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5b53da32b5198dd454219e2b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35006", + "reference_set": "precal", + "selector_sha256": "883e975f307d330bc6b922077d3eb2613015f62148f7bb25499011ac0e775cbe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1abe4c5e057cd25ad5b5ba52" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4cb88f3d1f9dfa287ac30da9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35011", + "reference_set": "precal", + "selector_sha256": "dce446094ccf876b3e9e03a9a8545cc6d92409c80a457ad8ec7f3f0d0ecb71b8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:14d29994fa62c393f816f836" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a7249819faaccafbb945d082" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35013", + "reference_set": "precal", + "selector_sha256": "415074441b9bd00add570f7f34252a006accf2b1bbe1d8dad20ace4ff4925f05", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9c8dd8eb0a7d27fadf5d1c6f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2c1c367763b5a04036114ca0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35014", + "reference_set": "precal", + "selector_sha256": "3922a033ceabe5c6ea68875e259ab1e92d73c1d54c921539092a58fd70279cfe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:046ec2ebdfccf665589a1850" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3c035566d4cb342981dddb87" + } + ] + }, + { + "name": "statbel_population_by_commune__nis35029", + "reference_set": "precal", + "selector_sha256": "16c2fdd4d124de23f3f7ab2d4002e0e3b5793351b173c3c0643c16aef5b098f6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:03d9fe6be1cfb0702bbaa9e1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:20ae2f3cdcb2f18348e9e5d9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36006", + "reference_set": "precal", + "selector_sha256": "16669fc7bd7f6c456e60e1417a9fc0e6fe8e50ffbe96e701cfc9641d43100f81", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:146cf7da9d4d5f748aaec9a8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ea5db1731ba43dd425b38f73" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36007", + "reference_set": "precal", + "selector_sha256": "3380139d02ad261e2b771f089cb8bfb9abda5f66d1122a0292dea6112b22a6e3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:38886fb03ae39b947d0513d0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:80aac6d5cdd1bece3285021d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36008", + "reference_set": "precal", + "selector_sha256": "e4bd0ca59b507f18566a3a40315f6beaa1d392b636d6ac4642cf983c750d13ad", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7255722af56048d70280d7ba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7f5cb20edb0d2b592c1f165d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36010", + "reference_set": "precal", + "selector_sha256": "db3b84fa706ccd2459528347196c081ce84e5a9dd39737bfb567957664081611", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9f99d9c87db2ede8c72a2987" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:db88f889861066a15ef9db7f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36011", + "reference_set": "precal", + "selector_sha256": "7cae2d1a1259f2340947ade8013b8061226b1c5331b8c731e0e5fa7429b9fd9f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed7f11bfc025fc8456179b2f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:93065d10bd0f82686467ad13" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36012", + "reference_set": "precal", + "selector_sha256": "a05ea5a9751803462a8dd1c0b63c7b6f2d3b99fcbec778c3e01b50066f3f74d8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:be9b1ebad9e6af5e14fd911e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5ea2829fc3dd66157b2c9dc1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36015", + "reference_set": "precal", + "selector_sha256": "6b7fa27b57927adadef068d7ed6e3693039cd743f06766231b123857b6256569", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:58ed64598a0472e1fae40160" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e985af1f1da8cb7e20c9ba03" + } + ] + }, + { + "name": "statbel_population_by_commune__nis36019", + "reference_set": "precal", + "selector_sha256": "369537c9d236d0d8b5af32b17bafdc53f5628296a3eba136557ccf6caeb284b2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1f519b7b9492239efad45908" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f626b0726acb3bce1ce4df5a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37002", + "reference_set": "precal", + "selector_sha256": "5dd97e72cf965c4b675d4f39d82bd517e87c45bbb78726a21edf2ef4354208eb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:776c6d7c5193886190f803b4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e845adbd3e8cca0bdbfc5384" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37010", + "reference_set": "precal", + "selector_sha256": "4048b32625bf621c3b1d59c2e2d8a8ce5e544dbb9a49ff23bcb2ad31cff9b8e8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5e846073a4b2c1aaa180d89a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:00509e0c6e6fc1d818cfa22d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37011", + "reference_set": "precal", + "selector_sha256": "a59c4be30fba3d0c0656bccfa1ba0b7914654fa4766367582688628d60ab7b1e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6ffd7e73e6890d654aaeff68" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c269e4b541a62965554a9246" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37017", + "reference_set": "precal", + "selector_sha256": "3b5231f03c7dc98c47cd709733e3cbff53b55841b66bcbb0b0bb6e6316c1dfc3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:37e04fa81bce43ee4b9e51af" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:212d174bec653487fdce77cc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37020", + "reference_set": "precal", + "selector_sha256": "e1dcb8d8a2d0800ea1f5bb38574bcfc37da5045ede9d0928fd62f87676f976ce", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a1afdcca7a7c46c99c1c0bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:edfd6e350fcf2797a5de8497" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37021", + "reference_set": "precal", + "selector_sha256": "5457e6ba336c795610c51ab6c83c2f6f7edff11323031b95e63a76bb9a038374", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a445776a53f8cb107ae114b2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7f54c5e873b9b9e1b73f22b7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis37022", + "reference_set": "precal", + "selector_sha256": "07a19d9e493f0e7b2b9dd3349fda2b63d5192e8eee225859d68e843a91ba136f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2c5877ae47f8943e90866c6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ba6d490c6f821a5b2fcc950a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis38002", + "reference_set": "precal", + "selector_sha256": "65e7ea3e858dfd9b0f767519ba406ae2f447b09376aa7430ac2b76f8755f52e4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4291ec62005491e80e542804" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:88964f49c7ef5946660cc8e4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis38008", + "reference_set": "precal", + "selector_sha256": "72650855d265e631d37e17ca253799a6c737d232a7c439b2c130a68a5776b4f1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dabf43c332433ff502f24f1c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3940ffdad59a3fa6e00a5f6c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis38014", + "reference_set": "precal", + "selector_sha256": "330c440b5c70d6d0620ef10410c2de46ebb93ed41e760ee1a41933fd67c6f3c1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:907472c3370c7afb208d3229" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2881e9ae6d5ed31ada9bc185" + } + ] + }, + { + "name": "statbel_population_by_commune__nis38016", + "reference_set": "precal", + "selector_sha256": "26a1048061ac02c6a0d0b2ef08fa9cc4edd217fee0cc73d200f712badbb9c579", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:880e44cd6302e79e6dbb3de6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4606caa16bce13c50bcfed52" + } + ] + }, + { + "name": "statbel_population_by_commune__nis38025", + "reference_set": "precal", + "selector_sha256": "2b352980e5235caeabea9cdac698f655a96b14f35a0f6568c8032d5ebf1e7fa8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b18d4497695421180d67bf6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f5e74b5200182971b5f1b58e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41002", + "reference_set": "precal", + "selector_sha256": "7a2b3d64bb53a8e29adfdd23a95d9d4237d899ff1c67383ea5b9f6f9e73c2df2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:06f0bafa753a0697844a870a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0e333a05dabfe341e2da0243" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41011", + "reference_set": "precal", + "selector_sha256": "e4cc71635855a46ef6df7947e5e115a89f3a9082351a3aa726087d07f750b377", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:221bd01caf1a1fdd26312db1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2b4f294fbf0662cca8807570" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41018", + "reference_set": "precal", + "selector_sha256": "97b2dc565dee5f84f5bdf684756b2b5cd64fd411a51bacb74b7084153eb714bb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:358fc7cac0688b032d5c9042" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c5f01e06dfddab32b4fda761" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41024", + "reference_set": "precal", + "selector_sha256": "1f02349862c206fd65d163628c41d497c59a2d1ae55cfcd7184e7e51d0f693f4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:50c681c2f7715b0fbc57d638" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c4ce640aa9c34c3288bafac" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41027", + "reference_set": "precal", + "selector_sha256": "8159451a48da801746cb14d4b925cc2b97665bca8588a3ceeb224ff9e7c19b8e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f92778f158a314aaceeea6b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dbe520896a38a857619d706e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41034", + "reference_set": "precal", + "selector_sha256": "7e90c855e31a77498047782a20ff8a51a80ab89ba32c6be41035a8519d8ff5fe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:15a5ef3cf725ebb5c2ccf0bf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:34a08a5bb5fc0bcffb8faf79" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41048", + "reference_set": "precal", + "selector_sha256": "a166ce10f44b6eb98d2aaa3e188a422841aa0df2a977d13d49bf7ebc9271220e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c8852535011ecdedf26a3a2e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fadc56b144853f5367ec3f67" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41063", + "reference_set": "precal", + "selector_sha256": "68ee63ad73589696b1f4bcc2c16f9122427024360ff62cc524420343ff61df1c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5cac1830c9561ce57bf33085" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6aa187e806bfa4687772cf4c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41081", + "reference_set": "precal", + "selector_sha256": "61e9a773b9ebf33c046c64061196cee946d375cd85066b9bd32e0c098c196f07", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c3f4894877c9bbb1ea2a7fbb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3c6122750e734260b3c5a5b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis41082", + "reference_set": "precal", + "selector_sha256": "295d208a1968eee0a04e340718574a4805176462461bfc9c0d5684e763aa4172", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:921357a9af72c4abba10aa92" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a24853206afefaf0902bac3f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42003", + "reference_set": "precal", + "selector_sha256": "f08080d77491e1b937caa16289d23798460c5ed4adc9320571e5b1882610a65f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a506c9dbf06b82889c07c18d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e8a14a869207319fce6c9567" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42004", + "reference_set": "precal", + "selector_sha256": "0c160e84ed556a01f327a1ddec9286743b4cf86123669a75c2ce0397a132039c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb017c8d9ff53db239e7092b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b4a433e6a16c1b56fcf442c2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42006", + "reference_set": "precal", + "selector_sha256": "a317b8bf74083bae49c402d3044169a73f3dcaa47399166eb01dc19cec5d545b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:936ef43c6a53129956bbd604" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:05289dfc22c81d1927c15d9c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42008", + "reference_set": "precal", + "selector_sha256": "649aaf912ea7c98cd6508ea6be446084a19d2c22bd6ad89b2ad295192cf6a7e0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e82a45b6c83ee9b5a1d3c5e5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3d942967c64a86261cabb692" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42010", + "reference_set": "precal", + "selector_sha256": "5c0281afb8b762cad3f8c85294731452b68b65452ec8e8858aef040aa82c8941", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:df58de9515c6252eea616d42" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4dc7aa84afdd44f7c673e352" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42011", + "reference_set": "precal", + "selector_sha256": "0b4c62099d9e2c7b4cccf57dce01486d31152e8f47846b29ff24dff709cdc8ae", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cc6ef65cb34c0ac86f38ba0a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a987c60ef8e27925689adc62" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42023", + "reference_set": "precal", + "selector_sha256": "3eab9239e3d5278ad93e7dfce62f2ab5118e75d835b8bb56537b958c95cf965c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ea3186a85b623144103d75f5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2643b641e52b353f22dee0f1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42025", + "reference_set": "precal", + "selector_sha256": "2a0c75ec40cd23b6f1bbda63cb39892b3595394b245a248f20619c58be324d5a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1f2ed88bc0094b2742c11011" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:169e3e8cd5beaab15c92de8e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42026", + "reference_set": "precal", + "selector_sha256": "f7d035882a3590b018b7bc979058f53aa150b0a01be39a06317136a4e6eeea4c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:91c241047cf1672c507f21e7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:154aad3989668c4e1f685df1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis42028", + "reference_set": "precal", + "selector_sha256": "bd47033677da1430c22531ffae9bcd45275f1a8324ba3e58f52b6645c2f361f4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ea3f49a5ae9217d1213f071" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e1808b95aba3b69134d2a961" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43002", + "reference_set": "precal", + "selector_sha256": "70e4db9966c0e40ac39084b6e11e8271514b2ff734e4f2152fe5bec420bdbef9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:99b8ac397205c0e530d578d9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7c45de8b8725a9eef25fb9e6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43005", + "reference_set": "precal", + "selector_sha256": "691de7aba180715c704ef656379cf9cabad38b62921e7e9d5d06ace774609ddb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a95a557921e6a131c27b487c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f760252617d5f42caad793b4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43007", + "reference_set": "precal", + "selector_sha256": "e30416cc8af054c8f952f313d6f1119169263372499ffe47c0cfd034a3533e9e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:32562afdc4001c7e10ce48fa" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:21e5a1937c130cf78dd3de72" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43010", + "reference_set": "precal", + "selector_sha256": "7538e010286e98a1ab8fe4a35a6163103018fc1ad5f053d9c1a809fce373878d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e54a0933c4bc70063b963085" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5485575ac6af61bf8530f52e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43014", + "reference_set": "precal", + "selector_sha256": "6b750a351833972feb860ff59613cbfb62e1f521a1a69620a2d2b08f7f6a8023", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:388445ce30a9bf0958657006" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c3ccb7b9b98e4cc1cce4f910" + } + ] + }, + { + "name": "statbel_population_by_commune__nis43018", + "reference_set": "precal", + "selector_sha256": "68690ea954cba7ecc8ca17c310fd96ce9d5b5dbfdf42f813af5d2ed04241fb65", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6434d7e06af44b4fbb5d32d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7a9a1e4e54120dce04bf9f0a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44013", + "reference_set": "precal", + "selector_sha256": "5e87ae11b5eb8e7e98e77ea9bfcc4685c221d12b38d1a151a042865cc9168d86", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:69dcc382485a8b8c57232fcc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c50896dc6edc42faf6af987d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44019", + "reference_set": "precal", + "selector_sha256": "8a072c623935b83e69dc6b40b72e1981831ed5189ae9a0894d1deeff48d3cd98", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:07b806928eb1cf5727a02f56" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:57c6b61d2f711823c40a4e71" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44020", + "reference_set": "precal", + "selector_sha256": "9eac93dc3538335bccf9353c943a317005fbcc6235717002cf31966178bba0ec", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f376b0076b5af3a865de4f9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cb8fabc67db1fa2d43771436" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44021", + "reference_set": "precal", + "selector_sha256": "082a2a2bdd5df3fe28e2fe383dd93aac728bb6edb067d1d6ed2b0cb1d30d29d4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2afd4d606045ffec0d6f72fd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a781f331a13d9dfcfca4f44c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44052", + "reference_set": "precal", + "selector_sha256": "30369127b143dbf84e489a51c004a3bdd411e0418e01530dcced66c8cd21d911", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dce77ddb1f14f362075af7d2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dcd7f3da3048f9e4c05a34a9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44064", + "reference_set": "precal", + "selector_sha256": "b63c38b8521b14a527be53088b03d544ea9ff999f95d3e3ae1fd33e77b1d5338", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e0c3332db8b206bbca94f349" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bf3a3b9766e34f81fbcd0d97" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44081", + "reference_set": "precal", + "selector_sha256": "62d1d06ea29073e81032153a826b74ad2139dc3256793547210095aa16ee05b2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b13007f838cbb66735fb7f0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5f01b277e4478925fec4b768" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44083", + "reference_set": "precal", + "selector_sha256": "2d649db92a36b2d2782bc48cfe0db7109d6230be2a418d0a036b07e8365c8416", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6600c877ac622a9de4642052" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0f1f805fb4cfd5cd1f2e76aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44084", + "reference_set": "precal", + "selector_sha256": "5170724be91c335898dee51ef2efb5d984d7622d331895ed764ccf21495d109b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e6ca3cc69e470f21410cef8b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2eccd1b14dc46cf823466164" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44085", + "reference_set": "precal", + "selector_sha256": "4c317ead400a80afbbeb202f46a7bb39908e63fc497d6008511e0bfe1e9f60f0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba2bf78799000d35556c80c6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2b4bc8c4d19632709bc2a4d4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44086", + "reference_set": "precal", + "selector_sha256": "cfaa6194cdb2fa8ecda2df0e043300dab830e80213782f196180ebf33fd9429c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:65d64e7e7b72f7f8b8958ca5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:df395dfa82761eaf2c55ee9a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44087", + "reference_set": "precal", + "selector_sha256": "664f608f374d23bb03dcc67347eff39fb5ae22600496bed589fa53135af20d05", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a79af09a66517e988a82eaba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b2e9071eb41dccb18c35e099" + } + ] + }, + { + "name": "statbel_population_by_commune__nis44088", + "reference_set": "precal", + "selector_sha256": "8ded7893550cac5c8fee884e17a7c15edbd07420bf55c5240508e4ba6e10fa6c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4ae0de37cc33f460ed2b21f3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:eb9fcaa57a0919082a8f8209" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45035", + "reference_set": "precal", + "selector_sha256": "3ffbfc5bde3108480148e191e8127948bf248c117c3a93cc2e6e9b79991aed46", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:79e2126e9ac68b96ca145bbf" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:756bb356e41bf6bf133468f9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45041", + "reference_set": "precal", + "selector_sha256": "410f3adecfa47d110063e891229e0430c2fc5639e208f2bc63d1c5cc1ce02f58", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c67b49223f77c565da03b7c5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f5f7f1e702c662fb36274a65" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45059", + "reference_set": "precal", + "selector_sha256": "fae5d8bc0c127c98df15ad0947e8bd72a5e4b1f38fa5e23bae0cc5b44e60d2a1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cabff2f67fcaab4bcf421ce6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8ac14c4283b5a3ce0008c1ea" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45060", + "reference_set": "precal", + "selector_sha256": "d60727985e71ce193861bde3d9a2501e1a75dc39476a1a566adc5358f4353e64", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:45980c3902faa7719e097b66" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4cbf549725079d5c3b0c4577" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45061", + "reference_set": "precal", + "selector_sha256": "18b9c36d0ee460821eacddc26185dedf74063496f7ddd7d74531d516d8c50ecd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:10eeed38e2d62271a93e019f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:613d27f7224dbef8fe9008c4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45062", + "reference_set": "precal", + "selector_sha256": "fbfc0d10019814fbba444a15af7cdbe07af0a38629652d5ba38babe39088e4fb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:79903deb231bfba57d16655d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d702f07c4a5aa4e05fc0297d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45063", + "reference_set": "precal", + "selector_sha256": "686d67633e02b47b5c0207b0eb3a3098ae32230eb36547177a35b8344cc95054", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2abef0cba6f86f7f0f8b0c30" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:07a52ea6b904af44c7701a27" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45064", + "reference_set": "precal", + "selector_sha256": "48851982f0a98e4d70bc502044d07d4c32a8526a36a8bd0017446c5a02535277", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:760c0dd1ac3ac9c66813a2bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1628f544d239934bd70ee4d9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45065", + "reference_set": "precal", + "selector_sha256": "51e4da8df3be3e81644292fe6bed5c04ddf5a738e02b1949b9125a7e50ce60a6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b7437bb52d0b61ffbff3c68a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a92f86e3cdc6aef71ac33473" + } + ] + }, + { + "name": "statbel_population_by_commune__nis45068", + "reference_set": "precal", + "selector_sha256": "21457e7d898e8565834d02cd9ac877e7ee22d9442a971874ca07add8e4f35539", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bad68fb21c1f1b1c5831247" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:156f41d33cc2cff1ac06a236" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46020", + "reference_set": "precal", + "selector_sha256": "4170fe2da1d86c97b82bfa4823844894cb5d30a0089f50a17759aeacfad2e136", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c009e0831d0a904fff338fe8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:16602518b9a219b80d9e997c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46021", + "reference_set": "precal", + "selector_sha256": "b519b86fa6bd050050a20b98044eab438500831027a912e13b2aab7be70b6398", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d441b4c26cd44039b7996e65" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5810324bdd172c6f199028fb" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46024", + "reference_set": "precal", + "selector_sha256": "aba61697a854a6e545dae9de0cda2b9cd37fe80d73e71bc26c31e033d8600400", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:14b05aa96fd93cd0ae45626f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5abf94484fa361b3b02d73c8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46025", + "reference_set": "precal", + "selector_sha256": "9dd4d44a6fe0ae50c443bba96a887499bb0b10383f95dd3c0428a4c54f8f7b0e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e3fed036b13f44014f2027b8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:638f031c363f4556cd160e2c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46029", + "reference_set": "precal", + "selector_sha256": "83139659e0ec80311ddf0f5b5ec8e4042c990b063459276d464b5eae871a31f1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:466bc29e944bae6b02652f46" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9889a4817cefe901e44ca912" + } + ] + }, + { + "name": "statbel_population_by_commune__nis46030", + "reference_set": "precal", + "selector_sha256": "6c0356a5329973a2170920073b06e116694d5b572e16ce589e1c91b5f8a0430f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4fe8687f3cf76331ec076e84" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b30985f372d9aa8fb4082dc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51004", + "reference_set": "precal", + "selector_sha256": "e87596a26c195955c4ca6e02f18e5923b3c8d3c1606fa6bcfa2914a646e57cfe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:da97d42a04b925eff5937d36" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c0cda43b24b10cf4f9bb0b5e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51008", + "reference_set": "precal", + "selector_sha256": "809fb8c209973b725e48728e5798ef07f63978a2f26d43ead512770ca4261fd8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:87e5c3440d4650904559746b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:51ea277fcbff51d6d858b5af" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51009", + "reference_set": "precal", + "selector_sha256": "de7f95d7c6928bdafd6e2d357de7869a61cc9d666b7cf407c8fc930bde3cfabc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:10d43bc480b188ad75962a4d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:38ffd2d4e788d7287ecf0447" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51012", + "reference_set": "precal", + "selector_sha256": "ee3f43a77b42f948ab8bdd5fb8f6d1284ab8b767228fc798e2dce480fc2085ac", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0863fe07357868adadbe6261" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:80e3ca7237167bb1fea4c0f9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51014", + "reference_set": "precal", + "selector_sha256": "cc306a02ad896203b5601ccf8a0a659d68123f202702240a9da9de26e68b44b6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dba2f52e4e861794ff058569" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c4578220cc455018b7f91753" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51017", + "reference_set": "precal", + "selector_sha256": "088816a10676f7b21254bf0c06c1c6189d46bf2f313418857f4b69e0cfe7a766", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f4e48c89112d8bea62367337" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:03a21611991eaddd5909cd05" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51019", + "reference_set": "precal", + "selector_sha256": "21ea02dedde3896d905a75e989a061573b4f394362e1f6c0a21aede21b3a3d4b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f184bfa407db057390b390c4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:333dbb53b7d1f099ce997b5a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51065", + "reference_set": "precal", + "selector_sha256": "f8db5a8e68981e45639554c9c7d8e24549de4d5e90e29213c02f7a62c5d2114c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:44cd01c46b636fe3584a8880" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5647530c04bdb48a1946f819" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51067", + "reference_set": "precal", + "selector_sha256": "d401ffa48917dfbb4582401036b1675cabb68b3e427f32c039df3eef8eac52d0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:46d1731c03983c41416d4859" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3eb8fbaa7acdd3ef2c414572" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51068", + "reference_set": "precal", + "selector_sha256": "43420ebd642f39a33c65c89d92f79f6dca9912317a70e75b8a61e81c87749e08", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f56d6e5c981a6f6c737cc3a6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3a5df75e3866cdf47c4fc5aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis51069", + "reference_set": "precal", + "selector_sha256": "b334af5e4870a770c0fb9c41c6f7d98d67bb56271011a8bd5d6e21207858d33b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3928328ef423e76a77ef1dc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9530551a4fafb879b59f2ab0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52010", + "reference_set": "precal", + "selector_sha256": "473eb13ff2740430d0e252303abe1cb6a217a0587b13113206cae1cd3bb7ed76", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9997afd6eff0e0da92fc32b2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4b6fcad07548cfb7690725b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52011", + "reference_set": "precal", + "selector_sha256": "81fefcecf1e0219b1fab7a287f2679a3af618dceaae8cd9a00026515cb58254c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b4cb92d24f52b28a93790b9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f013574961f27c6b888b88d0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52012", + "reference_set": "precal", + "selector_sha256": "96b1bbc5879cabf9804952e3a8cc03b609a2bd254d75ba42f23c99419b947c1b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4271410eed66fa31a953a1dc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:44ec80c648bd619c8fe58d4a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52015", + "reference_set": "precal", + "selector_sha256": "afa495c3dd8d84d7f816aeafbed8ba87033e17208470ff81205a64e814f8f163", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2de2c026091d4f2808c476af" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8b7b03cf51cb692651ca7e19" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52018", + "reference_set": "precal", + "selector_sha256": "c6338b3231d7f1696340d472e10cf5a62fa5eae6a15b6b1d97b086510e0f9302", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c1f2d7c6fc2b6050f105816" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cc0171b74d9bdfcdfdfc16b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52021", + "reference_set": "precal", + "selector_sha256": "e817f60cf7050f1b821c16c2ea440a1b706381c9f0a043db35f9ec32ad6b154c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a1ca14787157f236d8c6671d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:052f1f4e769802fcf13fa9ec" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52022", + "reference_set": "precal", + "selector_sha256": "7f3e8ddbc99604b643d3fceebcd64857e438a9f784c272e1644b7610af851a69", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6f9bdf2dd79c15b111755a56" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b2c661349d06a32979fe999a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52025", + "reference_set": "precal", + "selector_sha256": "e8910abdd76ef347e70d840fdd4aebe2b84b34eea499cb2c82b7f6046c9b7ace", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6ebe19cad4923b1acc6be886" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7098974dc406bfdc480e81a1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52048", + "reference_set": "precal", + "selector_sha256": "41c09b840f04228f6d91711e9d5d2cd852c21c36c1746bbbd734a7a5a7a48b3b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9506b2c29f465cde17ac1e5a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3488813e9d1785a6a31a6d64" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52055", + "reference_set": "precal", + "selector_sha256": "c5c34efb6a9b3c6b80e5d6165956b2a894622c892a5347d80e02f83276e303f6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed84378a5fda89bc930db2cc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:104ae23840a1e2c4c60d83aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52074", + "reference_set": "precal", + "selector_sha256": "1c438e729917ce8950dcbee973caa666a01dbd7b8adbfc247ff6b4589e52537c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:214ef539f812eb32e1d43ad8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5c5cd57dc5ac0a50bd5ccab5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis52075", + "reference_set": "precal", + "selector_sha256": "10996de4493ff4e9c3c0c248ddcd9cc59de4be54d3adce689cab85a8aed19abc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f9e1249ef0536b83fc2be23f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8104fba30727a063908545a2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53014", + "reference_set": "precal", + "selector_sha256": "f9b19b84d9988ddc9edc002aa92e594ec9851b951071582f6e380314c2849af9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d5b4d4908468fb77d9f4d54f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6810cca2fc9b863fc29c6fb7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53020", + "reference_set": "precal", + "selector_sha256": "89fcdf85bae4bc0e3d4c43a70bc60e114543269233ef02a51260e5c0ddf4d5ba", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ef8bdfc4b1813cfe82800c4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:01ca34a1f2496e1d062f3f67" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53028", + "reference_set": "precal", + "selector_sha256": "213e1e1c7931335bbeb6a623daf7c6ac8ab1c27e8ce234baff19ac62ab6a9007", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:aeee080cc94cd2837ca6918f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:93c8122d8bd15de6a7002fbc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53039", + "reference_set": "precal", + "selector_sha256": "3a718d4a3984f89f458533d48287260eb474d0a4214c3e4fcc613ff6f015e20a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1dfcd1728b953351fca88407" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5547e901123315c1e23d2ff7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53044", + "reference_set": "precal", + "selector_sha256": "97297be1ae074d1c655bc38cad3d2e9e0efef4cba685c2230871e7ee9477d982", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:98b534f676e705ee05bac016" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1ae6609ba28d689768feb858" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53046", + "reference_set": "precal", + "selector_sha256": "447168f5ef562084f4d588dc1d859ab8513bdb5bb6747c0cdb1f896e1f79f11a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:15b4b83fc64fb8945f63383b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ab65f3a3d0e07c27a0f15f27" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53053", + "reference_set": "precal", + "selector_sha256": "855bf95a932b9e395043952a5e9c498c08635f60db9b0e082fbbf4da5a460a7d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:555f1e6f15a0645aca7e22e4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e276cc646666b3d769b2887c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53065", + "reference_set": "precal", + "selector_sha256": "9c7c328d686941c0434850bb055959c31fdf1d916681a9b30d111bb51eae371e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e62059990886d2918c64348" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:29c6916eeb7640f912e4f741" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53068", + "reference_set": "precal", + "selector_sha256": "0d03475b888a2c929aa6c0e5b1e71b36a967eee9989c86d0ec84a94d3aefc35a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dadc7c964c472bb531bc09dd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:81190a7097a509b16cd08fa0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53070", + "reference_set": "precal", + "selector_sha256": "a496c9277fa68cc21ac93937ff3887a94941d2350ec4d28bfd32937002f27310", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0ff2104a08dce9179f9f8a39" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6c7fc61a2aa516dd166a0efe" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53082", + "reference_set": "precal", + "selector_sha256": "e99bfb80f01657a3658f4c868de76f638c80c9518367faa541939a0baee51569", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ca4de29f8c1d9d5a4df2237" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a812a3984dcbd1edd49bae5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53083", + "reference_set": "precal", + "selector_sha256": "8231d73d4ca1df57b461fc388833cc76e831527c4cd686df3b68d6b597a6d2fd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:41220ec2ac3526383043b4d3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:04584e923627392f2b9dddf1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis53084", + "reference_set": "precal", + "selector_sha256": "5048960592d51e43220b0c8a56fcf512d48060509db810e56bff4d28eeb1975f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53e96c709aa85e74bc2cf722" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6d53f8218e934899a5aa0bc4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55004", + "reference_set": "precal", + "selector_sha256": "cb0d3010a43f05009670017cbfb68f56bd38a35601b2e1cf2425c6eaa2f6c12d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:44f7245f3cd4fbb89207bbbb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:697bcf040bfbdf488cdaf567" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55035", + "reference_set": "precal", + "selector_sha256": "b7b1f12788818de3ab326d59ce8ec04aac46eccb93438f817e0b2a4463476d2d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6073052dda3f691e775e86f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9126fc7ac5f555a010efd61e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55040", + "reference_set": "precal", + "selector_sha256": "8486412374b7e27622f4dc87dff378c2c53f45c0909f89e7e245da55f2e5395f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a865134c171efb13c453af1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a86eb2b80b0354613980a51c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55050", + "reference_set": "precal", + "selector_sha256": "8be07f54c323bf9c72861f6a1a186721eaff593d67e7cc8410835e71be15ab2d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8a192e24715a33308fed11f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2696537818b0a777597cde71" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55085", + "reference_set": "precal", + "selector_sha256": "cffe626acd11e51347d9060bd3cf239ce6af3b5b88dd146012dbe67c6f31c02e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:96299f95e3a24f6798852fc5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:48e480cd692c3628151d941e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis55086", + "reference_set": "precal", + "selector_sha256": "ac5533ee99a48c56d1818888f5509346fa5584a1e8c1de6f6ec7cc8966defc8d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5499bdb6955165995f65c390" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:cb1c12104c89ec7e54f1156f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56001", + "reference_set": "precal", + "selector_sha256": "2c2469d1861606c58cbb316dcf89f0110961a7e669d8d74f1a97e7a31eade4f2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8608ecf422237eca610d405" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:15a257babb1291b7be8cbbc5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56005", + "reference_set": "precal", + "selector_sha256": "de63ab34af6192395fa5375bda428d4e6fe6d25ceb3431060f1f5a4e37d97bab", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e0294ae21d11b56ee500b410" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8370d5490fc06b94c8ba3f85" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56016", + "reference_set": "precal", + "selector_sha256": "585a763f8f868f63e4e764d78006c020ec587b2b6521cb581e5fa1765a932264", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7fcd36db5d752a0ab3ee6455" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4d3cf74b4ec8e993dc8d2202" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56022", + "reference_set": "precal", + "selector_sha256": "41a428fb0575e12cad5cd6b3a68b225c1dee5e7ec8dc794b7c6af5a50c58e8df", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0285707dcdf27db821e4a550" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3563953e4fb0fc789d849534" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56029", + "reference_set": "precal", + "selector_sha256": "18435b69b3e43da4e35fc4ced9eaf0ac448f58ca2840e964092b92ae1347ad32", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:98eb556ad4dcd86a8293337c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:49a756b2f6f37c1d145c3fe8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56044", + "reference_set": "precal", + "selector_sha256": "96670e6cdd15d32c4ae9e2ee3a7bb9a9899006290bcf40843d9345dfe1e7bacb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:95df3aebcc9a15c61ceaccab" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d5bc5fc616814ac1c4c369e0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56049", + "reference_set": "precal", + "selector_sha256": "af0015e6d07f707511bf79bd98e55608d079f3685c051db5cbc3b845b7bacc51", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:60727706c74dde9f15c79555" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7afb905d9191eaf13f2b693c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56051", + "reference_set": "precal", + "selector_sha256": "26311a2c916e4ecfacaf75a0c961ab1a3e54c5a7bb6007575033b4efc38f17b9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e397eaaa439f21211523abeb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8c878a1f2b8586a02d71db45" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56078", + "reference_set": "precal", + "selector_sha256": "430b2634ca779e0650643590c2600c9d03d57ff2c673a2c4fc7e513bfd7a9889", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7746e64f240d841dcd98fbfc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a04200f601179d3f6f4d5824" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56086", + "reference_set": "precal", + "selector_sha256": "78e9d1676d438a5375b8589ac422634f9409e9eb7dce34fc4c6c5e07de333777", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1eebb2c51266d85b24d4712c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c0cca93e88462f19b59b1678" + } + ] + }, + { + "name": "statbel_population_by_commune__nis56088", + "reference_set": "precal", + "selector_sha256": "28589765319de1103b85dc873fa0f355f6331108b6425852bfcf3effb42e9635", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:586311945ddc5582bf47b2d9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0b094e4d3357b2dda13af5f0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57003", + "reference_set": "precal", + "selector_sha256": "58a079100f0768cf15a9a0ca045db6d8eb6f636418fcf3e58790ae0cc03508d5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c656847fdce11b9e9f39467f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:adf76693bf0af4691927afda" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57018", + "reference_set": "precal", + "selector_sha256": "bb2c9f2647ce0eb27e40eb4c83c815ce52cfb70f7c4c07b96e7189aff20d025d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:09fa6d27f3ac5f7fb86092fd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7dc63779b33c7bc30b73c637" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57027", + "reference_set": "precal", + "selector_sha256": "09debac07bad529e5ca74927c730c57eb29285952e96aa3fc736fe49ca1f2c03", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a9830703c47df1e14f62648d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6dae3975aac12b1d5165e284" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57062", + "reference_set": "precal", + "selector_sha256": "0afd41f103cd31709abd4f341e64c51f4fc7e42b5f31cd4390f42e57d08cccff", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0b5329491e0e22d21ce9b3f0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7783c08ccd6f2c77eb171901" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57064", + "reference_set": "precal", + "selector_sha256": "3263de9ab37ac941555362c6f64f09b44522721122364addf024681be560f59c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:de8a20162ce0141179bf1a28" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a6b75a41ec08486ea97baa8b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57072", + "reference_set": "precal", + "selector_sha256": "ddcb383cce7848eee6f817524efed4d989302e8794fd5a8337ba34bbc39caadd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:92d788d00b89b9df76cfd544" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:76356157d3e9cb046f916a76" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57081", + "reference_set": "precal", + "selector_sha256": "5106ac93b529197709aaa7b5418d540f65b0775b9398b7be7e96da5c2db0fcf3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e759bb9d8c1a74efd1786d7b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d9bcfa10c72a56a04d984386" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57093", + "reference_set": "precal", + "selector_sha256": "16f9bcefcf857c6635ded7948d0fef3b2cb74310651aa4bf5b75eb1847132c17", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa6b5433c61bc80e23a915ec" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:970d09ffe3625ca29312a967" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57094", + "reference_set": "precal", + "selector_sha256": "18f37c70a1c1824a484733c4fc8386611cf8399517942c3d90d0ba3da86ed1f7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c4f295f600b878941431997b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:acb291f68c900ae98dfeabc7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57095", + "reference_set": "precal", + "selector_sha256": "d13551729e9f23bbd50757a72c04b018927455155afbdebb758acc9a74a78f2e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:52ca65316b89445c40635648" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2ae51c0cf980824a51a301dc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57096", + "reference_set": "precal", + "selector_sha256": "d7f28c6e5c1933842dce9d6d6a5426a61da4553b5d9510ed305d27da8e641b08", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b62160a2a2ee7a8584f150de" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:48554cbab4a73b0b6947417c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis57097", + "reference_set": "precal", + "selector_sha256": "fae3a27b83b904f360077c394d5b0c88cc87f28174a1d89914befd8a3f4260cc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:259d6461b061f216036c65f9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:10a596e6bc5c7d531abc3a30" + } + ] + }, + { + "name": "statbel_population_by_commune__nis58001", + "reference_set": "precal", + "selector_sha256": "a17a9b8e3e0e2d20bfd5ac257b987ec836d482695fc45ea14aed44e51e6896d7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:da4990f792622cff0d434d23" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:48f8de2c2b53e48e68ffb3a3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis58002", + "reference_set": "precal", + "selector_sha256": "2c466c4df92927dd1029d512ccc6eeb9e61a541bbc040e80047410cec563cdce", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:933140f66092e0b3e66fd462" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:06c7342f52712bb6cab493e7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis58003", + "reference_set": "precal", + "selector_sha256": "53db9e7fb6fa9a7a155839636335f63dcb2db634fcec51b2cf6dbfebc7bdf339", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0ed8d78d4ed477540c09e8bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9b216c59aa4856bfb1affd04" + } + ] + }, + { + "name": "statbel_population_by_commune__nis58004", + "reference_set": "precal", + "selector_sha256": "e5d3175676e83b44e046f0c20710051c5aef4b9e4ee266635156cbcca95c3a03", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:97322ee52ed54d2d5511760f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6b83f1262ec86ae410fce7a8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61003", + "reference_set": "precal", + "selector_sha256": "0d09ad29cb7c445a46e0e4ceb4b447008741ead56db432a03e5775d1d779e83b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bb8d98e96330bcac45539a4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:229fa390899f9286ea02800b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61010", + "reference_set": "precal", + "selector_sha256": "fde1068e94fed1b9790c53b2f036b825ae3cdd50e9d6045f8ca7e836275f0fb7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d506867e4a8c74ee46789746" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a7ad843c4b1d4d7312019d6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61012", + "reference_set": "precal", + "selector_sha256": "a5024230dcfa1e672db59ee3b9a7c79636aaf7d4bb1e6d2389c8aaa42e909efd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6028719a0da75496756ca013" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:745d633acbd2e919642d7e3b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61019", + "reference_set": "precal", + "selector_sha256": "53fb530c19f59ab44cfd4ff6afb304b4dfcbb3f2295b70deeb4e20e5797ec7a5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:06fe02234f649a902c67f162" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d53339fca8c236a32e67b4ca" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61024", + "reference_set": "precal", + "selector_sha256": "6e788bdecbaad1d7d75dcc9e45267023285bbb47987fba6cb5ec1cba3d18aeb5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8de0582dad2d586eda047382" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c25774844c2da31976105750" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61028", + "reference_set": "precal", + "selector_sha256": "72fa5ee0ef475dfec5b5724595c0df6eb12ae229c2df49cde6353cc267620947", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c219d989a117d516557a681e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8bf5d13a8c90580ec497387f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61031", + "reference_set": "precal", + "selector_sha256": "86d68085848aafe65515726dd5053b995442e80ea8217e98bf93dac0631a60b4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:806777fc8d56eb86af59a82d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:26710a618453b2bb4a676e2d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61039", + "reference_set": "precal", + "selector_sha256": "8bf6ad5d156c2e97a7306ec10c198edf713debee44a5bb42a37c8613adb617bb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dbd598a413d2ee334afcbf15" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:78a043835d345f960b34f620" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61041", + "reference_set": "precal", + "selector_sha256": "0586cd9a6975b0c4a949089617a24253c87dfe46be4da8d40225529118a10d1f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:43ea50ed15521330eb1109bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:90385f8946387b5803d2aa1c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61043", + "reference_set": "precal", + "selector_sha256": "4929a9ed142a5ffe03aef676da9ffd9306ab00a6b491dfc07cfbadf811577a43", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:16f071cc05e8d23ac167f40c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:499011611efa3b51edf746d6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61048", + "reference_set": "precal", + "selector_sha256": "717c8256ef6c7ee4db17b01095f20d5cf489cb2af6ad6834ef8af0e7514316f4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a76dc39f0adead945654ab50" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f8445dc3cbffe4bb88428be" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61063", + "reference_set": "precal", + "selector_sha256": "bdba7fce732c7d5d49c00ba4781ed464b8c31c881979342c51bf7cf63c1f8c9d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9818e948dc3a02984ab2ef05" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1b0480c4a5a38fce51c39d3f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61068", + "reference_set": "precal", + "selector_sha256": "6f023d4e099a30b068d2e749e4d9ef21263450301ac1211755520a79ed67e46f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f57531d090ba7934bd523f36" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f310e33c2d61d072b27545b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61072", + "reference_set": "precal", + "selector_sha256": "b3d7c8a7198764d9f8d40a1f976933c4f76d4d03950d8d28255ad832e55a2499", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a1765160bac3cd12e9f4360" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b5e1f406ac5756df8cfff5a0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61079", + "reference_set": "precal", + "selector_sha256": "1d30afa31db5f89788bd5218bfd59ac266c374026cf9fd7c111d789cf1f3dc87", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:53c15e5b1d2343603ffaaf3d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:94f6aa12649c77ec33d53b2b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61080", + "reference_set": "precal", + "selector_sha256": "11dcf483221778b069966b7fc878bdbb1231786a0fa0321db9ad2ec22d626fbe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb3637dbffc01671bfcd5058" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fa0a00270749ab3273ad0efc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis61081", + "reference_set": "precal", + "selector_sha256": "bf3b230ce3c4b6862828c55c38d938ceea4977da6f0f4ba66d55e29ceeee2685", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:542d2223eb57fa2829ff0603" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d5e6ce5d9849dfe6a8562bc3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62003", + "reference_set": "precal", + "selector_sha256": "928e48ec4bd4f49cd19dacfe4b1586422e7fd68ab4fbfa6c9afcdea8e5af5bde", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ae39530b5343b4097719b34" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7f2646cf5ce588c070ae35d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62006", + "reference_set": "precal", + "selector_sha256": "9293097387c6cb7ebbaac6ef03b4bacb6685910526e05c0943179fb5d05e6046", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2a7ebaac9dbcbb74d9096d6f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:15d32c0a8f7c46a73f2273e2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62009", + "reference_set": "precal", + "selector_sha256": "2db84dd411b77eabaa73707e64811ad7d91820a1c3081f8d53cac679fd6062e5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fc5f199b535d7b801e6fd2bb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f030e1b31a5fa3b123a50ac0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62011", + "reference_set": "precal", + "selector_sha256": "c791527e13c759c157fce6b3b818626b23bca183f125a7067a0d8f436d4f9000", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9b1a569ed75c7b8f86f994bd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c305427d9b4eefdb40348d49" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62015", + "reference_set": "precal", + "selector_sha256": "96922215493954270eef64a33632ce601283eacf334018f20db715a277037382", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fd7539021461fc9fd64c6d0e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3eb10d1e8e6043aeb34ec9c9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62022", + "reference_set": "precal", + "selector_sha256": "3bacd90e41a3e47ef680b2b7b9da06694f2ce6ad782736e12ba9110fa71eb9d3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bbb283da2ac2f9ac4ec706f8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1dbcec9daa8158ee980f7d38" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62026", + "reference_set": "precal", + "selector_sha256": "bcb3fab3bc0d63ac78a1e4cc1afc0f1de0777cb2c7cd93a4a8028a9dd6d5a840", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d5b6f53e268fb2a9b9681724" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fe377dbb7cccbbdae54c78d8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62027", + "reference_set": "precal", + "selector_sha256": "4a42f96fcc9102d1f63fed47f61f0efa5c4133cd4d1ce389babd881b183231ac", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa80e0ec7e3dc707c6b11246" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a7be872a335b1c42e11dd969" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62032", + "reference_set": "precal", + "selector_sha256": "6b77deb4c0bac9603456fee4bd2cdfe32c67c79a224e8378eff445813b1d44be", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9fda7e8f198a20019e6555e3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:24bb1f11e2a3cee7a7177527" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62038", + "reference_set": "precal", + "selector_sha256": "fa42c4ea7e9c761ca1fb90059d6864eef869df6a96f2e047746ea1c3ff40edd7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3395e1647278039755595cde" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3e187ff87473126f3c64e69c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62051", + "reference_set": "precal", + "selector_sha256": "f0256b68cebfcb2ecb3cbe4f3b67ea89cd5e5b069d63e2edbc0f5daad0d395dc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a3be55ce22206854264f2c4e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6e98c49e8fcb7cc1956ce9c3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62060", + "reference_set": "precal", + "selector_sha256": "cf48708631a04939c6ef95c272f2228f4e1eeadddfb529e1307b71631c6eee2d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:97aeb6001cfcfeea75bf6f73" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8d45e15d8d76e7bf4eded623" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62063", + "reference_set": "precal", + "selector_sha256": "4caaf04404269d0b142ef82884dce529d399dbe5008e6f75e3e09d84bdb85a4d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:816e3f51667ee780e9807bb2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0562ce72f4cfb8b3aefa3e86" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62079", + "reference_set": "precal", + "selector_sha256": "8babaa9aa1f1580fe66da5808f48e8e6568e1ead20944b7b0dae990fde54cf0d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c98acf6a6e3605ada5e154c1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:261ca4c7fb309d38c8c3c997" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62093", + "reference_set": "precal", + "selector_sha256": "4fea941bf95defac3d97ed0769ba6070c7b807faaeb568f472910dfe93dd571a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:80e0959fe631885ee4b3c527" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:aea1573be8fe2dfeb1edf155" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62096", + "reference_set": "precal", + "selector_sha256": "47daf03fc4a1739b9d91e39bca8e685477c0c29e4ca4a124f2eff6e7a7a0bf34", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b5f4e87ff801af3799cfade2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c17aa77de54cea3e838e268" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62099", + "reference_set": "precal", + "selector_sha256": "7d22dbf489617b2e77a279a087cbce01ce83c23d80a440a7a52d724136cbfda4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:46565145fb373d49c506fb20" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e15723fcdb54be9996b7616b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62100", + "reference_set": "precal", + "selector_sha256": "0b5352ab9ac494ca7ef5a82088e76700db1f68c45ef3f80edc661e4c73f17c41", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:237fcae7f1450a1f87b66090" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2a6acb74003a199459627dca" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62108", + "reference_set": "precal", + "selector_sha256": "975f7663ff9c752e177ad9519e9187c9027afe6b250ccf974426e120eb94b233", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0e1f80da4c9be0c729f031c2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a17c4e6c36dd26ecf3ab63cf" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62118", + "reference_set": "precal", + "selector_sha256": "26a863e55f2af8e4fbb24672a6172013f13b78b419f0b9c57874b5a423b7a277", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e1ef66ae6e24058cf24cf460" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0ee9fa838ac7cc882f724f65" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62119", + "reference_set": "precal", + "selector_sha256": "06fd4ce0390faa4fe159237c12e7a7cb9d928ac20773355906655968b1db8ea5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5868fc6a6af2ff6a3bd4f687" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fcd23b14721a7038207d2290" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62120", + "reference_set": "precal", + "selector_sha256": "ae91e9eba4022312a52ae00ada30293fcbf9c7a759aea746e54a94aed0814d5f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5132080713eb587308810d9b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a784419f9e69d3394a26805" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62121", + "reference_set": "precal", + "selector_sha256": "70b3b21fe89f1c028d3b64af9133489b441e0df928bf4d7e7d9d1d354e0c3cfe", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae44c98419316e8e2dfde50a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2dc6184021556506aafb688c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis62122", + "reference_set": "precal", + "selector_sha256": "c6dd08053d36d1e6e08e2bf273bc8d06908bcfb8f953d855a12028b679245501", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:df3f184540a9732aef1e5446" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:37aa25065c794c87099baa1f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63001", + "reference_set": "precal", + "selector_sha256": "e3e8cfb1d7c3a054c384ed4b0117bd63a7bbaeca36b99bbf547db236022dad39", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:08f8aa167ec786d9c9229c8b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:58a85d3a7070072be9f24142" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63003", + "reference_set": "precal", + "selector_sha256": "2dd72678c4328fd727dafae4b30f6dc8ec036f7292102ac56fd11f7d4434ded0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1814e9953d5f70890d467629" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:24c33d68e8b4e43b03c03dab" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63004", + "reference_set": "precal", + "selector_sha256": "1bc6149177902cb4eccba0634e9ac873e928dbcdca0aa4c63c3b6772fe09c704", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1d334681b8549e826557cbb5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b0736d35f684a57c08ff842" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63012", + "reference_set": "precal", + "selector_sha256": "0b140aedeac0e1c95b6b978d442a0251e0253b05ea962a44938c2af64786d085", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c11b468348d257dbf5a7ab0f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:45eff249af41e9e7ca7cbc11" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63013", + "reference_set": "precal", + "selector_sha256": "607700a82339cf2c0f9095bbc70e6feebd92bd5ed56ccc4e813f28e7d0446fe2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3973303d8e7290152832fbe2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:95b5f5caa66fd6a831caa843" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63020", + "reference_set": "precal", + "selector_sha256": "b401d659645b87c12f39b612d8865af3777f53693213c3c76e92030392ebcc1f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d42cbde731128c5a2556910b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:216bf668538db03b9909c5dc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63023", + "reference_set": "precal", + "selector_sha256": "b05f962ad10bc932f697061bb649c4f6d647170e78728480fba65785e7278736", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:503d1c2830b8f29d9adb3f55" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:25d5d8b1efcd33e743e16ddf" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63035", + "reference_set": "precal", + "selector_sha256": "40906f52c57337a5e1d8ae59683173506e015129bec7e8596efab50b4f067d1b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:88367cbeb1bb3a2bb225dba2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bbe8c0a66322aa1b0827f73b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63038", + "reference_set": "precal", + "selector_sha256": "94d32c6cdd2f03e887f631c5a41c47923c1ab5c01a2604de19644d2d50254830", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a1c6ac7eb26f9186da1daec" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:60112d4068859a2057f5a109" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63040", + "reference_set": "precal", + "selector_sha256": "dbe082ce6ce3117f970efb2a067e51861afb2ec01a20a1035e63332a396caa63", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a2d84ed38223326ad32a75c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a99c0ab1c10e86e768df8f80" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63045", + "reference_set": "precal", + "selector_sha256": "37f2376f0810360cd471eb23ce8acc93852fb60561ad59cfc8905b3c94ad54b6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ab9bfbba5fea5d2ecb727c5e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:750e6dc1e7aa920b3b13e166" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63046", + "reference_set": "precal", + "selector_sha256": "d0cbdc640c5990f5b0c50546a665a0b8dcb7de89860720664e18954e1d3284a0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6eef12675113143d59ab616c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fa24f5691e56102ce27154ab" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63048", + "reference_set": "precal", + "selector_sha256": "29bae55efe6c27d4429bc2081b1fa00009e25b2df2015cfced6eb1d5844380ef", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:269df8f181c3fd9fcb408953" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d6f16e632f2f96ef307187e4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63049", + "reference_set": "precal", + "selector_sha256": "147ef8578a1ba0844606609fe3fd9eff207f4a3068bc1ad1d07c061d51445bde", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bce7a4bd8eebed960d2cf697" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2896df94893bc8900a0e2a6e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63057", + "reference_set": "precal", + "selector_sha256": "86ac060e23a5bd8dabf251c3ad7b8a4da1c0ac9a90f6d7b795c9ed5aa51f5c20", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:92285080e23e90b1e408fdb5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d69a93f6972c20ffb990d525" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63058", + "reference_set": "precal", + "selector_sha256": "a5d9eecf88c9d11c51c18538210f649b78e2d14d4eed40809db4246528f2967d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:27352a66a7c6af3ed8f914e2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e78302e45aab3ca3d4973554" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63061", + "reference_set": "precal", + "selector_sha256": "b2fa9616828d3a901a817ab987d04751359ae863ee79821d3d38dbd977a6ec90", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:62d2d5caf6c6945efcee93da" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d0f8eb73f1a9f1ade434d5ef" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63067", + "reference_set": "precal", + "selector_sha256": "8428533cc4ba90a2a80b83127a023e9355bb5e322e2f0b1b329c22ba09386e5b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:732bc5cbece5713286ad49f1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3231a5f84e538e7cd04a7540" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63072", + "reference_set": "precal", + "selector_sha256": "a08f75e726f12da2ed2197d7fac327f038d04b70f1eee49da7672c5434f4264d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:304d043ae3c898aacb1ddfea" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dccb1908596ee148692ee29a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63073", + "reference_set": "precal", + "selector_sha256": "0375aac22d0acf991a56e26c5c52cef678fec7a163a5f43e8c1ce887aa7d8b59", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b16def2ed8946254307fd600" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0dcc8ee843fa942e067782e8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63075", + "reference_set": "precal", + "selector_sha256": "c403bba5e748a2a1d10076f6d4c3fccf0859b50f0d4d5a9e0fe44b82dd071307", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fea3ebf78a10ad3c81932e06" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8c9e6c8024ae5841662adf8a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63076", + "reference_set": "precal", + "selector_sha256": "9f0a61aa0f90c5a5351dd6377ecbb7bc3774ae6383593f5cdf7401cd3bdda8e9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:343c3f178611fc55df15572c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:51d976b2130b731ad9798077" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63079", + "reference_set": "precal", + "selector_sha256": "3a6be23c4b93642f8e59a0f325c037939670ba0f041982405fb83bc7428e19ee", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5d72f434c9a3474dbe71ed19" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dde695bc9a0fe8b19dfbc83b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63080", + "reference_set": "precal", + "selector_sha256": "6551689c74acec4beab90841534ac5537bfb24315be9c11729009277cb350389", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a0a8e80eed2c5e9b0ad018d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0d9b389d6df59ea0f8ffed7a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63084", + "reference_set": "precal", + "selector_sha256": "3f175bf33c650101ad1d3fea6e2a6eecb36f66aa9ac2f3f095ebaf1826f75bd6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e5e71a7e1231f4ac05141151" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:09617c9b8b04f17503871bed" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63086", + "reference_set": "precal", + "selector_sha256": "5afda0304cd2991fd133d62660fb23c9e55c04e1981c58bf3a240a600ba3f537", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:78ef03e6acaf48ab0f0a7836" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:012149a0676bdac1e6e8fa91" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63087", + "reference_set": "precal", + "selector_sha256": "2125cae162423a2d0d7b7607238ee3996e3a82ed59151f952dc4e76c2ea6c3db", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cee036e20247a55f570c7f3f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:22a4998f2dcb24c8bb02e283" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63088", + "reference_set": "precal", + "selector_sha256": "8771757b5f60577a42e1ceb4fd370350b1e14815b9581e8a9db14dc60fdbbbb0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:336cc36f2630e1583c8741c0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:afa056fe5ced0bbd081355f2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis63089", + "reference_set": "precal", + "selector_sha256": "0ab395a58d34b364b2b64cb0b9a2e59932a692a40d4fdbc812fa0cb09a8cbbda", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:da498849f929bcc09179e85b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f4d843c23a2d8da7fc900b37" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64008", + "reference_set": "precal", + "selector_sha256": "982c013f86a1ff11b6601a81f96f75453ba24182b59caa5fd92422e8cfedd7b6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f1324b54394f14f79217a0af" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:56a5cbd5860a839798945057" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64015", + "reference_set": "precal", + "selector_sha256": "8ace3b350c999fcda30a4273422e5f88d7fd6407298b21d48117f69c6fe36b9a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a5bd56c1146bbda5d5b970a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ae29cb568eceb22291bdd793" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64021", + "reference_set": "precal", + "selector_sha256": "ff8121997392b5c98c7327433ca80c15d108bf37dc0578d2e2cb27cb6e799cfc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:402dbb99b7eaea5054ae85a2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6aed55d19571feaf10b76bd4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64023", + "reference_set": "precal", + "selector_sha256": "1a9cb5261e3bd590172d4d9c6d894f2cd001458979ac8f8962be1120a13cfe8d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ab398159391457cbfb0debe3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:23e82571c2d5a68d7033d7e4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64025", + "reference_set": "precal", + "selector_sha256": "a10270e4ed393d93646c6d65cd71da71c6077cb28f2564980bffa6ea01668e82", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:27e61ea50f487302fdcf2614" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:04a716259624bbd415b14ebc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64029", + "reference_set": "precal", + "selector_sha256": "8bb799479b7314e68dcd3b43eb0cb0dafe1ff49b44491f11779d8181a4ac105d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f50c8d11d8a6737bf3f206ef" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fd23097fb3ff031eaee0ca27" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64034", + "reference_set": "precal", + "selector_sha256": "460de892129cc4da5821325a50ec60efcf73b839dba39bb609787e527d7b4951", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1a56e77482c38ddd403efcb" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:54f4d8253c6b75a0d84b15f6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64047", + "reference_set": "precal", + "selector_sha256": "e9617a2ce88e76107996cc16e21d22ce1329b51561ec19cc97d42b8bde5e358c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b68238d539c05eb27ce584c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4086d96daa4c9006f6d29e77" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64056", + "reference_set": "precal", + "selector_sha256": "e290acfa6b987028b79e7d6f36631080bd54e5142a9cf648008dc28f0a7905a9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fe116320ba124917b91fc70f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1bd672a3e3b38eeef04c1d14" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64063", + "reference_set": "precal", + "selector_sha256": "028c776f513c8f6e1862b1cd9eacf1c1f1a7e6139ed5583927ebd96b7d64b4f2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:abee3ec8f8ad270411746a77" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b6cc924d4258fab5c792affc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64065", + "reference_set": "precal", + "selector_sha256": "3c85de0e0b4c5a5436b8a5d75118b621ea14b77f06aabd9dd2b6d377af26c1c9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb8cb8db9d68e5f5ab427ad6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b7bf34f14d72567e26b51514" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64074", + "reference_set": "precal", + "selector_sha256": "a6fca97497e0bdf34ac3790a90dbbf23f0e5c27c670caf8ae183d508b5e403f5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d9cca91103400f03d4512687" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:33f6b689405565603fed1ac1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64075", + "reference_set": "precal", + "selector_sha256": "335afbffb929caaa82f7c48ab3f0276c5e6d56396c187202dfb01447361439ea", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:12bc6b56fa2d2399237d8f6e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:195206ef6841cc557c1035ca" + } + ] + }, + { + "name": "statbel_population_by_commune__nis64076", + "reference_set": "precal", + "selector_sha256": "782355a731b8f36fb375043d97c4ef4169435fef8508444697babfc6c4e68df1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8b96362268c32bfc8a1bd3d4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dc5ca17a1177bd46e50981ef" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71002", + "reference_set": "precal", + "selector_sha256": "c0ab323011fe543ec9d7a320aeaab5a2dcd28f82107759c2589d2b0fe8b1cec4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:43e38a6fee0eb558cdf3c2d0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c1bcf6f772b1a36fb9a1f301" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71004", + "reference_set": "precal", + "selector_sha256": "03a1cd70c2a97380f7b96e4c258459fc33b1e50aed72f16bb882143b760271db", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:38ea60af5242708a2950f519" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0e0c3cd740d94afd181c37f6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71011", + "reference_set": "precal", + "selector_sha256": "8ad1fe2c3029393d1c4fce2f8138dd47f3079aab3eb9afc51b66279babb46d53", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4e99230647364a21c7e36bf5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2f3beb6ce68d3a1174564515" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71016", + "reference_set": "precal", + "selector_sha256": "0ae11654631ec6afb412856793d1a035b6a942a0137d080cb7d3f98ea4f6c1fc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f38f3ae6f93317919fcfe6c7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:af4a14fb7a3a1e57ce964932" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71017", + "reference_set": "precal", + "selector_sha256": "8a5f45082173e1203b1dcfa5c542c0118155a5d500ebcbdad08602d59ecd0b04", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a667eb27a7abd6a80626dccc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:642ac3f312074521cc17f1f4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71020", + "reference_set": "precal", + "selector_sha256": "02ba259c90af64206395434f8cdb36c3c054c131012000ad655c4f8216875d42", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c678a3e244f3fd2e697ec33" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ae5038cccbf3a5b0c72d2da3" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71024", + "reference_set": "precal", + "selector_sha256": "2e909d492149b77035e55d26a75734498d40f16af50f05485901b88c938cb8cf", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:158105242e61dc604f7ce43e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:31820b7b0986649fd00d878b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71034", + "reference_set": "precal", + "selector_sha256": "e645631b96177772b7d3885f3f1f7fdf4f9cfefbceea2e8c9988456befe79376", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3389622ccb1e9f53ef736505" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5453b94303839a7484b65ea7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71037", + "reference_set": "precal", + "selector_sha256": "9cb2e4cb03fc2a8d5648b2e2efd4a34cf20dc1714105b8b5a60ce4127c827ae4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e1d488c0de5bebf5609ac5c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:20a47b9b63ebfca64ff4f0aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71045", + "reference_set": "precal", + "selector_sha256": "6929012debaeb91ce6c3542fd8cb28f9f3f4720c385dbed1980f918d89d22cc5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f5edd0926eea3a484750ddba" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d80923dadb76fd4ab5b18dec" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71053", + "reference_set": "precal", + "selector_sha256": "2e228c0ba46abd87fb4e489673bd7ed3abd325ba385fc37ec3a511094c7d78b5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bbb9fa09496f83376272c284" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:be27d19148712f5e645d9636" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71066", + "reference_set": "precal", + "selector_sha256": "5b283a80933c4cfc42fad991fabcd43dbd194e95c2695efad08a41ea73692f49", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6e2d2b374153acd25552c424" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9fde99605ddbb8a0939af7bf" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71067", + "reference_set": "precal", + "selector_sha256": "306d741f8950dc5ed408a4769c89c935d70fc94acda5d25601b6acbd7875c39b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cbe7b4bd80cd717121c8a55f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d4fc0f645a5aced029ecb20c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71070", + "reference_set": "precal", + "selector_sha256": "94e7a9b0aef34c1b73535e62d37a6b7ff2439d06d16863e52b292019208c478d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c00ed959717f249cfa1a3b3a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:767c78eda1cde7cc95470554" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71071", + "reference_set": "precal", + "selector_sha256": "2811bdff41daf08ccf9e4e1e55672771a04676f3429d291f4b5088ac5e810c0a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:016e269edcd5d6b7c7d7d7ce" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3941234bfa2a8d6b2bf2bfe0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis71072", + "reference_set": "precal", + "selector_sha256": "33aee8120d72605c941efa40eb404dda6b0e0c874898e90591e295cb5743c79c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:10960756b96a7a6c6eda43af" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:83198e2eaafd55033b9c8ecf" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72003", + "reference_set": "precal", + "selector_sha256": "330cc80a9b8908812707b887327cfb5e38bb58f34703e93378567f8b92325b6a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:118449fe84c7d6c46c1a524c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ef2269bfcff9ca80b0862c7c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72004", + "reference_set": "precal", + "selector_sha256": "cf71a740e750acf98af8b2e5c415778d481782e17d0a6a488f4c34af7539c121", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:57f1a472e131ef465aff1e66" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1aa29e402dad2b0cade57312" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72018", + "reference_set": "precal", + "selector_sha256": "bf4ab8abc4dfce7f27da092239224ec7687e420b706cd740e81e13506170779f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9dcb3d6a3d6be5781206d066" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a336c8707cad04f18dbf2a6a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72020", + "reference_set": "precal", + "selector_sha256": "f6cc25c2fd1b7f9e3f464d8112fa31314136b639022574e82c2df4fbcdc34ff6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c1629c221ec490b59e3bd8a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7bcb9a954bb466478f11607b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72021", + "reference_set": "precal", + "selector_sha256": "cad3c63e25762e6d223d720df795fc9d482020f00bf59e305a07f86d188e36a6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a27c8e9c47a7ba013ca3fc07" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:85941c9316ec20817a3f733f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72030", + "reference_set": "precal", + "selector_sha256": "7d9e5c9debfe5c166773bed216ea36349e6d6f9b6e6f7295049e06dfe67d1484", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ef2da197b4d7272c0f7dfa7a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c4bb55f9229d09ca16379375" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72037", + "reference_set": "precal", + "selector_sha256": "2c4a962661d9e193e4464fe7b6f6ac2018411b2208144bbeae6070f21c41caca", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2013e91ef366cf1612ce9c7b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b65a61ccfcf0b7f5f433c53" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72038", + "reference_set": "precal", + "selector_sha256": "e668e0eb0b334f6354e2e11750a282f66fb792c7122b9222272530336557a1a2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f7014f96fa6a47003b77bf36" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:797503b735c13f0940189517" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72039", + "reference_set": "precal", + "selector_sha256": "ae95f212463f6e2d58dc495529fc7822be9e905c88dce2494139a4404248bef1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f08b2ba42fb0d77debb1655b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2a9068b2de33f5fafe4f75ba" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72041", + "reference_set": "precal", + "selector_sha256": "0f2f91ce1668eec32b416d4d010ee155cbe5503447a6e4d1bcc20069fcd6d60d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7bf2230fd69814090859d15d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6d498926d13e25b0a31fc950" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72042", + "reference_set": "precal", + "selector_sha256": "422a941753467d0d77f9457a1fcf3170b6441312338dc16762bcffb98d0d4b12", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:84bec730fbec9ad24c485a51" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3f6c5f2636c590966cda1db2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis72043", + "reference_set": "precal", + "selector_sha256": "9ffd3130cc88919ab79cb2771e3ab92ec8421a8dbcc3bea80770799b06157e83", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:090997dfddd6371ec8605dc0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:69aa7995e56704c36a8f9375" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73001", + "reference_set": "precal", + "selector_sha256": "37095e0755efe109dc8d68d074d27f8aa22bdfbf98e393192803ad55ba5d0218", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b7f2af1f8f193eed041ee8c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:eaba566286cdacf32869d81c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73022", + "reference_set": "precal", + "selector_sha256": "3e1776a1148d72c1b6381a625f3348b850a289a2a43c14fdd117e6aedebf19e2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f618029c4b0501939b6138c0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c07857ffc7be3b9cb56e0efe" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73028", + "reference_set": "precal", + "selector_sha256": "7a8691e67a550c67b2fad5953e4684fc15648cb76402a17fe9e1eaf4f8326cc1", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:66c95334c99c343a30aca149" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7f2dfeff831c9beb485ccd03" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73042", + "reference_set": "precal", + "selector_sha256": "ed7efa74ab8ad626fa8ccedff3b44fa166ded070f0a07f6145370db9de39816c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:117ad2ae33571501ed106590" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f17d68de2c66fc779cdddf10" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73066", + "reference_set": "precal", + "selector_sha256": "f1af6882a968385cfd8e601d416c11e73b3412093d39ffaeb0a042f2abc5cf13", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:884d1ff92cc61add2f0a1615" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:903b1344fbed7e268ff91d80" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73098", + "reference_set": "precal", + "selector_sha256": "ccee513d15c1138ae76493ba606cd182e4410a5296023e769a1526decc1371ca", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ba1982f698ab40e678940444" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ae8c754446b1c7009991fbfc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73107", + "reference_set": "precal", + "selector_sha256": "20e6277846e58a9d214a51937d09e1c0c94107b573e5a1a9a80d73ba4dbe5eb5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ce7d8146a760c3a2e43826c0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:07b76334ae740c975e9fd3c7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73109", + "reference_set": "precal", + "selector_sha256": "659d6c3b543d114adafd69be7b3ae76379d9c002991ad4b30e7aef05ccc29737", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:196fd7f04acee247618bce28" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:db71bb435f2a342408132729" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73110", + "reference_set": "precal", + "selector_sha256": "7dea54cb53dab8ae1394baac5a15994e2444a873588d81bc34e22f23c2a04bfd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:71084bf8256a9cafdbb05515" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4c18c6110dc9b8a052c5df88" + } + ] + }, + { + "name": "statbel_population_by_commune__nis73111", + "reference_set": "precal", + "selector_sha256": "ad84aa030fbdadfeaa79df95c80047418e1bccf2d45af442f91e26b44a703ba6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f10feace0509d39dd2afd832" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fdc64064c388f9bc779e8161" + } + ] + }, + { + "name": "statbel_population_by_commune__nis81001", + "reference_set": "precal", + "selector_sha256": "da3f836f418146d1676144e0c3f5ff415d83283dbc5cfdbc80b72083be600122", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ac2e9d4344d2b33f02e5016d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:87562f7ed9a5d7019131d97f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis81003", + "reference_set": "precal", + "selector_sha256": "b9fb79e1f1584ff76da3c0be74ff278683fc13c1cc16c9ba9897170894d3fcda", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:15c625e31cdeea1327ad6fc3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:267f683a408c9659f5dc3e4c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis81004", + "reference_set": "precal", + "selector_sha256": "07bbdcf39b9d735888adf9bfc3a0c03a663b6a8fdc822f607a78fc532aae99dd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:44ab1febc1a968eeb456064b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fc8ec482bdf6ed00053770bb" + } + ] + }, + { + "name": "statbel_population_by_commune__nis81013", + "reference_set": "precal", + "selector_sha256": "e3474037f463c71548ec2c510e3be0dbbee4a5099a8f324b03555397833b01d3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7b941b2308015d679d07e1ff" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e37d612fe7cdcc89f59ef821" + } + ] + }, + { + "name": "statbel_population_by_commune__nis81015", + "reference_set": "precal", + "selector_sha256": "51a55567f92537db08f8434616d42ce1b7a19b82928a5215bdda26e4dee1f209", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a846a2a49ef204e1a48e0ce3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f54f781d7b6b5236a7fd3eee" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82009", + "reference_set": "precal", + "selector_sha256": "d0efe3d946caf0ba85c2f9b92ef770f47dab47de242b9a17d4d59c50265af377", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b12cac11649f9d5ca9129fac" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:46a00fb733204ca89ac42f34" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82014", + "reference_set": "precal", + "selector_sha256": "ed11f5658f0997060926089665bcf8a14ed096b2fca74719211d1f40a97bb12d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cc5c70168692c2a6acdf970f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ae95428b2660418a7b97acdb" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82032", + "reference_set": "precal", + "selector_sha256": "03ebe656a3ed23dee4b905a79795145098b18e65e2d2072160f1148b047131ee", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:69a7ae1992332b0aaee74a96" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3314beb2a535829ea1ca4200" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82036", + "reference_set": "precal", + "selector_sha256": "2195c149c678efc3071de3ee1884dfbadc7dd02d790bfc5a1eb48e2dd7d0a7db", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8f635f15e0f466658b6966b4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7de37cad30f69873bb895aa9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82037", + "reference_set": "precal", + "selector_sha256": "1bd1ebd5298ca2080d39c1850067e104e963fc79ed54e854815f2f68fde65485", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4ef2cc1ee0b0694b518d94ff" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d9dcacbd132eced7c932ac9f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82038", + "reference_set": "precal", + "selector_sha256": "be717d90848cf3843ac8e09e3295e0388d7ddec7e1923e0d55cb55f2870cc12c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4974945db7ed97ba79bf0e34" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:042df1890e9f781918a2b9aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis82039", + "reference_set": "precal", + "selector_sha256": "22b7c1f7a5e1d5148a2b77e74b104aa89d7ed4caaede211658ff33c4c7ee03eb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:913492db699fe335bcf2f9b8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:18baef9066047504a12adddd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83012", + "reference_set": "precal", + "selector_sha256": "04d25c51591c75348d379c27c9c6b6fd66d9cfc53de35a749d7819d18ad78f0e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f906bddd2a9031d7789454e0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ff27551d7d25c0ad20a29305" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83013", + "reference_set": "precal", + "selector_sha256": "663bdb2e68d4735f458d3b3ad5418ab629dcd4b3b8b6345d2de3252e79685fcd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:65aef9fa06660e59303111f8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c96b1ea40abb180885291ff1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83028", + "reference_set": "precal", + "selector_sha256": "c6d1c2405889a199791095bf29f05b60b85f4945482f7fec8c85ff0bf6db6551", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:57be612717150562283e0eb8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f5408b163bd4e1adcd773d4e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83031", + "reference_set": "precal", + "selector_sha256": "386668c14e32c8bc6592a82d32bc56add81b1ebe7caac917d3fce5646ea62320", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:47b7d31757d57921640089ae" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8d5396690662d10f7d6642a8" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83034", + "reference_set": "precal", + "selector_sha256": "814c07534a2d6e4a1490e4ddbee8318d2e61ce14baf5b46645281f6b41c0d4cd", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b57dd57e29696aa7a925d1e3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:41fb7c2cf3ddbe85fc8af36b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83040", + "reference_set": "precal", + "selector_sha256": "7e9bb60f786bda835d95d9b887f85cbb439eabffd98c0eafeb038c7668ddb1be", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:94142579059fd20bed646ce7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:36134dd887668918ad9550aa" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83044", + "reference_set": "precal", + "selector_sha256": "2badefa1af848195592857821c4ba70b8baaadd3e050c8e6d3ba0f367da3081d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ebd199120a2e208077afef3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:bc30c1b4da89342ea3434676" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83049", + "reference_set": "precal", + "selector_sha256": "fd83c242128d06080bc822e0a445b9ae3bbde868359d929d30edb712af6af7e0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6acfe13a7b0f561dc984ce77" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e32b888c8c1a399281f49e53" + } + ] + }, + { + "name": "statbel_population_by_commune__nis83055", + "reference_set": "precal", + "selector_sha256": "bdc24ddc866467a473b2e549d068f267be9d1b5f01d8300e9cec4e48db9a4ae2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:484419bc1a606afceeed0fd5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:46e38178e7b9910ada85239d" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84009", + "reference_set": "precal", + "selector_sha256": "76a39888b3cc15738c086cab7dc580c6fbd898cb9c738df5733aeb1717a90053", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c10e52ef675efb1b0a891a8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0b6878d4dad7bbf26aef5cbd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84010", + "reference_set": "precal", + "selector_sha256": "70a292313b29c11974c4bb408321b1e95c61fc9eab1e6cd6c2865b108394fcb3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:222603d39bd0bea7a1980373" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f5ce404740cda3409815876e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84016", + "reference_set": "precal", + "selector_sha256": "44f4d1afe522d1dfce5a14bc6745b11b3dadb14f8168e63cc0501ffd82892614", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:58b82b95db1d5532d6888db9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a43390467c5e6600bf69ac00" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84029", + "reference_set": "precal", + "selector_sha256": "85f18f29d8ffdb2b2c2fa8c7a5ff2c9fd0b148d35dede7df51ae4120a8639f20", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0080a472eb23cfaa3249435d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:89dfa82fe501ab7e6fb8c4d9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84033", + "reference_set": "precal", + "selector_sha256": "9faf35694be8401be4c39653963b6fa2c794bf52951450a94a1706d71fdbaa72", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5f93007cb95669086a31c47b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:a9961579947852afff1a852b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84035", + "reference_set": "precal", + "selector_sha256": "192b3cc5f222b16987cc07b25ebca70afd88eddc7b63e2c91a944100f2f50de2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:482ec099793ace830eff9adc" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:91de0abb74304176334e997b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84043", + "reference_set": "precal", + "selector_sha256": "115357cf823f5b83b99bb325a945cc01d5493038f68f85f8a03b9d878fc22e6b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:636ed099505e8f892fdb256d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fd8d3e5caf25bf15af49257f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84050", + "reference_set": "precal", + "selector_sha256": "d75ac4c5f8586586f181e1e2b904a22be468a17560ab4d1d8803bbd517844914", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9183f57470e5122283827a45" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:00a2e60e1ac5a8c1ac6daa5f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84059", + "reference_set": "precal", + "selector_sha256": "db46f5d9c256e241a2c40c0841f5189cd1986ed8677a48cc751f80c8f04b19df", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c7c6a501f114533e00cce27" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e071ead79c9e8ff5f9e068f6" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84068", + "reference_set": "precal", + "selector_sha256": "1ade7fe366c60488c4867aa931fb45b0eb33c279599ec543d99545c8a8b8b31b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e5cccad3f65b272b7f10db95" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:833888b66ad66b750e9f046e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84075", + "reference_set": "precal", + "selector_sha256": "40bfd99d99016bca7253d9c0208dce4fe2dbb6d6f1c00afd62152d6254635e7b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:54689453f5d0a002f1c42073" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:85eb45e860ead230639b6657" + } + ] + }, + { + "name": "statbel_population_by_commune__nis84077", + "reference_set": "precal", + "selector_sha256": "14ada41895acb52947b3e5490a8d04b452cab2508ae872d9c31b6edb59412ed4", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:12ef5c6fb7454ae7ae0659c6" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:416ae7d3b495c3f6db9a2ea5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85007", + "reference_set": "precal", + "selector_sha256": "a640b2efee5540ac0e970685f0cf091bdaef26ecd83e22491fcd96f4ce95020f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:17ad107ab5d2f66119facb7c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9e4e59a7ecf148bf71dffa6f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85009", + "reference_set": "precal", + "selector_sha256": "0d4b78a1aef51b517bed1b8e2c38c2d6a141aed9d4f66d93be5cc71616627092", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:18fb7d0e5af97e10f168545d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ba0871d43c830c9d79a17737" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85011", + "reference_set": "precal", + "selector_sha256": "689da7a6476ec2885bdef0c7b81f8ea90957694d0ae779531d8e2f699a32a650", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d2792735b9b8b51283d83a7f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7194069e2fa61b0d1458cc3b" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85024", + "reference_set": "precal", + "selector_sha256": "5ad86195ddcccd680807519245b37d91ba144ba2300402f2fd2c05e14960da19", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bae751ae2c1cb1d7eede0743" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6250eb24cf2378de8cf46ecb" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85026", + "reference_set": "precal", + "selector_sha256": "32d3d8d1bdfb1b247473a68881c144abd9c031b1ce46668dcf2245a3d4a45d7f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5edd80b21b149d00dacdc15c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d3f43aa11e82888defefc967" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85034", + "reference_set": "precal", + "selector_sha256": "2036c97c25fc4d1e51b658aa030bf0bfaf006ce5d38a93e8e27da935f3e76f74", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a1bcaf7e8536b0256982483d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:25bedde4b16866898d6f8483" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85039", + "reference_set": "precal", + "selector_sha256": "1f1af8a4d543ab3a9d84793d16a534f7e1e604be0434e8595ae78107bb0f93e8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6397fde6cc26d4351cfa2df4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:339b32305cb7f42a8476d328" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85045", + "reference_set": "precal", + "selector_sha256": "0a63adc056a3cac35011e32914ebc25bb2a022d100cd091dd51c1ed8874277eb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ca7988dd927ba24395f22c87" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b3c7fc7a6f7146917f8106b7" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85046", + "reference_set": "precal", + "selector_sha256": "f0a6b3beda2c6c9a69f31a7cbd994c089f83c6f685502db42710662582279bd7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5604eca43a40ac333769695f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:8c569ff85df822df54630a8e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis85047", + "reference_set": "precal", + "selector_sha256": "b511c416919807ba0d7d17b173b4bce330438421ff5abb6cffaa8ef8b46d5ba2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:05be2a3c1b79ef12822bad02" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5e17369919ee642f3bda78b1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91005", + "reference_set": "precal", + "selector_sha256": "726a57a79ebb457c56dc735565c6ef95fb6580ed08f80b2cf0d08248a60dde2b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7afd4e91772c22fb4269a5a2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2d777794b1e43b211dfeab49" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91013", + "reference_set": "precal", + "selector_sha256": "4bcf31fb46ab2368284a2a97a9eaddf397e21c21b6651129295cc8b21ba42144", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a7867a2f57940b77b0ae9ef5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7574209d521af200076b4fbc" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91015", + "reference_set": "precal", + "selector_sha256": "bfa5f15f155d4fae273cf551de76abea586ea1d1ee9a8bbbaa1323200bfcbe29", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f58a68c51f24cc800ae8d93d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c6d6ed58ca3dfe780e47f84" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91030", + "reference_set": "precal", + "selector_sha256": "36c41c401142392004fca9516939b924c629506de0c533b507b3989622a5b995", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:90c1762b1a451422199a1aaa" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:96f1582d9b073d67bbdf95ac" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91034", + "reference_set": "precal", + "selector_sha256": "cb33a79b518d4e46b02ab7cb3cfd2119723fa9a3368a6b9a228818becda93128", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0395b8a5266ea04169b3c7b0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3e67e1bad8af59f8778ead39" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91054", + "reference_set": "precal", + "selector_sha256": "94f68f434d0af8f44ddd86fd29d9340c21acfa113898c62a230ff3bc67f8962e", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:37f7cac13a55533a4c75d40c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e2924c4013f183b7dd912f19" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91059", + "reference_set": "precal", + "selector_sha256": "1e6a28dfecffcb0055df88ace73aa37d0b961c13fac0e178ff2c057d3889c849", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8707c1637280c4c40578596" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:29814de5862c9458f361de73" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91064", + "reference_set": "precal", + "selector_sha256": "162a928691fbabcf5ac532d198d5b0767136217053e8ec4e6fe2effdecdbb656", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dd96e152ca26b63e93b31df1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:20f671dddba312018d8e88c2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91072", + "reference_set": "precal", + "selector_sha256": "2a4a79a18f5f9cd804daa01d996cd4fe7de3effe9725f743403e0d6895208e3d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d2b31b87a278a146d3c656aa" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9961c629b36a90b43a5cce3c" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91103", + "reference_set": "precal", + "selector_sha256": "ee1e194942af5ceb72e4add8215f728f0f1bcbaa6872c385697322bb42b9c1ec", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4d64a22720614b6b38c7eb61" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:215b06211290d9014a16976f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91114", + "reference_set": "precal", + "selector_sha256": "a12e28216d276e28671eade764173d6aaf03ce22a460347a0d33c7c2f6f119a5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c40b8284c39686db34fb268d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:44aaeca036c49195eed53684" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91120", + "reference_set": "precal", + "selector_sha256": "451f5be1fafc4c4a0eb1f97eaf16ec3ee2fc7f72bc162953e48c06272e3c2077", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9ac244766b9878eded162391" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f6a0340a06f8889915bafdb1" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91141", + "reference_set": "precal", + "selector_sha256": "24c333f5d77f82c6f5417ad148cfe645fe6567f099785487e293b49373e8553b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1bdd7edd8891e4529c706fa4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2515fb16391ecd379c553f1e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91142", + "reference_set": "precal", + "selector_sha256": "df984d870adef8024d669e7c497a9eccb363088071feec77ef78163d6a270ca6", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:25b6048ba0ec02a707028e52" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:6818f08c0f9cb110b29f24a5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis91143", + "reference_set": "precal", + "selector_sha256": "74415573a39cabb16ab26ff84a607015ae33414958cf1c50db59aca017c3c93c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d05115c09dcefdd8da80c229" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4dfea138600d523738e7089e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92003", + "reference_set": "precal", + "selector_sha256": "9f16e608d745e811adf2d90c22c49695b91473a2b51e28c6fb6229aaf22db30f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1297965dc10b953c11e8197b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9b1ca86403c1697dcda07b45" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92006", + "reference_set": "precal", + "selector_sha256": "eae2ef9c5545411765d0f269d6519f3ab8dc8e989a605088bd679124f12e0bde", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8d3d4e370e77fea69454c4b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9f0dd3651b175420f9b2d6be" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92035", + "reference_set": "precal", + "selector_sha256": "043ecc3d3c7b6b9a82f9e0b2ba1f3a73b1bf9e859aaf2f17c90df4932951c5dc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0d1864b846bb52fe119025c5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:20f6c6c016fbb7927a631ec5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92045", + "reference_set": "precal", + "selector_sha256": "4cb6e28f6c8eb1caf6075766e0253733e44cb6cd81274b304504a0dc989a0623", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:170b34e0b7e919ebd2556f1f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ed47b77cd391b6d06ea897ec" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92048", + "reference_set": "precal", + "selector_sha256": "8cd2dae24780c61bc054e8f7611a89ca17595328a784b5367a6252c15859fe89", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5024ad24ccbaf007e5866a74" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ff322e9c2a2f9fa2b1ef2b16" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92054", + "reference_set": "precal", + "selector_sha256": "c93ed5b6780e14309d68c782e511019dacf54198b4d0b4f4c702c86e810c6ea3", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cdcd79c086bbd4c599dca3e1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7ead98d19e3d0bb8eba667b9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92087", + "reference_set": "precal", + "selector_sha256": "887e7bcca7c3470971b84ae5fa9c99158d5129c3e0856f3117d6f524e8020419", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fc2c4c5352cb19d8e79ba181" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c8a03c95d7a7b0c757fbed7e" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92094", + "reference_set": "precal", + "selector_sha256": "4e4730e80d2137c154b65cec275d6d0ef00185f256be47724b839a99ea08b977", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:77ead52847844179ddeb7f7c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ca2827532376c0670c56bc5a" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92097", + "reference_set": "precal", + "selector_sha256": "c771a2a4d31636b8ecbe4b48f019b5987f3161e2b0d8c0e995054f7c8e8eab28", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:28598fb8436a54d339405600" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:df00574a386a9f3f1edd4cc4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92101", + "reference_set": "precal", + "selector_sha256": "9a0bd06b3aad23b211aabd441d2fa08573341d78d035a414a86d8d675cc09a71", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:afcd450a288db9d306d6878c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:602d7197d619e43e5cc1ee0f" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92114", + "reference_set": "precal", + "selector_sha256": "37b4671a8604ab56440ef5579be8f36c08d660e0424d3fa90674d4fb973629dc", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d97d440330a30e1514ab5c50" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:52a2fd3a187e66f46c561c56" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92137", + "reference_set": "precal", + "selector_sha256": "2da18a247fbeff6df681f0b9cf14d05f75f8d6d6148488eb8b4bdee1e8d7f704", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9048d6e970cd431e972724c4" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dcd0397e069dcf6b7e9522f0" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92138", + "reference_set": "precal", + "selector_sha256": "4e6b0e3edd4ea1c039c0e0f4b050d938227347b717b5354f15ab5d950b771504", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:741aac13da30f1b4cf9053b3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:31ff752ca7335d3332ea39d9" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92140", + "reference_set": "precal", + "selector_sha256": "3ebb9ab05396c4062ee35296ae6c298f701dcd2d6295ba3d65dfa2a860ebf51b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d111de7509f28ad12255d511" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9b968d49a61bed01ebf0c750" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92141", + "reference_set": "precal", + "selector_sha256": "e78429c8dd1ebbeadb50dae3e330754d865ec1c611f9b1bca5f390d45a459044", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6d92fe328d9c4905e5c966e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:18132d9cc0d07600bec1eadd" + } + ] + }, + { + "name": "statbel_population_by_commune__nis92142", + "reference_set": "precal", + "selector_sha256": "b2d232a0b9c53cf4615f8aeac98e3739737c9ebd50b4e93d2491f19545dbd0e7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a48525eda2193af1843d1939" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9cf75513c83fc38f3c5a21fe" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93010", + "reference_set": "precal", + "selector_sha256": "69bd1cd73ad2f52d8833392dc51aaa4f4531cac783d984358a257602a82ebf3b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3ed65ce48e06ec0570d77f48" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2a3d9dd05490f386d4e47107" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93014", + "reference_set": "precal", + "selector_sha256": "717ebfb0d5d2e2fc80800069c6be51df2099ba9416f623708059c2821d2eb9f7", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:30c8da65b60af9893d5298ea" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7751ecb4ab11d1452cf8af5" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93018", + "reference_set": "precal", + "selector_sha256": "708e0aae26c63a0e1fd71a43314d7e384172a4a4a0540b8ffe940398796bc39b", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5b2490c5d4e4256aea4d8020" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:962e1ea2c39474f3a0c807c2" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93022", + "reference_set": "precal", + "selector_sha256": "425dd22f8c293a8b91f6137043c1f73c3716c1423f7929701f988f8d53e37bea", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:162b0ca73c18446cf3d89a6a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b381ab2b4fe5e1141b075da4" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93056", + "reference_set": "precal", + "selector_sha256": "20f7a549c789264b6c18179d412da5c9e6212719bd2cf3a0afeae1ac55f72ec2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:73b23579a20dd10c94338502" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1dc684ab0f630390248b45ac" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93088", + "reference_set": "precal", + "selector_sha256": "17bec0c890c9d34068e624dd968937f343278cb30d05fbc071c0385f5b626d0c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8dec5d05b2281f63d39bb1c3" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ffb20c24c8f1055f813ac995" + } + ] + }, + { + "name": "statbel_population_by_commune__nis93090", + "reference_set": "precal", + "selector_sha256": "911f1ebf9b54f7ad087ef10d8d31469f2c7dbb64ad07f8eae92b0c6f40a67beb", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c76fe4b075313027029e63c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:60771efacc702a59d614f841" + } + ] + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__lt100", + "reference_set": "precal", + "selector_sha256": "57179952ce20e428059b209eda9774b6788d1f674a887e1ca2bdcd9be45432c5", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:03e97f8fc1e4c02a24b05b6b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1261db14ee06d08798a76f04" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d0299ef587a1600a1b358c1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:50f9154b6d3715b290565355" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:529b2713570e6af3aabc59a9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:659473480a49f6d772adbe8b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:68e69de1a41b5e86fd61bf1c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6c85bb41111599aa187a507f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:70c3068ee232c8f09bda69cd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a2eeb0da5579c5a736dcdbe" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:84ef3b510a851883c9687d6a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:94148bb5467a5822ca353085" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a831cb818590895f0ceb4ff" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1cc475453a46b74714e040a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bd245c8955f315a856a6314c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c614c4738c22af8c439521d5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c8cea3dd961ef5a4686a13b0" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cb9b4ce06bd6c736c25b6c61" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0e8ab515e49c34870dc73e4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d212cfb30dc71bbd8777897b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dcd594d43f4cd0f0615bd541" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ed8c8a5530aec0aeb993314c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f988cb24a141941956ad7dca" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb1cd1c7422cf3d68edc526f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:042a3c23cb3d202c1e67079c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:0ee658ba457f879edca04d97" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:22742eedeccb6ff9634e34a0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:22acaaac1eeeca6210758e22" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2528868e38478b65c024a717" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:399710cdca1b3a7fa76e2ca7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3e21500e6b03f0bb742306ea" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4fce14147d60815fc3c1be72" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5a6f4e38bc635b2170e2bf45" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5ab4aff6377599702ce90f9d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5dfa34c587637f82e54b2c6e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7400f2510388a20d349e6a3d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:83ebe615ecfb6557fa7e94c9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:89945407d524d6824da91dca" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:93b79a11d9feb04143fee601" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c6dc28e4c93546b3fa2cf8a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c87f408fe388c815ea9ee29" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a6029079ed87cb08e4ca442e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b5fe6428639500b38e3a12be" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ce9d0bb53bb41376780f9c92" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e430177fc25dae326a1c0f43" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e56a55c0c115f7a65e2529f2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e993e850492609a44aafbde3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:feb06742b0412392852cb737" + } + ] + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__100_149", + "reference_set": "precal", + "selector_sha256": "b2866a7f7a84df0f3ca4dbf346c304d4ad3dff797f5bad7fefec940156ee19c8", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b2013b4ce29079c03390bc4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1c8dc2113784eac50a0b5d21" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1e7f44d49d33c4f69e53aa84" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:293d8c1d1c71f2edd1c69454" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2d38f11676e2a380f8b6ef86" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ec86c8648f3fb9d0bf12572" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:40a369f7fc9063e5d6ffa905" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:41c070d07e587a5ee002d5f2" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:44500332cfcd54c6c8bb9e60" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:616d5828259fa12e9d3bc9d7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:637876c7923f43c29349d61c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6991cfd3783dbf80a68d2a72" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:72e29f3313e9211f9f0d9d70" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7e952b013d7700c75365f3e9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:849b71345621b0cf7ceb0f55" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:90f5c1ef687108e233fbc19e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9afc61a953de3e4e71912652" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a32e1c5b0541eb00ff5c089a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ac9021160a84a605f78175d1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b1b578a5d21c13d35ef5b777" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d14c400d8a2e85f5604d8eab" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3d93228dce58dbb50d7cd7a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e341099fc1c7236f341294af" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:eabc0966bc3f85e0fdef8966" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:069f3faeab4186992f0ed70f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:06dc17789888fb94a8ac7c55" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:097aca9e016f6e89434ec506" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:0dc23259df61a979ad0dc8f8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:13cbafabf268dcccc9635ac1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1571a88e76d21d7011f764c9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b211c6085f787e61aa00728" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:3e65b09331241059345fe275" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4502ef11ee77e4286ed0cc3e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4c47fb2c22d14973b9c5e20d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4f5c76c8534591f0ed5c8b28" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:62d603bb49415ea945088d34" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:73b66e88f8ad5583e9ac50be" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7f9f66aeede255ef14dfb935" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9984ed019b844c010f72627a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ac8579771d84363b7782123b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d11e258ef93658e9a53698ad" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d84aa246ebdc38ea1ba258d7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:dda7c4b939e26efde20893ce" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e263b860311b501e4b40f66b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e7f6d8339878ad2b0f9c3590" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ed47e810a572b61aa3516906" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:eebb37226840d592a1adee6c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ef2dc50fbfb53542dad75fac" + } + ] + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__150_199", + "reference_set": "precal", + "selector_sha256": "1d49f7cbe45c3de3195e5bad46e9167c29773c4ca56bb5e23652cecf0103a3db", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:16efb031e221b13396e0dcfd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2dbe14e7b5889ad6b0ab881c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:49c5b2543929f536bbead792" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4aaea2769b8e0173bd87b707" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:61add12bfe0f9367a6035f7f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6d42881d8a85a5133ee9c24f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7454c2c704d076cb4d273e5e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:75288557ab45cc6d109e5807" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:76d41b0fc939c79c352bf99d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a38f2d85944b9bb22561bb6" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:805c1ff4834f6cfd45dd7637" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:935d073912194bd062726dfd" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:97bcd7a4df4a0a246c9ff861" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b2825e3893b1e25beee2b0e2" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b4d769f6247238801c92a6f1" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b8de02ddd99328a0dc5710da" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb537782cfeac55fe6dd7947" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bda30f52d9e0a7685e407b7a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c92f72c2479c7397df47fd12" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d37cfaaf3e61f022d975bd5a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e13caefedc2529d7805b4e5f" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f70015a435a29661aaf62029" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f7ea076bde5ec859effc8a49" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fe721a833b17972ece4f86e0" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:009ee56bacca814d6fe5647a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:00d1458a17b4ec2c58f2f4db" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:07b7b8c93de39fb84ed413d9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:10a850976620c203e59a9077" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1b4733d4b74274cb19b71c26" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1f66c43e2e13f5e76c01dec0" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2b6bbaaeb6cdde7a8599f2a1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:365ccb644a5d518ce3b1e18d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:404a12167129e1701cec0653" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:591283b17b6077d261ab1dcd" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:60688fb9ec237fdfa2579675" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:72d9dd747844fc540d2ebb70" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7775b964b3972604b24cc24e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:815cb676ae391d21b7a7ad1c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:afee3f88777754bb09a42086" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b1886532de40fff1eed0917f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:be3ab92b3297135b12b63fb6" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c7555176b05414636d8c94bc" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cf31652e47b6241dc4536f80" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d0089a94f951695d3cd687e4" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d38148f4517292e3f354b1b9" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:dd4186ae98291ac604785b60" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e26465f94edc54ef042f2ca5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ee0864d1d03e1dd2016cab0d" + } + ] + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__200_299", + "reference_set": "precal", + "selector_sha256": "250c3c13d2340d7483da39338091f65f056fff9c4468f62c5c416de73ee32d3a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1164b27d63e71eef04c6f7e9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:20599d015944c1544b0c796a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:385d6f411a159fb4314a540a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:48a6c510f843f594cfa24d6e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:56e28bfb8a761305fa45a31a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5e9b655c7276ffba6c5ec14e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:753c01b951c930bf2d527295" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7644e3034d6ab601c767f44e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:78629cc1c66c902561fe6bbe" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:80ef1a28bb4b0502ec8a23fb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b44cfddef5dfadf33b79f6ce" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf4f711de6ad8645a4341ae9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c33cc9e02016c7b21e515ca5" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cb9cf1016f21c33956e9f52e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:cd13629a55ae463a5a01c29e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d630f7f329402549e9b42c38" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d6f9204bf15574234c6cd8c2" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dd58e2c067ac816ae9538a14" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dd816886e887358c4f708326" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e8347a88af037ab724f9ec04" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f2a7a55883cda24990120beb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f4c07e7552a8a6869c62a78e" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f7e7b3792a720307f26b0f79" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fd198a56b5f547840da09ac9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:070d0aa598de2b9b0beaadd5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:082ec0f9c06a3b703f6d5695" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:0fec1aad40666590fe3dae2d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:11782628a8d595bbf8b98c6a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:336ee0466347ad4e41a05900" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:35c8c27df5e59c2588771982" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:432591d9e2b343a803640d36" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:4f8d863006fdaaae4ac10099" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:512dce4f54d4250b0332f0ba" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7a48a41c4f687637b823f938" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8acad313c803b27fed6d76f1" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8d74e0cc6fcec6850e5c0408" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9757d6d577bfcd7c85a1410c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a8ac53d32bb7a1160dd14b90" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb630d5a616c7dc71e493553" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c390fd33d46b63f727510f4e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c48d26c27236427559f70180" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c99df1ab459ae8a8f2d8f78a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cf602f25fcaadb9d39ba5ef7" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:cf69458c73dfbff8afda293d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d710aef35360c9b67f662a6d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e9a76e5f9e68d9db7858d6b8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fb1335d09d4561af019a74fb" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:fbb607f2d28f3bfaec399f18" + } + ] + }, + { + "name": "rsz_employed_workers_by_daily_wage_class__300_plus", + "reference_set": "precal", + "selector_sha256": "ce69ccf09df2b2954f8f8a5c6e0395892b422e393d49fd3a275ba4c0f9c55b00", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0cc0ee48cb81f3a5022ef88a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:24eef123d5c905c39d55e687" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2ce76145c124902b2be53748" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:359aeee94cd7fbd7586ab5e9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:374153bbc3188810a177e36a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:40f4d4fcea91db96c787434a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:57b8a09e64c86714f3d1acef" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a8f91955a3b80ee5f965c5d" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5fc29eee205d514528473729" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:650bc2b667a618ed2dc51d72" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:763752208de5b781732c0f27" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:7ec2582739b37236b7bd71bb" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:860a60aac0e08865f9de8d16" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:968eb1aa7844898a4611ef54" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a0f5e795263a5cbcf86e0faa" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ae117ccb0cec2bb0dcfef43c" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:aef42c64e6d768ef76de0160" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b419ba31b7dd59fc277c35c4" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:baf0a81d04cc49b8c208ca8b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:dbd005c82666f8ad3b79bb95" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ddce3f173f9f72b7c3b2d79a" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ecd82521a5b05bf2d05ae835" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f8ad3413c045256d7b611be9" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f951db2f6a4a1d1fc1f134f1" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:034a9ae265b076dc273f521f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:065b6dd4cc2f79a6d682ac26" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:11ce358fc394f7d665f751f8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1340b71c283754a109dce05f" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:212552df641a21349507ec94" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:25860822f7c3e82ba3723a6d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:2cea89fd2f1a09ef0859a9cb" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:45b83717eaf0a78524f2a369" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:5f2f69cce991fcda25a8f459" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:6b6821d2bb4123779377c406" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:79717cb65830f038c387d12b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8b92af9ff69b2e4a3a4146fb" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8f6f9a9d836738637b08ed5c" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9ca9820520cfef83387e0a6a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a1777f358bc8e2643d873796" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:b1d1bbe4ddb7e160cd04ab63" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:bb9000334cf7a218b4004600" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c85d5db814d7a3ea047e0955" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c9ff54344484b746f0cbe47b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d33f773b53c0f3fbe44e0638" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:d533ea752daf6bcbd6ae0855" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:e8619c0cfa118aad4124467b" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:eeacabbb622efbdfe8d86a6e" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f2a6de60349a3247510287ad" + } + ] + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__0_01_to_125", + "reference_set": "precal", + "selector_sha256": "5c050e8f207d63eaa192564d6fe004da0a12ad23bc711cb577b74749949e4b38", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9a329f9e88fe6b479b5346f9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:be6709ec1b831b78f2a14bb4" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__125_to_250", + "reference_set": "precal", + "selector_sha256": "b82f07c306f88948458ec70c2761bf8d8025027b44dbe46bbc82af6fb10850ea", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fb8dadc18d74f570c4a83e2f" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:d8e0c5ae15b3c230fb61d47b" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__250_to_375", + "reference_set": "precal", + "selector_sha256": "66b020d69d3d858930d49b16057631c45dbe93290e40bacd860832eeba548cb2", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a376ab9878e45b4b7f088ea8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:dba1674357b43756a07b825a" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__375_to_500", + "reference_set": "precal", + "selector_sha256": "5e22dcc3ddcc94c41815fe04cba4a5b6bb4a29fdf091a67d2ed412f7c67e5bb0", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:b879e38f2b030f73f297e1a9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:fae9664702ad3699c64c74d4" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__500_to_625", + "reference_set": "precal", + "selector_sha256": "dee2c61d57830269033551270c4e836ef2253cccf9a8e27b5b6503379bec6854", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6b4e263d9ba2114a7e1a466b" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f81afada37df91658533152e" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__625_to_750", + "reference_set": "precal", + "selector_sha256": "a77434c590669411c2db5d383365490478f8f9e29ce4971c986951a2cc5e2b79", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:a6bf6bc78e0aeda1fc8254c9" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:30043d3b3a96691a0502f6f1" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__750_to_875", + "reference_set": "precal", + "selector_sha256": "4951f89f8d9415bbcbd7e956c402911384835cd009df9458207b4bac6ed1ce10", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f5fe0471cc0653d926831f2" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f50bed8289f84fc488e80ef6" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__875_to_1000", + "reference_set": "precal", + "selector_sha256": "77239ec81f2d21685b5bb1ddfedf1348a810138c21c258cbd090b7cbdfa43096", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:20497043bfbb6136b245fab5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:611e64e8916986374364382d" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1000_to_1125", + "reference_set": "precal", + "selector_sha256": "7e9cbba9169a25c12d779b58e73d42e297da8f7087e8e645a20e5e7987967287", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:06d79289f4647a9d753a768d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9cb448d09f72c0212aa71c61" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1125_to_1250", + "reference_set": "precal", + "selector_sha256": "483f2ee982cd00a6725a2a87a531bd1dd7b8c7dfaba51dea016e63cd959eb645", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:242d02ac50fb3deb7796a77e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9c2b32dfde8a275a2c4fabaf" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1250_to_1375", + "reference_set": "precal", + "selector_sha256": "55215ad7df0c42c87d8007d92267801194b77f707de22493bb4f22fa3eac15a9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:6195ce9ba617b7ef577d5f90" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:524afde2d1414dd0d3d2a234" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1375_to_1500", + "reference_set": "precal", + "selector_sha256": "615ad79b46a23af287619cce730fc0d64faac4637978873504a018e73526a2d9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:97059482c7e937bff0c1277c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:3b62734e68edbdbb084b5721" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1500_to_1625", + "reference_set": "precal", + "selector_sha256": "a22bc9d839c75ff594ec406fea9399297eb4fa207b15ff0d710c94501ae30c48", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fa180f8491839a0ed146217a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:4c0ecbfc487521a39af7862b" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1625_to_1750", + "reference_set": "precal", + "selector_sha256": "83c16ef41bfe2d227eb7ae22a892c7ceeaa38d985fb097585937a4392614c10c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d95796c3e08766039aa7349c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:abbe32cacfe6de1b7ebb099e" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1750_to_1875", + "reference_set": "precal", + "selector_sha256": "4d85c8bc54eb8b85f12a728a21cca581e5b1044cdf9b1293701b543b8a5306c9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:54681db12c3293b12d2daab5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:31d9295c9ce68497c23f9269" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__1875_to_2000", + "reference_set": "precal", + "selector_sha256": "0fab11070866738dcec55a3abac47d8c3d42c882ff9c381f6ef52b2c4612ad2a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4a2eea074941d7a54a2e789d" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c874dbefe339f0f500faf8a8" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2000_to_2125", + "reference_set": "precal", + "selector_sha256": "8d77623ca1f1c95bf3fdcaef00387fe2c9d564c9c8a841274af9f94059d0b518", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:eea5796f87538354facdc49c" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2bb964ecd26b22c65a49a90a" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2125_to_2250", + "reference_set": "precal", + "selector_sha256": "69b3ee08da0d0759e6465a28d4f4ebb01d1ca6efbb3a42f79e76bd7ab51fab2d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:9e87df8e8f8b31d2eff11469" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:5464f96f2cd307a3de7fa784" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2250_to_2375", + "reference_set": "precal", + "selector_sha256": "2f06224b8cfc0f0dedec3930704fcdcb5bcdbfffbeff0751f62d2b361bd0093a", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1820ed9cb42638dc4170b2d7" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:ea0e6c59a925fdec3941184b" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2375_to_2500", + "reference_set": "precal", + "selector_sha256": "f5eb5a827bdfb972650cda9633eb34a9dd046bb673f415a2e4a93dceda88f2ec", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:591410af854a557f89f7edf5" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:c3643a868d0ef4f00802aa0d" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2500_to_2625", + "reference_set": "precal", + "selector_sha256": "f5137c51b44fc1eb79a00a02c50a8559ed7a5f0604e24c1eef93c33e1d5a38b9", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4667449d76329b02866aba0e" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:b6516651f04a3723302fdf46" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2625_to_2750", + "reference_set": "precal", + "selector_sha256": "95130d0b1398ea4281cd0301a1a135ff15e0ddde24783c6ab2a991d075797d98", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:c7ef88029d3ce938688d7b96" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:2f9d9cb22515b7942efc622c" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2750_to_2875", + "reference_set": "precal", + "selector_sha256": "d33b930d1cf08d571ca846167347f63e5c7df6727efe3a87261e66176a0f7fef", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:267a02529de98c41d5818c2a" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:857ba1ed3307b3505b7613dd" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__2875_to_3000", + "reference_set": "precal", + "selector_sha256": "29fe5b5afd13fbf1258043282c58a75345ce9a88555827c7004354ada7cc1929", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:635528f21094a6f8c4386fdd" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:f3061ffffea3a4830fb4cbca" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__3000_to_3125", + "reference_set": "precal", + "selector_sha256": "b1567bc038f8d45e5e6aae0113a907a6a6010a4308ea29e5c9a8393e0da94b8d", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5be67e88e151d6c1fdd42281" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:002a3ceabfc93b0513d2669a" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "sfpd_legal_pension_recipients_by_monthly_amount_band__3125_plus", + "reference_set": "precal", + "selector_sha256": "181eb00abfef5ea51e9112e6bb3e2a80d9e94202678763f12207bd2ac5d18e01", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e547cd6cf676ae86f66208e8" + } + ], + "operand_facts": [], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:122f36e25bd8df9c429e75d6" + } + ], + "partition_total": { + "semantic_fact_key": "ledger.semantic_fact.v2:16b6cd878e9094b556058639" + } + }, + { + "name": "eurostat_d51a_c1_individual_income_tax", + "reference_set": "holdout", + "selector_sha256": "674877acfe42f7b4b417441258d3e399301443016dc7f92bb31671827ae3df1f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e3c28f2774b8452eeb2acd91" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:09dcccdb13ecc60173a18079" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:ebae7d68bab03979e30b2b5e" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:43ed8f1ee265c20fc730cbe8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f192fa692fafb66801f36749" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:f75f901c14df79e9ba9c3d5f" + } + ] + }, + { + "name": "nbb_household_gross_disposable_income", + "reference_set": "holdout", + "selector_sha256": "b0d921970e5a519de7f8c617b73ae5311c6dea8b6069d51d2247086ce39e2451", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5e83461cf5b9b1d0292c4c7e" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5148b5898c391c11ff484930" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:63c570cc58902f2813b3bde9" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a84547fbe77c1fcb8b894e2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:1357202f3bca9d5eabfb79a5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8d8897e73ef895c8e8167308" + } + ] + }, + { + "name": "eurostat_household_gross_disposable_income", + "reference_set": "holdout", + "selector_sha256": "97b1ac33a58e0609903deb84d521bee5e583b7a7dcc445055f235f273008f640", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1c1549bca1f666dae3f1c6fe" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:5148b5898c391c11ff484930" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:63c570cc58902f2813b3bde9" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:04dc8b1eec58416095149f14" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:0a84547fbe77c1fcb8b894e2" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:8d8897e73ef895c8e8167308" + } + ] + }, + { + "name": "eurostat_household_social_benefits_received", + "reference_set": "holdout", + "selector_sha256": "90a4a4f5341352071e84d04c69ead1dd5c26a8eb0361f91b34f14203cb451777", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:8c7c28463b5421308945c344" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:bf52974b05acf19d1d3ccb28" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:e87808ae0b585214ec608b92" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:1638c151c2262f1ce0191094" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:60776b4f41217b1852f17c91" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:64a3983fff87ee9f42466ac6" + } + ] + }, + { + "name": "eurostat_household_social_contributions_paid", + "reference_set": "holdout", + "selector_sha256": "3e292559ff7720db6d917612b9d4b6eff5095bee53ca1d9248691bcfa0e6b200", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:627f1716ff45e9ac8e2ffd22" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:4c597d6ad755576b4e1faf01" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:deed6d1fc86e5e7032cbfa5e" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:20f87b9a4118de41a2f856f3" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:9583978946413377f5caa2c5" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:a0277e7955859433c07df1ce" + } + ] + }, + { + "name": "eurostat_household_current_taxes_paid", + "reference_set": "holdout", + "selector_sha256": "38a4d2a3a2276d345195600da54e1a809c9602360c08137f7b0cb56be354264f", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:05ca22b4bedd957b4d655ff6" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:67bb0b178a502334a5798bfa" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:d3638106fd28d6f6d119c0d5" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:196625a11847843058001006" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:37c2a59a25a6c6332b0bfce8" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:ed20bbda07448b57ac2a7926" + } + ] + }, + { + "name": "fpb_gross_wages_and_salaries", + "reference_set": "holdout", + "selector_sha256": "4d9a02dbf906f65fabaefb636892ab35a81263d399078d77726ec9675dd6f79c", + "base_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b99b4161fa76ca1069ad5e7" + } + ], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:1b99b4161fa76ca1069ad5e7" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:f17958efe84e42471bf68f80" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:9a10c918fc42ebf78196db46" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:acfb4cabda91df16d75eb910" + } + ] + }, + { + "name": "factor:rsz_ordinary_remuneration_cy2023_to_cy2025_observed", + "reference_set": "factor_context", + "selector_sha256": "ce4e2924e7e83ed992e881b2156398e5ec9f0ee9f8d437dbd8682231c3b5a8ad", + "base_facts": [], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:2c0d2f4c10c54cee45e5777b" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:14dba4cf6712222563513d5d" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:7bf0f7a2df4fce129ca59e5a" + } + ] + }, + { + "name": "factor:rsz_ordinary_remuneration_cy2024_to_cy2025_observed", + "reference_set": "factor_context", + "selector_sha256": "bbe980d704b65ae19cee79684083d75bfc8aa7af8c1cc261a6a025bb42a87a78", + "base_facts": [], + "operand_facts": [ + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:3c1a0cfec5e2740c02758f98" + }, + { + "aggregate_fact_key": "ledger.aggregate_fact.v2:fff2864b2ff60754bce8bfcf" + } + ], + "semantic_facts": [ + { + "semantic_fact_key": "ledger.semantic_fact.v2:7bf0f7a2df4fce129ca59e5a" + }, + { + "semantic_fact_key": "ledger.semantic_fact.v2:c3b7497e94ea33df32f56635" + } + ] + } + ] +} diff --git a/packages/microcosm-build/src/microcosm/build/be/reference_profiles.json b/packages/microcosm-build/src/microcosm/build/be/reference_profiles.json new file mode 100644 index 0000000000..1230d93cfb --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/be/reference_profiles.json @@ -0,0 +1,16 @@ +{ + "schema_version": 1, + "factor_context_resource": "reference_aging.json", + "interval_resource": "reference_intervals.json", + "dimensions": { + "aging_index": { + "default": "central", + "profiles": { + "central": { + "deferred": true, + "notes": "Declared but not executable: ageing the A.1 stand-in band cuts to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair, and reference_aging.json holds no profile_input factor for it. The profile is deferred, so the resolver applies no transformation and the A.1 rows keep both prerequisites." + } + } + } + } +} diff --git a/packages/microcosm-build/src/microcosm/build/be/source_stages.json b/packages/microcosm-build/src/microcosm/build/be/source_stages.json index 3682568a6c..ad91ae7bfa 100644 --- a/packages/microcosm-build/src/microcosm/build/be/source_stages.json +++ b/packages/microcosm-build/src/microcosm/build/be/source_stages.json @@ -1,7 +1,7 @@ { "version": 1, "country": "be", - "policy": "Belgium transports the immutable public Microcosm US Build P support artifact into a synthetic Belgian population (BE-MC2). Donor records remain US support records and retain their support-stratum provenance; Belgian geography is assigned, never source-observed. Destination calibration uses Belgian administrative and national-accounts targets from sums of Chronicle facts; surveys are validation-only. The Chronicle consumer artifact and rulespec-be tree are declared unpinned placeholders, so this package remains inactive. Executable Python belongs in shared runtimes; publication remains private pending Max's decision in release_contract.json.", + "policy": "Belgium transports the immutable public Microcosm US Build P support artifact into a synthetic Belgian population (BE-MC2). Donor records remain US support records and retain their support-stratum provenance; Belgian geography is assigned, never source-observed. Destination calibration uses Belgian administrative and national-accounts targets from sums of Chronicle facts; surveys are validation-only. chronicle_feed.json pins the Chronicle consumer artifact (B3); the rulespec-be tree remains a declared unpinned placeholder, so this package remains inactive. Executable Python belongs in shared runtimes; publication remains private pending Max's decision in release_contract.json.", "stages": [ { "stage": "load_populace_us_support_pool", @@ -29,7 +29,7 @@ }, { "kind": "public_aggregate_reference", - "role": "destination_chronicle_consumer_artifact_unpinned", + "role": "destination_chronicle_consumer_artifact", "resource": "chronicle_feed.json", "format": "json", "runtime_sha256_required": true @@ -66,7 +66,7 @@ "household_weight", "age" ], - "notes": "The first artifact copies the authenticated donor pin from build/nz/source_stages.json exactly. Shared transport must preserve donor entity ids, membership, typed household design weights and support strata, retain US donor provenance, and bridge donor mass to a Chronicle-supplied Belgian population total with a conservation receipt. The next two artifacts are declared placeholders for a PolicyEngine/chronicle consumer artifact and the TheAxiomFoundation/rulespec-be tree, respectively. Their referenced resources and exact facts/manifest hashes and RuleSpec commit/tree hashes are not authored or pinned here; neither reference permits execution or a latest/main fallback. Later work must supply those pins, source materialization, unit construction, engine bindings and an executable graph. Monetary conversion and quantile mapping are later declarations; monetary catalog columns wait for the shared EUR unit (PLAN S3)." + "notes": "The first artifact copies the authenticated donor pin from build/nz/source_stages.json exactly. Shared transport must preserve donor entity ids, membership, typed household design weights and support strata, retain US donor provenance, and bridge donor mass to a Chronicle-supplied Belgian population total with a conservation receipt. The second artifact names chronicle_feed.json, which pins the PolicyEngine/chronicle consumer artifact by its facts, manifest and schema hashes (B3); the third is a declared placeholder for the TheAxiomFoundation/rulespec-be tree, whose RuleSpec commit and tree hashes are not authored here. Neither reference permits a latest/main fallback. Later work must supply the RuleSpec pins, source materialization, unit construction, engine bindings and an executable graph. Monetary conversion and quantile mapping are later declarations (B4); the catalog's money columns use the shared eur unit." } ] } diff --git a/packages/microcosm-build/src/microcosm/build/be/spec/bundle.yaml b/packages/microcosm-build/src/microcosm/build/be/spec/bundle.yaml index 0b16e17b89..598dbf0fa5 100644 --- a/packages/microcosm-build/src/microcosm/build/be/spec/bundle.yaml +++ b/packages/microcosm-build/src/microcosm/build/be/spec/bundle.yaml @@ -5,10 +5,10 @@ dataset_run: target_period: 2026 status: Inactive Belgian donor-transport specification. Donor period 2024 uses the exact US Build P artifact NZ pins (BE-MC2); target and policy period 2026 is the BE-MC0 proposal - pending Max's ruling d1902. Geography uses NIS 2025 communes. Destination Chronicle consumer-artifact - and rulespec-be tree pins remain declared placeholders in spec/sources.yaml. Earlier-period - target_references.json is inactive groundwork awaiting B3 and explicit ageing; those source - periods do not redefine the target year. Shared EUR catalog support (PLAN S3), unit construction, - pinned engine bindings, active separated references, executable geography support, graph, - receipt contract and release qualification remain later work. Publication remains private - and Max's decision. + pending Max's ruling d1902. Geography uses NIS 2025 communes. chronicle_feed.json pins the + Chronicle consumer artifact; the rulespec-be tree pin remains a declared placeholder in + spec/sources.yaml. B3's separated calibration, pre-calibration and holdout references carry + selectors only, roll 2023-2025 facts to 2026 by declared FPB ratio pairs, and stay parked + where a producer or ruling is missing. Unit construction, pinned engine bindings, executable + geography support, graph, receipt contract and release qualification remain later work. + Publication remains private and Max's decision. diff --git a/packages/microcosm-build/src/microcosm/build/be/spec/catalogs.yaml b/packages/microcosm-build/src/microcosm/build/be/spec/catalogs.yaml index 42a883fdd8..13292b56dd 100644 --- a/packages/microcosm-build/src/microcosm/build/be/spec/catalogs.yaml +++ b/packages/microcosm-build/src/microcosm/build/be/spec/catalogs.yaml @@ -10,9 +10,8 @@ columns: domain: frame_identity public_stability: internal docs: - description: Non-monetary catalog only. Monetary columns arrive with the Belgian target - references, in the shared eur unit; no USD or placeholder money unit is used for - Belgian amounts. + description: Monetary columns use the shared eur unit; no USD or placeholder money unit + is used for Belgian amounts. - key: household.household_weight contract: entity: household @@ -163,3 +162,32 @@ columns: nullable: false domain: target_assigned_geography public_stability: internal +- key: person.employment_income + contract: + entity: person + dtype: float64 + unit: eur + definition_period: year + vintage: vintage:be_target_2026 + nullable: false + domain: donor_transported_money + public_stability: internal + docs: + description: Donor wages and salaries in euros of the 2026 policy year, converted once + from USD at the ECB annual reference rate for the donor year and then uprated (BE-MC3, + proposed pending d1902). No producer until B4's currency bridge. The FPB gross-wage + holdout in holdout_references.json measures it. +- key: person.nonfarm_self_employment_income + contract: + entity: person + dtype: float64 + unit: eur + definition_period: year + vintage: vintage:be_target_2026 + nullable: false + domain: donor_transported_money + public_stability: internal + docs: + description: Donor non-farm self-employment profit in euros of the 2026 policy year, with + FX and uprating only (BE-MC3, proposed pending d1902). No producer until B4's currency + bridge. The FPB net mixed income reference in target_references.json measures it. diff --git a/packages/microcosm-build/src/microcosm/build/be/spec/sources.yaml b/packages/microcosm-build/src/microcosm/build/be/spec/sources.yaml index f575dd0420..b9092edd21 100644 --- a/packages/microcosm-build/src/microcosm/build/be/spec/sources.yaml +++ b/packages/microcosm-build/src/microcosm/build/be/spec/sources.yaml @@ -1,8 +1,8 @@ sources: - id: be_populace_us_support_contract role: be_populace_us_support_pool - sha256: c94df32e544b74e7e6a70ae587345c757d9773035fceafc98660f4ab52d09d2c - byte_size: 3747 + sha256: 3d0a362345894dc6ea230ebed7fec7ff99a972879dc60c06001635c1b4a1ec47 + byte_size: 3774 loader: kernel:load_populace_us_support_pool vintages: - vintage:be_support_pool_2024_buildp @@ -36,14 +36,14 @@ sources: stage_manifest: version: 1 country: be - policy: Belgium transports the immutable public Microcosm US Build P support artifact into - a synthetic Belgian population (BE-MC2). Donor records remain US support records and retain + policy: Belgium transports the immutable public Microcosm US Build P support artifact into a + synthetic Belgian population (BE-MC2). Donor records remain US support records and retain their support-stratum provenance; Belgian geography is assigned, never source-observed. Destination calibration uses Belgian administrative and national-accounts targets from - sums of Chronicle facts; surveys are validation-only. The Chronicle consumer artifact - and rulespec-be tree are declared unpinned placeholders, so this package remains inactive. - Executable Python belongs in shared runtimes; publication remains private pending Max's - decision in release_contract.json. + sums of Chronicle facts; surveys are validation-only. chronicle_feed.json pins the + Chronicle consumer artifact (B3); the rulespec-be tree remains a declared unpinned + placeholder, so this package remains inactive. Executable Python belongs in shared + runtimes; publication remains private pending Max's decision in release_contract.json. stages: - stage: load_populace_us_support_pool survey: Microcosm US Build P support population (US donor support records) @@ -67,7 +67,7 @@ stages: pointer on 2026-08-29. Execution must verify both SHA-256 and byte size before reading; main/latest fallback is forbidden. - kind: public_aggregate_reference - role: destination_chronicle_consumer_artifact_unpinned + role: destination_chronicle_consumer_artifact resource: chronicle_feed.json format: json runtime_sha256_required: true @@ -94,14 +94,15 @@ stages: nonnegative_outputs: - household_weight - age - notes: The first artifact copies the authenticated donor pin from build/nz/source_stages.json - exactly. Shared transport must preserve donor entity ids, membership, typed household - design weights and support strata, retain US donor provenance, and bridge donor mass to - a Chronicle-supplied Belgian population total with a conservation receipt. The next two - artifacts are declared placeholders for a PolicyEngine/chronicle consumer artifact and - the TheAxiomFoundation/rulespec-be tree, respectively. Their referenced resources and - exact facts/manifest hashes and RuleSpec commit/tree hashes are not authored or pinned - here; neither reference permits execution or a latest/main fallback. Later work must supply - those pins, source materialization, unit construction, engine bindings and an executable - graph. Monetary conversion and quantile mapping are later declarations; monetary catalog - columns wait for the shared EUR unit (PLAN S3). + notes: The first artifact copies the authenticated donor pin from + build/nz/source_stages.json exactly. Shared transport must preserve donor entity ids, + membership, typed household design weights and support strata, retain US donor provenance, + and bridge donor mass to a Chronicle-supplied Belgian population total with a conservation + receipt. The second artifact names chronicle_feed.json, which pins the + PolicyEngine/chronicle consumer artifact by its facts, manifest and schema hashes (B3); + the third is a declared placeholder for the TheAxiomFoundation/rulespec-be tree, whose + RuleSpec commit and tree hashes are not authored here. Neither reference permits a + latest/main fallback. Later work must supply the RuleSpec pins, source materialization, + unit construction, engine bindings and an executable graph. Monetary conversion and + quantile mapping are later declarations (B4); the catalog's money columns use the shared + eur unit. diff --git a/packages/microcosm-build/src/microcosm/build/be/target_references.json b/packages/microcosm-build/src/microcosm/build/be/target_references.json index 5f4b0408ea..762f2bd860 100644 --- a/packages/microcosm-build/src/microcosm/build/be/target_references.json +++ b/packages/microcosm-build/src/microcosm/build/be/target_references.json @@ -1,278 +1,4218 @@ { "country": "be", - "description": "Belgian calibration and validation schema groundwork, by reference only. Values and source projections would resolve from Chronicle consumer facts at build time, but the current Chronicle Belgian catalog does not satisfy this full selector and period surface. Criticality tiers, relative tolerances, and target_role are validated declaration metadata only: this package does not yet wire them into runtime calibration objectives or release gates. Multi-cell series remain non-executable until Chronicle fanout produces cell-pinned references. No external-oracle implementation from #264 is included. The file never copies a target value from Chronicle, a survey publication, or a validation oracle. These earlier-period declarations remain inactive groundwork; B3 must replace them with reviewed transport references and explicit ageing to the proposed 2026 policy year. Their source periods are not donor or target-period authorities.", + "schema_version": 2, + "reference_set": "calibration", + "description": "Belgian calibration references (reference set calibration), generated by tools/generate_be_target_references.py from the pinned Chronicle be feed. Selectors only: no observation is carried. Demography targets Statbel's 1 January 2026 population directly; every other row rolls a 2023-2025 fact to 2026 by a declared FPB June 2026 ratio pair or stays parked with a named reason. Method-card choices are proposed pending d1902. Belgium stays inactive.", "allowed_value_operations": [ - "identity" + "identity", + "rolled_forward_by_ratio" ], + "hierarchy": { + "providers": { + "fpb": { + "label": "Federal Planning Bureau" + }, + "onem": { + "label": "National Employment Office" + }, + "onss": { + "label": "National Social Security Office" + }, + "statbel": { + "label": "Statbel" + } + }, + "categories": { + "fpb.benefit_expenditure": { + "provider_id": "fpb", + "label": "Benefit expenditure" + }, + "fpb.self_employment": { + "provider_id": "fpb", + "label": "Self-employment income" + }, + "onem.caseloads": { + "provider_id": "onem", + "label": "Benefit caseloads" + }, + "onss.social_security": { + "provider_id": "onss", + "label": "Social security contributions" + }, + "statbel.demography": { + "provider_id": "statbel", + "label": "Demography" + }, + "statbel.fiscal_income": { + "provider_id": "statbel", + "label": "Fiscal income" + }, + "statbel.income_tax": { + "provider_id": "statbel", + "label": "Assessed income tax" + } + }, + "target_labels": { + "fpb_grapa_expenditure": "FPB income guarantee for older people (GRAPA), 2025, rolled to 2026 (parked)", + "fpb_net_mixed_income": "FPB household net mixed income, 2025, rolled to 2026 (parked)", + "fpb_unemployment_benefit_expenditure": "FPB social-security unemployment benefits, 2025, rolled to 2026 (parked)", + "onem_complete_unemployment_recipients": "ONEM/RVA complete-unemployment benefit recipients, 2024 monthly average (parked, unaged)", + "onss_worker_personal_contributions": "ONSS/RSZ worker-borne personal contributions, 2024, rolled to 2026 (parked)", + "statbel_a1_standin_declarations_by_band": "Stand-in income (d1952): Statbel A.1 declarations by broad band of total net taxable income, rolled to 2026 (parked)", + "statbel_a1_standin_taxable_income_by_band": "Stand-in income (d1952): Statbel A.1 total net taxable income by broad band, rolled to 2026 (parked)", + "statbel_b1_enrolled_tax_by_rank_group": "Statbel B.1 total enrolled tax by decile 1-9 and top percentiles 91-100, income year 2023 (inactive: checks failed)", + "statbel_b4_declarations_by_type": "Statbel B.4 joint and individual declarations (all ages, deciles 1-10 summed), rolled to 2026 (parked)", + "statbel_population_by_region_sex_age": "Statbel resident population on 1 January 2026 by region, sex and age band" + } + }, "target_references": [ { - "name": "statbel_population_by_age_sex_region", + "name": "statbel_population_by_region_sex_age__be1__male__a0_17", "ledger_selector": { "source_name": "statbel_population_structure", "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", "period_type": "calendar_year", + "period_value": 2026, "geography_level": "nuts1", - "geography_vintage": "nuts1_2025" + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:120cd8981baad80a656e1b30" }, "entity": "person", "measure": "people", - "period": 2023, + "period": 2026, "family": "demography", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "activation_status": "requires_harvested_cell_references", - "basis_period": "population_reference_2023", + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "criticality_tier": "demography_release", - "geography_vintage": "nuts1_2025", + "measure_kind": "prepared_column", "publisher": "Statbel", - "series": "Structure of the population: age band by sex by region", - "target_role": "calibration" + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "notes": "Non-executable series placeholder for an age-band x sex x NUTS1 count surface. Chronicle must fan this into dimension- and geography-pinned scalar references before compilation. The selector uses the typed NUTS1-2025 authority alias; a differently-vintaged source requires an explicit Chronicle projection/crosswalk. An observation for another year may enter only as a Chronicle source_projection whose fact period is the declared 2023 reference year.", - "category_id": "statbel.demography" + "filter": "population_region_be1_male_age_0_17_indicator", + "period_match_policy": "exact" }, { - "name": "statbel_fiscal_income_by_commune", + "name": "statbel_population_by_region_sex_age__be1__male__a18_64", "ledger_selector": { - "source_name": "statbel_fiscal_income", - "source_measure_id": "taxable_income", - "period_type": "tax_year", - "geography_level": "commune", - "geography_vintage": "nis_2025" + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:4f3a6c98b66da2c0df41224b" }, - "entity": "household", - "measure": "belgium_pit_taxable_income", - "period": 2022, - "family": "fiscal_income", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "activation_status": "requires_harvested_cell_references", - "basis_period": "assessment_income_year_2022", - "criticality": "diagnostic", - "criticality_tier": "commune_diagnostic", - "geography_vintage": "nis_2025", - "nis_vintage": "2025", + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", "publisher": "Statbel", - "series": "Fiscal statistics of income: total net taxable income by municipality", - "target_role": "calibration" + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "notes": "Non-executable series placeholder for commune fiscal-income cells; Chronicle must fan it into one commune-pinned scalar reference per selected cell before compilation. The eventual open commune series is diagnostic until the synthetic spine demonstrates adequate support. The selector binds the typed nis_2025 alias to the spine's 2025 NIS code set, and another code set must be projected and crosswalked in Chronicle rather than partially joined.", - "category_id": "statbel.fiscal_income" + "filter": "population_region_be1_male_age_18_64_indicator", + "period_match_policy": "exact" }, { - "name": "spf_finances_pit_total", + "name": "statbel_population_by_region_sex_age__be1__male__a65_plus", "ledger_selector": { - "source_name": "spf_finances_pit", - "source_measure_id": "tax_before_withholding", - "period_type": "tax_year", - "geography_level": "country" + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:04cad2d2d74601f480a04878" }, "entity": "person", - "measure": "belgium_pit_federal_and_local_tax_before_withholding", - "period": 2022, - "family": "income_tax", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "basis_period": "assessment_income_year_2022", + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "criticality_tier": "core_fiscal_release", - "publisher": "SPF Finances / Statbel", - "series": "Personal income tax: assessed total", - "target_role": "calibration" + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "notes": "National assessed PIT is compared with the Axiom-computed federal and local liability on the 2022 income-year basis. Assessment-year facts must identify the represented income year in Chronicle; a period mismatch is a projection, never a silent relabeling.", - "category_id": "spf_finances.income_tax" + "filter": "population_region_be1_male_age_65_plus_indicator", + "period_match_policy": "exact" }, { - "name": "onss_employee_contribution_total", + "name": "statbel_population_by_region_sex_age__be1__female__a0_17", "ledger_selector": { - "source_name": "onss_contributions", - "source_measure_id": "worker_article_17_uncapped_component_contribution", + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", "period_type": "calendar_year", - "geography_level": "country" + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:5bd4d90dbf75fa183b749e89" }, "entity": "person", - "measure": "belgium_worker_article_17_uncapped_component_contribution", - "period": 2022, - "family": "social_security", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "basis_period": "calendar_year_2022", + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "criticality_tier": "standard_admin_release", - "publisher": "ONSS/RSZ", - "series": "Employee social-security contributions", - "target_role": "calibration" + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "notes": "Worker-side contributions on the encoded slice. Employer-side and capped-regime totals can enter as distinct references when both the engine concepts and Ledger selectors exist.", - "category_id": "onss.social_security" + "filter": "population_region_be1_female_age_0_17_indicator", + "period_match_policy": "exact" }, { - "name": "onem_unemployment_caseload", + "name": "statbel_population_by_region_sex_age__be1__female__a18_64", "ledger_selector": { - "source_name": "onem_rva_unemployment", - "source_measure_id": "receives_unemployment_benefit", + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", "period_type": "calendar_year", - "geography_level": "country" + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:31103ab0dcc5bb5bd663c6a3" }, "entity": "person", - "measure": "receives_unemployment_benefit", - "period": 2022, - "family": "caseloads", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "basis_period": "calendar_year_2022", + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "criticality_tier": "caseload_release", - "publisher": "ONEM/RVA", - "series": "Unemployment benefit recipients", - "target_role": "calibration" + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "notes": "The initial caseload family uses the calendar-year recipient count. Pension and regional child-benefit caseload references can join this family when their Chronicle packages and model mappings land.", - "category_id": "onem.caseloads" + "filter": "population_region_be1_female_age_18_64_indicator", + "period_match_policy": "exact" }, { - "name": "nbb_household_disposable_income", + "name": "statbel_population_by_region_sex_age__be1__female__a65_plus", "ledger_selector": { - "source_name": "nbb_national_accounts", - "source_measure_id": "household_disposable_income", + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", "period_type": "calendar_year", - "geography_level": "country" + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE1", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:633f2cac5dcab7a455322cf0" }, - "entity": "household", - "measure": "household_disposable_income", - "period": 2022, - "family": "national_accounts", - "assertion_policy": "allow_source_projection", - "period_match_policy": "exact", + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", "metadata": { - "basis_period": "calendar_year_2022", - "criticality": "diagnostic", - "criticality_tier": "validation_only", - "publisher": "NBB", - "series": "Household-sector disposable income (national accounts)", - "target_role": "validation" - }, - "notes": "Validation-tier level anchor only. The macro-realism gate may use it as a broad band, but neither the exact NBB level nor any survey- or EUROMOD-derived quantity enters the calibration objective.", - "category_id": "nbb.national_accounts" - } - ], - "target_profile": { - "schema_version": 2, - "required_families": [ - "demography", - "fiscal_income", - "income_tax", - "social_security", - "caseloads" - ], - "criticality_tiers": { - "demography_release": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "relative_tolerance": 0.02, - "description": "Population-structure cells: plus or minus 2 percent." + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be1_female_age_65_plus_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a0_17", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:b73dde1c55bf24c4e9826526" }, - "core_fiscal_release": { + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "relative_tolerance": 0.05, - "description": "Core fiscal totals, including assessed PIT: plus or minus 5 percent." + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be2_male_age_0_17_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a18_64", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fac6476a0da56862ec9d981e" }, - "standard_admin_release": { + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "relative_tolerance": 0.1, - "description": "Administrative contribution totals: plus or minus 10 percent." + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be2_male_age_18_64_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be2__male__a65_plus", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b1fb01f519506661f18756a" }, - "caseload_release": { + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", "criticality": "release_blocking", - "relative_tolerance": 0.15, - "description": "Administrative caseload totals: plus or minus 15 percent." + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "commune_diagnostic": { - "criticality": "diagnostic", - "relative_tolerance": 0.1, - "description": "Commune fiscal-income cells: plus or minus 10 percent, reported but not release-blocking." + "filter": "population_region_be2_male_age_65_plus_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be2__female__a0_17", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:5a8aaa9d9b3acbd074350860" }, - "validation_only": { - "criticality": "diagnostic", - "relative_tolerance": null, - "description": "Validation oracle only; no calibration tolerance." - } + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be2_female_age_0_17_indicator", + "period_match_policy": "exact" }, - "basis_periods": { - "population_reference_2023": { - "period": 2023, - "basis": "reference_date", - "fact_period_type": "calendar_year", - "mismatch_policy": "requires_source_projection", - "description": "Earlier-period population-stock reference, retained as inactive groundwork pending the B3 transport reference rewrite." - }, - "assessment_income_year_2022": { - "period": 2022, - "basis": "income_year", - "fact_period_type": "tax_year", - "mismatch_policy": "requires_source_projection", - "description": "Earlier assessed fiscal reference binds the represented 2022 income year; retained as inactive groundwork pending B3, never silently relabelled to 2026." - }, - "calendar_year_2022": { - "period": 2022, - "basis": "calendar_year", - "fact_period_type": "calendar_year", - "mismatch_policy": "requires_source_projection", - "description": "Calendar-year administrative or national-accounts fact aligned to the 2022 income reference year." - } + { + "name": "statbel_population_by_region_sex_age__be2__female__a18_64", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:9bd542188b4920c4fc2fc000" + }, + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be2_female_age_18_64_indicator", + "period_match_policy": "exact" }, - "hierarchy_reconciliations": [] - }, - "schema_version": 2, - "hierarchy": { - "providers": { - "statbel": { - "label": "Statbel" + { + "name": "statbel_population_by_region_sex_age__be2__female__a65_plus", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE2", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:01f7112f0ac2cc62931fb498" }, - "spf_finances": { - "label": "FPS Finance" + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "onss": { - "label": "National Social Security Office" + "filter": "population_region_be2_female_age_65_plus_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be3__male__a0_17", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:e7d1c04c5969b6ef0f54a195" }, - "onem": { - "label": "National Employment Office" + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "nbb": { - "label": "National Bank of Belgium" - } + "filter": "population_region_be3_male_age_0_17_indicator", + "period_match_policy": "exact" }, - "categories": { - "statbel.demography": { - "provider_id": "statbel", - "label": "Demography" + { + "name": "statbel_population_by_region_sex_age__be3__male__a18_64", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:3b490791a47549aceb713316" }, - "statbel.fiscal_income": { - "provider_id": "statbel", - "label": "Fiscal income" + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "spf_finances.income_tax": { - "provider_id": "spf_finances", - "label": "Personal income tax" + "filter": "population_region_be3_male_age_18_64_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be3__male__a65_plus", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "male" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:ad6a44e0f4906dea7225e982" }, - "onss.social_security": { - "provider_id": "onss", - "label": "Social security contributions" + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" }, - "onem.caseloads": { - "provider_id": "onem", - "label": "Benefit caseloads" + "filter": "population_region_be3_male_age_65_plus_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a0_17", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "0_17", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:8dd7262af62fcdd238a028ba" }, - "nbb.national_accounts": { - "provider_id": "nbb", - "label": "National accounts" - } - } + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be3_female_age_0_17_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a18_64", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "18_64", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:53e961ba941bbbac70214d47" + }, + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be3_female_age_18_64_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_population_by_region_sex_age__be3__female__a65_plus", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "source_concept": "statbel.population_structure.population", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "nuts1", + "geography_id": "BE3", + "geography_vintage": "NUTS_2024", + "record_set_id": "statbel.population_structure.cy2026.people.by_nuts1_age_sex", + "dimensions": [ + "person.age_band", + "person.sex" + ], + "dimension_values": { + "person.age_band": "65_plus", + "person.sex": "female" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:000c18596fb1e051cddc4fe4" + }, + "entity": "person", + "measure": "people", + "period": 2026, + "family": "demography", + "category_id": "statbel.demography", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_population_by_region_sex_age", + "activation_status": "active", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "geography_vintage": "NUTS_2024", + "geography_vintage_authority": "vintage:be_nuts1_2025", + "fit_tolerance": "0.02", + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": "2026" + }, + "filter": "population_region_be3_female_age_65_plus_indicator", + "period_match_policy": "exact" + }, + { + "name": "statbel_a1_standin_declarations__under_10k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_under_1", + "class_1_2", + "class_2_3", + "class_3_4", + "class_4_5", + "class_5_6", + "class_6_7", + "class_7_8", + "class_8_9", + "class_9_10" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "under_10k", + "standin_band_lower_eur_iy2023": "0", + "standin_band_upper_eur_iy2023": "10000" + }, + "filter": "statbel_a1_standin_band_under_10k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__under_10k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_under_1", + "class_1_2", + "class_2_3", + "class_3_4", + "class_4_5", + "class_5_6", + "class_6_7", + "class_7_8", + "class_8_9", + "class_9_10" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "under_10k", + "standin_band_lower_eur_iy2023": "0", + "standin_band_upper_eur_iy2023": "10000" + }, + "filter": "statbel_a1_standin_band_under_10k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__10k_20k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_10_11", + "class_11_12", + "class_12_13", + "class_13_14", + "class_14_15", + "class_15_16", + "class_16_17", + "class_17_18", + "class_18_19", + "class_19_20" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "10k_20k", + "standin_band_lower_eur_iy2023": "10000", + "standin_band_upper_eur_iy2023": "20000" + }, + "filter": "statbel_a1_standin_band_10k_20k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__10k_20k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_10_11", + "class_11_12", + "class_12_13", + "class_13_14", + "class_14_15", + "class_15_16", + "class_16_17", + "class_17_18", + "class_18_19", + "class_19_20" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "10k_20k", + "standin_band_lower_eur_iy2023": "10000", + "standin_band_upper_eur_iy2023": "20000" + }, + "filter": "statbel_a1_standin_band_10k_20k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__20k_30k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_20_21", + "class_21_22", + "class_22_23", + "class_23_24", + "class_24_25", + "class_25_26", + "class_26_27", + "class_27_28", + "class_28_29", + "class_29_30" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "20k_30k", + "standin_band_lower_eur_iy2023": "20000", + "standin_band_upper_eur_iy2023": "30000" + }, + "filter": "statbel_a1_standin_band_20k_30k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__20k_30k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_20_21", + "class_21_22", + "class_22_23", + "class_23_24", + "class_24_25", + "class_25_26", + "class_26_27", + "class_27_28", + "class_28_29", + "class_29_30" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "20k_30k", + "standin_band_lower_eur_iy2023": "20000", + "standin_band_upper_eur_iy2023": "30000" + }, + "filter": "statbel_a1_standin_band_20k_30k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__30k_40k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_30_31", + "class_31_32", + "class_32_33", + "class_33_34", + "class_34_35", + "class_35_36", + "class_36_37", + "class_37_38", + "class_38_39", + "class_39_40" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "30k_40k", + "standin_band_lower_eur_iy2023": "30000", + "standin_band_upper_eur_iy2023": "40000" + }, + "filter": "statbel_a1_standin_band_30k_40k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__30k_40k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_30_31", + "class_31_32", + "class_32_33", + "class_33_34", + "class_34_35", + "class_35_36", + "class_36_37", + "class_37_38", + "class_38_39", + "class_39_40" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "30k_40k", + "standin_band_lower_eur_iy2023": "30000", + "standin_band_upper_eur_iy2023": "40000" + }, + "filter": "statbel_a1_standin_band_30k_40k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__40k_50k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_40_41", + "class_41_42", + "class_42_43", + "class_43_44", + "class_44_45", + "class_45_46", + "class_46_47", + "class_47_48", + "class_48_49", + "class_49_50" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "40k_50k", + "standin_band_lower_eur_iy2023": "40000", + "standin_band_upper_eur_iy2023": "50000" + }, + "filter": "statbel_a1_standin_band_40k_50k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__40k_50k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_40_41", + "class_41_42", + "class_42_43", + "class_43_44", + "class_44_45", + "class_45_46", + "class_46_47", + "class_47_48", + "class_48_49", + "class_49_50" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "40k_50k", + "standin_band_lower_eur_iy2023": "40000", + "standin_band_upper_eur_iy2023": "50000" + }, + "filter": "statbel_a1_standin_band_40k_50k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__50k_75k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_50_51", + "class_51_52", + "class_52_53", + "class_53_54", + "class_54_55", + "class_55_56", + "class_56_57", + "class_57_58", + "class_58_59", + "class_59_60", + "class_60_61", + "class_61_62", + "class_62_63", + "class_63_64", + "class_64_65", + "class_65_66", + "class_66_67", + "class_67_68", + "class_68_69", + "class_69_70", + "class_70_71", + "class_71_72", + "class_72_73", + "class_73_74", + "class_74_75" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "50k_75k", + "standin_band_lower_eur_iy2023": "50000", + "standin_band_upper_eur_iy2023": "75000" + }, + "filter": "statbel_a1_standin_band_50k_75k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 25 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__50k_75k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_50_51", + "class_51_52", + "class_52_53", + "class_53_54", + "class_54_55", + "class_55_56", + "class_56_57", + "class_57_58", + "class_58_59", + "class_59_60", + "class_60_61", + "class_61_62", + "class_62_63", + "class_63_64", + "class_64_65", + "class_65_66", + "class_66_67", + "class_67_68", + "class_68_69", + "class_69_70", + "class_70_71", + "class_71_72", + "class_72_73", + "class_73_74", + "class_74_75" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "50k_75k", + "standin_band_lower_eur_iy2023": "50000", + "standin_band_upper_eur_iy2023": "75000" + }, + "filter": "statbel_a1_standin_band_50k_75k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 25 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__75k_100k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_75_76", + "class_76_77", + "class_77_78", + "class_78_79", + "class_79_80", + "class_80_81", + "class_81_82", + "class_82_83", + "class_83_84", + "class_84_85", + "class_85_86", + "class_86_87", + "class_87_88", + "class_88_89", + "class_89_90", + "class_90_91", + "class_91_92", + "class_92_93", + "class_93_94", + "class_94_95", + "class_95_96", + "class_96_97", + "class_97_98", + "class_98_99", + "class_99_100" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "75k_100k", + "standin_band_lower_eur_iy2023": "75000", + "standin_band_upper_eur_iy2023": "100000" + }, + "filter": "statbel_a1_standin_band_75k_100k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 25 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__75k_100k", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_75_76", + "class_76_77", + "class_77_78", + "class_78_79", + "class_79_80", + "class_80_81", + "class_81_82", + "class_82_83", + "class_83_84", + "class_84_85", + "class_85_86", + "class_86_87", + "class_87_88", + "class_88_89", + "class_89_90", + "class_90_91", + "class_91_92", + "class_92_93", + "class_93_94", + "class_94_95", + "class_95_96", + "class_96_97", + "class_97_98", + "class_98_99", + "class_99_100" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "75k_100k", + "standin_band_lower_eur_iy2023": "75000", + "standin_band_upper_eur_iy2023": "100000" + }, + "filter": "statbel_a1_standin_band_75k_100k_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 25 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_declarations__100k_plus", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income.taxable_income.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_100_plus" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_declarations_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "100k_plus", + "standin_band_lower_eur_iy2023": "100000", + "standin_band_upper_eur_iy2023": "open" + }, + "filter": "statbel_a1_standin_band_100k_plus_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 1 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_a1_standin_taxable_income__100k_plus", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "taxable_income_eur", + "source_concept": "statbel.fiscal_income.total_net_taxable_income", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.taxable_income.by_income_class_eur1000", + "dimensions": [ + "tax_return.net_taxable_income_class" + ], + "dimension_values": { + "tax_return.net_taxable_income_class": [ + "class_100_plus" + ] + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "statbel_net_taxable_income_proxy_v1_eur", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_a1_standin_taxable_income_by_band", + "activation_status": "requires_prerequisites", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_total_resources", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "money", + "required_reference_profile": "aging_index", + "required_measurement_binding": "statbel_net_taxable_income_proxy_v1", + "reference_prerequisites": "[\"reference_profile:aging_index\",\"measurement:statbel_net_taxable_income_proxy_v1\"]", + "interval_table_id": "statbel_a1_standin_bands_iy2023", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4", + "standin_band": "100k_plus", + "standin_band_lower_eur_iy2023": "100000", + "standin_band_upper_eur_iy2023": "open" + }, + "filter": "statbel_a1_standin_band_100k_plus_indicator", + "notes": "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 (rule-computed net professional income per declaration on the S2-d tax_unit) has no producer, and legal pensions, part of professional income, are not modelled until d1902. The band cuts are income-year-2023 euros: ageing them to 2026 needs a shared operation that scales interval cuts by a declared annual ratio pair. scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs dated observations through the target period; neither fits FPB's annual 2026 projections or summed bands, so reference_profile:aging_index stays deferred. The stand-in is never described as reproducing official taxable income.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 1 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:96551e39b8ae3a2a4d4fbba5", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.household_account.total_resources", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:782bd24d9f5d7ce79feadabf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_b4_declarations__joint", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income_distribution.b4.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.declaration_type_age.by_decile", + "dimensions": [ + "tax_return.age_band", + "tax_return.decile", + "tax_return.declaration_type" + ], + "dimension_values": { + "tax_return.age_band": "all", + "tax_return.decile": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "tax_return.declaration_type": "joint" + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_b4_declarations_by_type", + "activation_status": "requires_declared_tax_units", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC4", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "S1/S2-d: the declared tax-unit partition and the BE-MC4 legal-status proxy (partner pointers calibrated to these counts) are not built; joint and individual declaration indicators have no producer. B.4, like A.1, counts only declarations with positive total net taxable income (Statbel's 523,770 zero-income declarations of income year 2023 are outside it), so the indicators must count the same declared filing universe as the A.1 bands (d1952 build item 2), or the target overshoots by up to 7%.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4" + }, + "filter": "joint_declaration_indicator", + "notes": "S1/S2-d: the declared tax-unit partition and the BE-MC4 legal-status proxy (partner pointers calibrated to these counts) are not built; joint and individual declaration indicators have no producer. B.4, like A.1, counts only declarations with positive total net taxable income (Statbel's 523,770 zero-income declarations of income year 2023 are outside it), so the indicators must count the same declared filing universe as the A.1 bands (d1952 build item 2), or the target overshoots by up to 7%.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_b4_declarations__individual", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "declarations", + "source_concept": "statbel.fiscal_income_distribution.b4.declaration_count", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.declaration_type_age.by_decile", + "dimensions": [ + "tax_return.age_band", + "tax_return.decile", + "tax_return.declaration_type" + ], + "dimension_values": { + "tax_return.age_band": "all", + "tax_return.decile": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "tax_return.declaration_type": "individual" + }, + "assertion": "observation" + }, + "entity": "tax_unit", + "measure": "tax_units", + "period": 2026, + "family": "fiscal_income", + "category_id": "statbel.fiscal_income", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "statbel_b4_declarations_by_type", + "activation_status": "requires_declared_tax_units", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC4", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "S1/S2-d: the declared tax-unit partition and the BE-MC4 legal-status proxy (partner pointers calibrated to these counts) are not built; joint and individual declaration indicators have no producer. B.4, like A.1, counts only declarations with positive total net taxable income (Statbel's 523,770 zero-income declarations of income year 2023 are outside it), so the indicators must count the same declared filing universe as the A.1 bands (d1952 build item 2), or the target overshoots by up to 7%.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t07_total_population", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2023", + "target_period": "2026", + "reference_value_kind": "count", + "declaration_universe": "filed declarations with positive total net taxable income; zero-income declarations are outside A.1, B.1 and B.4" + }, + "filter": "individual_declaration_indicator", + "notes": "S1/S2-d: the declared tax-unit partition and the BE-MC4 legal-status proxy (partner pointers calibrated to these counts) are not built; joint and individual declaration indicators have no producer. B.4, like A.1, counts only declarations with positive total net taxable income (Statbel's 523,770 zero-income declarations of income year 2023 are outside it), so the indicators must count the same declared filing universe as the A.1 bands (d1952 build item 2), or the target overshoots by up to 7%.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base", + "expected_member_count": 10 + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:d0f703b4cdbc4b51ce2a9674", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "level_thousand", + "source_concept": "fpb.economic_outlook_2026_2031.t07.published_cell", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2023.labour_market.levels.total_population", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:216674c54ce3810c24e7434c", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "statbel_b1_enrolled_tax__decile_01", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_01" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:0b2b5e737d0305a356532b3b" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_01_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_02", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_02" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:c6ca78a1c708058c93a0f976" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_02_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_03", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_03" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:109397450babe832524a5c97" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_03_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_04", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_04" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:af9649af17a29cc5dd903c59" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_04_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_05", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_05" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:7a4e850043abefabfa3ed8b0" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_05_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_06", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_06" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:72b19dd783c1bc3da72aae0d" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_06_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_07", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_07" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:076e8b7e6856e7e8a9c7352d" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_07_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_08", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_08" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:5075cc8a100e029980205e4c" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_08_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__decile_09", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.decile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "decile_09" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:de89896fe88dcc2b7deb9565" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_decile_09_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_091", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_091" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:46f239dcfed5e9445903306d" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_091_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_092", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_092" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:0f8b2d677fb9b21b13760d44" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_092_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_093", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_093" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:7e02cda58a39d38f57c9d523" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_093_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_094", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_094" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:bcf3324ba69806b46180b770" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_094_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_095", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_095" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:8a2ba3c05dfec9a9a7f2e875" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_095_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_096", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_096" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:1ce91b227610925d0740895b" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_096_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_097", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_097" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:bb3fdf0a97324fdd08a83c92" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_097_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_098", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_098" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:1a885fe815f21b066406344a" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_098_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_099", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_099" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:707eddca745f7611662f6d46" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_099_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "statbel_b1_enrolled_tax__percentile_100", + "ledger_selector": { + "source_name": "statbel_fiscal_income_distribution", + "source_measure_id": "total_tax_eur", + "source_concept": "statbel.fiscal_income_distribution.b1.total_tax", + "entity_name": "return", + "period_type": "tax_year", + "period_value": 2023, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "statbel.fiscal_income_distribution.income_year2023.by_decile.top_decile_percentile_values", + "dimensions": [ + "tax_return.rank_group" + ], + "dimension_values": { + "tax_return.rank_group": "percentile_100" + }, + "aggregate_fact_key": "ledger.aggregate_fact.v2:fefd7bd484d320ad42b5f7fe" + }, + "entity": "tax_unit", + "measure": "statbel_b1_enrolled_tax_proxy_v1_eur", + "period": 2023, + "family": "income_tax", + "category_id": "statbel.income_tax", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "statbel_b1_enrolled_tax_by_rank_group", + "activation_status": "inactive_pending_b1_checks", + "criticality": "release_blocking", + "measure_kind": "prepared_column", + "publisher": "Statbel", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC5", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023" + }, + "filter": "statbel_b1_rank_group_percentile_100_indicator", + "notes": "BE-MC5 activates B.1 only after its tax definition, income ranking and policy year are checked. All three checks fail or cannot be completed from the documents (reference_inventory.json b1_checks), so B.1 stays inactive and unaged at its source period.", + "signed": true, + "period_match_policy": "exact" + }, + { + "name": "onss_worker_personal_contributions", + "ledger_selector": { + "source_name": "onss_contributions", + "source_measure_id": "worker_article_17_uncapped_component_contribution", + "source_concept": "onss.declared_contributions.personal_social_security_contributions_worker_borne", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "onss.contributions.cy2024.worker_personal_contributions.country", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:b6355af1bd917ae71a7df3ae", + "assertion": "observation" + }, + "entity": "person", + "measure": "belgium_worker_article_17_uncapped_component_contribution", + "period": 2026, + "family": "social_security", + "category_id": "onss.social_security", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "onss_worker_personal_contributions", + "activation_status": "requires_rules_binding", + "criticality": "release_blocking", + "measure_kind": "rules_output", + "publisher": "National Social Security Office", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "W3: needs a pinned rulespec-be binding for be/statutes/social_security/workers/contribution_rates.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_actual_social_contributions", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2024", + "target_period": "2026" + }, + "notes": "W3: needs a pinned rulespec-be binding for be/statutes/social_security/workers/contribution_rates.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.actual_social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:a66b02d02ed92c58e542e7ed", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2024.household_account.actual_social_contributions", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:3f953c8cbe00192899c93c3b", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "onem_complete_unemployment_recipients", + "ledger_selector": { + "source_name": "onem_rva_unemployment", + "source_measure_id": "receives_unemployment_benefit", + "source_concept": "onem_rva.complete_unemployment.monthly_average_recipients", + "entity_name": "person", + "period_type": "calendar_year", + "period_value": 2024, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "onem_rva.unemployment.cy2024.complete_unemployment.country", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:466ad99667f2d50f94a42726" + }, + "entity": "person", + "measure": "receives_unemployment_benefit", + "period": 2024, + "family": "caseloads", + "category_id": "onem.caseloads", + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": "onem_complete_unemployment_recipients", + "activation_status": "requires_ageing_ruling_and_receipt_binding", + "criticality": "release_blocking", + "measure_kind": "receipt_flag", + "publisher": "National Employment Office", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "No declared ageing pair: FPB publishes jobseeker levels (BFP unemployment, +0.6% 2026/2025), not benefit recipients, and its unemployment benefit spending falls 24% in 2026, so the two series point opposite ways and neither ages a recipient count. Kept unaged at its 2024 source period. Also needs W3's receipt contract for unemployment.", + "ageing": "none declared: no recipient series" + }, + "notes": "No declared ageing pair: FPB publishes jobseeker levels (BFP unemployment, +0.6% 2026/2025), not benefit recipients, and its unemployment benefit spending falls 24% in 2026, so the two series point opposite ways and neither ages a recipient count. Kept unaged at its 2024 source period. Also needs W3's receipt contract for unemployment.", + "period_match_policy": "exact" + }, + { + "name": "fpb_unemployment_benefit_expenditure", + "ledger_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.social_security_cash_unemployment", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ad11668f4cf559bb3c388f", + "assertion": "observation" + }, + "entity": "household", + "measure": "belgium_unemployment_ordinary_annual_payable_amount", + "period": 2026, + "family": "benefit_expenditure", + "category_id": "fpb.benefit_expenditure", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "fpb_unemployment_benefit_expenditure", + "activation_status": "requires_receipt_contract_and_rules_binding", + "criticality": "release_blocking", + "measure_kind": "rules_output", + "publisher": "Federal Planning Bureau", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "W3: needs a pinned rulespec-be binding for be/regulations/unemployment/pilot_oracle_pipeline.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads. Unemployment history inputs and W3's receipt contract are also missing.", + "ageing_target_equals": "FPB's 2026 projection of the base's own row", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t24_social_security_cash_unemployment", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2025", + "target_period": "2026" + }, + "notes": "W3: needs a pinned rulespec-be binding for be/regulations/unemployment/pilot_oracle_pipeline.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads. Unemployment history inputs and W3's receipt contract are also missing.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.social_benefits_detail.social_security_cash_unemployment", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:61a041fd9dff09745593e4da", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.social_security_cash_unemployment", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:45ad11668f4cf559bb3c388f", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "fpb_grapa_expenditure", + "ledger_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:776e68a9e93ca03151c53baf", + "assertion": "observation" + }, + "entity": "person", + "measure": "belgium_grapa_income_guarantee_for_elderly_annual_amount", + "period": 2026, + "family": "benefit_expenditure", + "category_id": "fpb.benefit_expenditure", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "fpb_grapa_expenditure", + "activation_status": "requires_pension_route_d1902", + "criticality": "release_blocking", + "measure_kind": "rules_output", + "publisher": "Federal Planning Bureau", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC6", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "GRAPA is means-tested on pension income, and legal pensions are not modelled until d1902 settles BE-MC3's pension route. W3: needs a pinned rulespec-be binding for be/statutes/income_guarantee_for_elderly/payable_amount.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "ageing_target_equals": "FPB's 2026 projection of the base's own row", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t24_federal_cash_income_guarantee_for_older_people", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2025", + "target_period": "2026" + }, + "notes": "GRAPA is means-tested on pension income, and legal pensions are not modelled until d1902 settles BE-MC3's pension route. W3: needs a pinned rulespec-be binding for be/statutes/income_guarantee_for_elderly/payable_amount.yaml on the transported frame, the S5 pre-calibration allowlist entry for it, and B4's euro conversion of the donor inputs it reads.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:13ee4f4b5a469ddeb487eafc", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t24.published_cell", + "entity_name": "government", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:776e68a9e93ca03151c53baf", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + }, + { + "name": "fpb_net_mixed_income", + "ledger_selector": { + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.net_mixed_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0db8ec51ab64a7f7519fc5d4", + "assertion": "observation" + }, + "entity": "person", + "measure": "nonfarm_self_employment_income", + "period": 2026, + "family": "self_employment", + "category_id": "fpb.self_employment", + "assertion_policy": "allow_source_projection", + "metadata": { + "contract_target_id": "fpb_net_mixed_income", + "activation_status": "requires_currency_bridge_b4", + "criticality": "release_blocking", + "measure_kind": "transported_input", + "publisher": "Federal Planning Bureau", + "target_role": "calibration", + "reference_set": "calibration", + "method_card_row": "BE-MC3", + "method_card_status": "proposed_pending_d1902", + "fit_tolerance": "0.05", + "parking_reason": "B4: BE-MC3 gives self-employment income FX and uprating only, then calibrates its aggregate; the euro column has no producer until B4's currency bridge. FPB's net mixed income also covers farm income, which the donor carries separately.", + "ageing_target_equals": "FPB's 2026 projection of the base's own row", + "ageing": "rolled_forward_by_ratio", + "ageing_pair": "fpb_t11_net_mixed_income", + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": "2025", + "target_period": "2026" + }, + "notes": "B4: BE-MC3 gives self-employment income FX and uprating only, then calibrates its aggregate; the euro column has no producer until B4's currency bridge. FPB's net mixed income also covers farm income, which the donor carries separately.", + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + { + "role": "base" + }, + { + "role": "numerator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2026, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2026.household_account.net_mixed_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:82a8d913db8aa3594a182492", + "assertion": "source_projection" + }, + { + "role": "denominator", + "source_name": "fpb_economic_outlook", + "source_measure_id": "amount_meur", + "source_concept": "fpb.economic_outlook_2026_2031.t11.published_cell", + "entity_name": "household", + "period_type": "calendar_year", + "period_value": 2025, + "geography_level": "country", + "geography_id": "BE", + "geography_vintage": "current", + "record_set_id": "fpb.economic_outlook_2026_2031.cy2025.household_account.net_mixed_income", + "dimensions": [], + "aggregate_fact_key": "ledger.aggregate_fact.v2:0db8ec51ab64a7f7519fc5d4", + "assertion": "observation" + } + ], + "period_match_policy": "latest_not_after" + } + ], + "target_profile": { + "schema_version": 1, + "hierarchy_reconciliations": [] } } diff --git a/packages/microcosm-build/src/microcosm/build/source_manifest.py b/packages/microcosm-build/src/microcosm/build/source_manifest.py index e773bea0f5..1b53fedbca 100644 --- a/packages/microcosm-build/src/microcosm/build/source_manifest.py +++ b/packages/microcosm-build/src/microcosm/build/source_manifest.py @@ -58,6 +58,8 @@ "assign_student_loan_plan_cohorts", "assign_main_asset_type", "assign_trips_from_band_means", + # microcosm#1428: the self-employed's gross receipts. + "assign_trading_allowance_receipts", "assign_uniform_draw", "aggregate_person_to_benunit", "allocate_per_capita_from_cell_table", diff --git a/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py b/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py index 2845ac1496..d8b26cb74b 100644 --- a/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py +++ b/packages/microcosm-build/src/microcosm/build/spec_engine/inventory_coverage.py @@ -380,8 +380,8 @@ # microcosm#1259's recipient-share bound in puf_support moves both again. # microcosm#1261 moves both again: the PUF donor carries partnership and # S-corp line-32 shares as separate leaves. - "seed_map": "488846129a3c47e89d54538515e6bdbd7ce849e4081ab8a4ad40c9ce2a1e1391", - "seed_protocol": "87f44e60621c45d2fc1448fda11cd446960d6bab7cb51b346367339e2e751e1f", + "seed_map": '07fe9086b57a15ab1c2551fce5c30aebfa55175d76a308f7dbb268ac49da747a', + "seed_protocol": '4ff992324004d4c09d4165bc8d24ccff15b9d84858836851b12d532c870920f4', "source_manifest": "608c3621b1e4a108e57c8f83d16a184acdb3d05e16a81b895f7f72dbf5d0685c", "take_up": "9522ce40f7dea569312dd7a7beb474e5a5afadd2f1e10cb5876534c3ef623d35", "tail": "071d418bb49976f4682c320d2ad07097c177de3a645d2524f235e1ff33ac83f9", diff --git a/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json b/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json index 8c23739b7a..33993ae905 100644 --- a/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json +++ b/packages/microcosm-build/src/microcosm/build/spec_engine/schema/sources.schema.json @@ -6612,6 +6612,75 @@ } } }, + { + "type": "object", + "additionalProperties": false, + "required": [ + "kind", + "output", + "profit", + "draw", + "seed", + "claimant_bands", + "claimant_expenses", + "other_expenses", + "calibration", + "rule" + ], + "properties": { + "kind": { + "const": "assign_trading_allowance_receipts" + }, + "output": { + "type": "string" + }, + "profit": { + "type": "string" + }, + "draw": { + "type": "string" + }, + "seed": { + "type": "integer" + }, + "claimant_bands": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "rate" + ], + "properties": { + "upper_inclusive": { + "type": "number", + "exclusiveMinimum": 0 + }, + "rate": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + } + }, + "claimant_expenses": { + "type": "number", + "minimum": 0 + }, + "other_expenses": { + "type": "number", + "minimum": 0 + }, + "calibration": { + "type": "string" + }, + "rule": { + "type": "string" + } + } + }, { "type": "object", "additionalProperties": false, diff --git a/packages/microcosm-build/src/microcosm/build/staging.py b/packages/microcosm-build/src/microcosm/build/staging.py index 58146c1596..be0d3fd605 100644 --- a/packages/microcosm-build/src/microcosm/build/staging.py +++ b/packages/microcosm-build/src/microcosm/build/staging.py @@ -4,7 +4,8 @@ build completes and validates. Staging telemetry is intentionally weaker and more incremental: it lets dashboards monitor a candidate build before it is a release by writing small JSON artifacts under ``runs//`` and, -optionally, uploading them to a staging Hugging Face dataset repo. +optionally, handing them to the build's local emitter, which commits them to a +staging Hugging Face dataset repo with the build's own credential. """ from __future__ import annotations @@ -21,8 +22,9 @@ from typing import Any from microcosm.build.staging_storage import ( - BestEffortUploadSession, - HuggingFaceDatasetStorage, + RunFileEmitter, + RunFileHandOver, + warn_hand_over_failure, ) STAGING_SCHEMA_VERSION = 1 @@ -59,18 +61,21 @@ def _write_json(path: Path, payload: dict[str, Any]) -> None: @dataclass class StagingRunBundleWriter: - """Write and optionally upload a build's staging run bundle. + """Write a build's staging run bundle and hand it to the build's emitter. Args: run_id: Stable id for this build attempt. candidate_release_id: Release id this run is expected to produce. run_dir: Local directory where staging artifacts are written. - repo_id: Optional Hugging Face dataset repo for staging uploads. + repo_id: Optional Hugging Face dataset repo for staging files. path_prefix: Prefix inside the repo. Defaults to ``"runs"`` so files live under ``runs//``. - api: Optional ``huggingface_hub.HfApi``-shaped object for tests. + emitter_client: The build's local emitter (the interface's + ``EmitterClient``), which commits the handed-over files. Without + one, a configured repository receives nothing. upload_interval_seconds: Minimum interval between best-effort progress - uploads. Final states always upload. + hand-overs, and the emitter's interval between its commits of + them. Final states are always handed over. """ run_id: str @@ -78,7 +83,7 @@ class StagingRunBundleWriter: run_dir: Path | str repo_id: str | None = None path_prefix: str = DEFAULT_STAGING_PREFIX - api: Any = None + emitter_client: RunFileEmitter | None = None upload_interval_seconds: float = 30.0 started_at: str = field(default_factory=_now) @@ -93,16 +98,17 @@ def __post_init__(self) -> None: if not self.path_prefix: self.path_prefix = DEFAULT_STAGING_PREFIX self._last_upload_at = 0.0 - self._upload_failures = 0 - self._upload_successes = 0 - self._storage = ( - HuggingFaceDatasetStorage(self.repo_id, api=self.api) + self._hand_over = ( + RunFileHandOver( + self.emitter_client, + repository=self.repo_id.strip(), + run_id=self.run_id, + prefix=self.path_prefix, + commit_interval_seconds=self.upload_interval_seconds, + ) if self.repo_id else None ) - self._upload_session = ( - BestEffortUploadSession(self._storage) if self._storage else None - ) self._calibration_events: list[dict[str, Any]] = [] self._artifacts: dict[str, dict[str, Any]] = {} self._progress: dict[str, Any] = { @@ -128,36 +134,49 @@ def repo_run_prefix(self) -> str: def uploads_succeeded(self) -> int: """How many files actually reached the staging repo. - Zero on a run that was configured to upload but never managed to -- - no write token, revoked access, a Hub outage. Uploads are best-effort - and never fail the build, so this is the only signal separating a run - that staged from one that merely intended to. + The count the build's emitter last reported committing for this run. + Zero on a run that was configured to stage but never managed to: no + emitter, no write token, revoked access, a Hub outage. Staging is + best-effort and never fails the build, so this is the only signal + separating a run that staged from one that merely intended to. """ - return self._upload_successes + if self._hand_over is None: + return 0 + self._hand_over.receipt() + return self._hand_over.files_committed - def _upload_file(self, local: Path, path_in_repo: str) -> None: - if self._upload_session is None or not self.repo_id: + def _hand_over_files( + self, + files: list[tuple[str, Path]], + *, + latest_pointer: Path | None = None, + run_index_entry: dict[str, Any] | None = None, + flush: bool, + ) -> None: + if self._hand_over is None or not self.repo_id: return # Best-effort: staging telemetry must never fail (or stall) a build. - # After three consecutive failures — e.g. no write token — stop trying - # for the rest of the run; local staging artifacts are still written. - result = self._upload_session.upload(local, path_in_repo) - self._upload_failures = self._upload_session.consecutive_failures - self._upload_successes = self._upload_session.successes - if not result.succeeded: + # After three hand-overs in a row the emitter does not accept (no + # emitter, or one that does not answer), stop for the rest of the run; + # local staging artifacts are still written. + result = self._hand_over.hand_over( + files, + latest_pointer=latest_pointer, + run_index_entry=run_index_entry, + flush=flush, + ) + if result.accepted: + return + warn_hand_over_failure(self._hand_over.repository, result) + if result.became_paused: print( - f"warning: staging upload of {path_in_repo} failed: {result.error}", + "warning: disabling staging hand-overs for this run after " + "three in a row failed; local staging artifacts are still " + "written.", file=sys.stderr, ) - if result.became_disabled: - print( - "warning: disabling staging uploads for this run after " - "three consecutive failures; local staging artifacts are " - "still written.", - file=sys.stderr, - ) - self.repo_id = None + self.repo_id = None def _maybe_upload(self, *, force: bool = False) -> None: if not self.repo_id: @@ -166,19 +185,28 @@ def _maybe_upload(self, *, force: bool = False) -> None: if not force and now - self._last_upload_at < self.upload_interval_seconds: return self._last_upload_at = now - for filename in ( - "run_manifest.json", - "progress.json", - "calibration_progress.json", - "events.ndjson", - ): - local = self.run_dir / filename - if local.exists(): - self._upload_file(local, f"{self.repo_run_prefix}/{filename}") - self._upload_latest_pointer() - self._upload_runs_index() - - def _upload_latest_pointer(self) -> None: + files = [ + (filename, self.run_dir / filename) + for filename in ( + "run_manifest.json", + "progress.json", + "calibration_progress.json", + "events.ndjson", + ) + if (self.run_dir / filename).exists() + ] + pointer = self._write_latest_pointer() + self._write_runs_index() + # The emitter merges this run's entry into the repository's runs.json + # when it commits, keeping every other run. + self._hand_over_files( + files, + latest_pointer=pointer, + run_index_entry=self.run_summary(), + flush=force, + ) + + def _write_latest_pointer(self) -> Path: payload = { "schema_version": STAGING_SCHEMA_VERSION, "run_id": self.run_id, @@ -195,46 +223,18 @@ def _upload_latest_pointer(self) -> None: } local = self.run_dir / LATEST_STAGING_POINTER _write_json(local, payload) - self._upload_file(local, LATEST_STAGING_POINTER) - - def _existing_runs(self) -> list[dict[str, Any]]: - """Best-effort fetch of the runs index already in the repo.""" - if self._storage is None or not self.repo_id: - return [] - try: - data = json.loads(self._storage.download(RUNS_INDEX)) - except Exception: - # Index missing (first run) or unreadable; start from scratch. - return [] - runs = data.get("runs") if isinstance(data, dict) else None - if not isinstance(runs, list): - return [] - return [run for run in runs if isinstance(run, dict) and run.get("run_id")] - - def _upload_runs_index(self) -> None: - # Upsert this run into the existing index rather than overwriting it, so - # the index keeps every run instead of only the last one to upload. - current = self.run_summary() - runs = [ - run for run in self._existing_runs() if run.get("run_id") != self.run_id - ] - runs.append(current) - runs.sort( - key=lambda run: str( - run.get("updated_at") or run.get("started_at") or run.get("run_id") - ), - reverse=True, - ) - local = self.run_dir / RUNS_INDEX + return local + + def _write_runs_index(self) -> None: + """This run's local index: the repository's copy is the emitter's merge.""" _write_json( - local, + self.run_dir / RUNS_INDEX, { "schema_version": STAGING_SCHEMA_VERSION, "updated_at": _now(), - "runs": runs, + "runs": [self.run_summary()], }, ) - self._upload_file(local, RUNS_INDEX) def run_summary(self) -> dict[str, Any]: return { @@ -359,7 +359,7 @@ def attach_artifact( } self._write_run_manifest() if local.exists(): - self._upload_file(local, f"{self.repo_run_prefix}/{source.name}") + self._hand_over_files([(source.name, local)], flush=force_upload) self._maybe_upload(force=force_upload) def fail(self, error: BaseException) -> None: diff --git a/packages/microcosm-build/src/microcosm/build/staging_storage.py b/packages/microcosm-build/src/microcosm/build/staging_storage.py index 59ed736b9e..c6e48d207c 100644 --- a/packages/microcosm-build/src/microcosm/build/staging_storage.py +++ b/packages/microcosm-build/src/microcosm/build/staging_storage.py @@ -1,17 +1,36 @@ -"""Country-neutral configuration and remote storage for staging data.""" +"""Country-neutral configuration, remote storage and run-file hand-over. + +Staging run files (``runs//...``) go to the build's local emitter, +which commits them to the dataset repository with the build's own Hugging +Face credential (:class:`RunFileHandOver`). :class:`HuggingFaceDatasetStorage` +reads and writes the repository directly for the staged dataset bundle and +the tools that fetch it. +""" from __future__ import annotations +import math +import sys from collections.abc import Mapping, Sequence from dataclasses import dataclass from pathlib import Path -from typing import Any +from typing import Any, Protocol + +from microcosm_emitter_interface import RunFile, StageRunFiles +from microcosm_emitter_interface.staging import ( + ReadBackResult, + RunFilesReceipt, + unavailable_read_back, + unavailable_run_files_receipt, +) __all__ = [ - "BestEffortUploadSession", + "HandOverResult", "HuggingFaceDatasetStorage", + "RunFileEmitter", + "RunFileHandOver", "StagingRepositoryConfig", - "UploadResult", + "warn_hand_over_failure", ] @@ -236,83 +255,202 @@ def commit( return oid.strip() +class RunFileEmitter(Protocol): + """The staging calls of the interface's ``EmitterClient``.""" + + def stage_run_files(self, request: StageRunFiles) -> RunFilesReceipt: ... + + def run_files_receipt(self, repository: str, run_id: str) -> RunFilesReceipt: ... + + def read_back_run_files( + self, repository: str, run_id: str, *, wait_seconds: float = ... + ) -> ReadBackResult: ... + + @dataclass(frozen=True) -class UploadResult: - """Outcome of one best-effort remote write.""" +class HandOverResult: + """The emitter's answer to one hand-over of a run's files. + + ``reason`` names why it was not accepted: the receipt's status, or its + refusal code; never exception text. + """ + + accepted: bool + receipt: RunFilesReceipt + paused: bool = False + became_paused: bool = False + reason: str | None = None - attempted: bool - succeeded: bool - disabled: bool - became_disabled: bool - error: Exception | None = None +class RunFileHandOver: + """Hand one staging run's files to the build's local emitter. -class BestEffortUploadSession: - """Apply common retry-stop accounting without selecting a file contract.""" + The emitter copies the files' bytes before it answers, so the writer may + rewrite them at once. It writes every pending path of the repository in + one Hugging Face commit per cycle: an unforced hand-over one + ``commit_interval_seconds`` after its last commit to the repository, and + one with ``flush`` at the next cycle. Its receipts say how many files it + attempted to commit and how many it committed. + + A hand-over the emitter does not accept (no emitter, no answer in time, + or a refused request) never raises. After ``max_consecutive_failures`` of + them in a row, the hand-over pauses until :meth:`reopen`, so a missing or + stalled emitter cannot slow the build. Files in a hand-over that was not + accepted count as attempted, never as committed. + """ def __init__( self, - storage: HuggingFaceDatasetStorage, + emitter: RunFileEmitter | None, *, + repository: str, + run_id: str, + prefix: str = "runs", + commit_interval_seconds: float = 30.0, max_consecutive_failures: int = 3, ) -> None: if max_consecutive_failures < 1: raise ValueError("max_consecutive_failures must be positive.") - self.storage = storage + self.emitter = emitter + self.repository = repository + self.run_id = run_id + self.prefix = prefix + # The request needs a finite interval. A writer with an infinite one + # hands over only forced states, which the emitter commits at once. + interval = float(commit_interval_seconds) + self.commit_interval_seconds = ( + max(0.0, interval) if math.isfinite(interval) else 0.0 + ) self.max_consecutive_failures = max_consecutive_failures - self.attempts = 0 - self.successes = 0 self.consecutive_failures = 0 self.enabled = True - - def upload( + #: Whether the most recent hand-over was accepted; None before one. + self.last_accepted: bool | None = None + #: The most recent receipt in which the emitter recorded the run. + self.last_receipt: RunFilesReceipt | None = None + self._files_not_accepted = 0 + + @property + def files_committed(self) -> int: + """Files the emitter reported committed, as of its last receipt.""" + receipt = self.last_receipt + return int(receipt["files_committed"]) if receipt else 0 + + @property + def files_attempted(self) -> int: + """Files the emitter attempted to commit, plus those it did not accept.""" + receipt = self.last_receipt + attempted = int(receipt["files_attempted"]) if receipt else 0 + return attempted + self._files_not_accepted + + @property + def last_error_code(self) -> str | None: + """The emitter's last commit error for the run, as of its last receipt.""" + receipt = self.last_receipt + return receipt["last_error_code"] if receipt else None + + def _record(self, receipt: RunFilesReceipt) -> bool: + if receipt.get("status") != "recorded": + return False + self.last_receipt = receipt + return True + + def receipt(self) -> RunFilesReceipt | None: + """Ask the emitter for the run's counts; keep the last known otherwise.""" + if self.emitter is not None: + try: + self._record( + self.emitter.run_files_receipt(self.repository, self.run_id) + ) + except Exception: + pass + return self.last_receipt + + def hand_over( self, - local_path: Path, - path_in_repo: str, + files: Sequence[tuple[str, Path]], *, - count: bool = True, - ) -> UploadResult: - """Attempt one write and stop the session after repeated failures.""" - + latest_pointer: Path | None = None, + run_index_entry: Mapping[str, Any] | None = None, + flush: bool = False, + ) -> HandOverResult: + """Hand over ``(relative path, local path)`` pairs under the run's folder.""" + offered = len(files) + (latest_pointer is not None) if not self.enabled: - return UploadResult( - attempted=False, - succeeded=False, - disabled=True, - became_disabled=False, + return HandOverResult( + accepted=False, + receipt=unavailable_run_files_receipt(self.repository, self.run_id), + paused=True, + reason="paused", ) - if count: - self.attempts += 1 + receipt: RunFilesReceipt try: - self.storage.upload(local_path, path_in_repo) - except Exception as error: - self.consecutive_failures += 1 - became_disabled = self.consecutive_failures >= self.max_consecutive_failures - if became_disabled: - self.enabled = False - return UploadResult( - attempted=True, - succeeded=False, - disabled=not self.enabled, - became_disabled=became_disabled, - error=error, + request = StageRunFiles( + repository=self.repository, + run_id=self.run_id, + files=[RunFile(relative, Path(local)) for relative, local in files], + prefix=self.prefix, + latest_pointer=latest_pointer, + run_index_entry=run_index_entry, + flush=flush, + commit_interval_seconds=self.commit_interval_seconds, ) - self.consecutive_failures = 0 - if count: - self.successes += 1 - return UploadResult( - attempted=True, - succeeded=True, - disabled=False, - became_disabled=False, + except ValueError: + receipt = { + **unavailable_run_files_receipt(self.repository, self.run_id), + "status": "refused", + "refusal_code": "INVALID_REQUEST", + } + else: + if self.emitter is None: + receipt = unavailable_run_files_receipt(self.repository, self.run_id) + else: + try: + receipt = self.emitter.stage_run_files(request) + except Exception: + receipt = unavailable_run_files_receipt( + self.repository, self.run_id + ) + accepted = self._record(receipt) + self.last_accepted = accepted + if accepted: + self.consecutive_failures = 0 + return HandOverResult(accepted=True, receipt=receipt) + self._files_not_accepted += offered + self.consecutive_failures += 1 + became_paused = self.consecutive_failures >= self.max_consecutive_failures + if became_paused: + self.enabled = False + return HandOverResult( + accepted=False, + receipt=receipt, + paused=not self.enabled, + became_paused=became_paused, + reason=str(receipt.get("refusal_code") or receipt.get("status")), ) - def reopen(self) -> None: - """Re-enable writes after a pause, for a terminal flush of the run state. - - The attempt and success counters are kept: the delivery summary - still reports every write the run made. - """ + def read_back(self, *, wait_seconds: float) -> ReadBackResult: + """Ask the emitter to commit the run's pending files and compare the Hub's.""" + if self.emitter is None: + return unavailable_read_back() + try: + return self.emitter.read_back_run_files( + self.repository, self.run_id, wait_seconds=wait_seconds + ) + except Exception: + return unavailable_read_back() + def reopen(self) -> None: + """Hand over again after a pause, for the run's final state.""" self.consecutive_failures = 0 self.enabled = True + + +def warn_hand_over_failure(repository: str, result: HandOverResult) -> None: + """Report a hand-over the emitter did not accept, without exception text.""" + print( + "warning: staging hand-over failed: the local emitter did not accept " + f"the run files for {repository} ({result.reason}); local staging " + "files are still written.", + file=sys.stderr, + ) diff --git a/packages/microcosm-build/src/microcosm/build/staging_v2.py b/packages/microcosm-build/src/microcosm/build/staging_v2.py index 727ec452ec..40942b482b 100644 --- a/packages/microcosm-build/src/microcosm/build/staging_v2.py +++ b/packages/microcosm-build/src/microcosm/build/staging_v2.py @@ -17,13 +17,14 @@ from dataclasses import dataclass from datetime import UTC, datetime from pathlib import Path, PurePosixPath -from typing import Any, Literal +from typing import Any, Literal, NoReturn from jsonschema import Draft202012Validator, FormatChecker from microcosm.build.staging_storage import ( - BestEffortUploadSession, - HuggingFaceDatasetStorage, + RunFileEmitter, + RunFileHandOver, + warn_hand_over_failure, ) #: The delivery summary's contract version. Its shape has not changed since version 2, @@ -802,12 +803,24 @@ def _reject_record_collections(self, value: Any) -> None: class StagingRunBundleWriterV2: - """Record, validate, persist, and optionally upload a staging run bundle. + """Record, validate and persist a staging run bundle, and hand it over. Writes version 3 documents (``STAGING_DOCUMENT_VERSION``); the delivery summary keeps contract version 2. + + In ``local_and_remote`` mode the run's files go to ``emitter_client``, the + build's local emitter, which commits them to ``repo_id`` with the build's + own Hugging Face credential and reads them back on request. The delivery + summary in each document carries the emitter's counts as of that + document's hand-over: the files it attempted to commit (plus any it did + not accept) and the files it committed. A document never counts the + commit that carries it. """ + #: How long read-back waits for the emitter to commit the run's pending + #: files; it spaces two commits to one repository at least 10 seconds apart. + READ_BACK_WAIT_SECONDS = 120.0 + def __init__( self, *, @@ -823,11 +836,10 @@ def __init__( delivery_mode: DeliveryMode = "local_and_remote", repo_id: str | None = None, upload_interval_seconds: float = 30.0, - api: Any = None, + emitter_client: RunFileEmitter | None = None, clock: Callable[[], str] = _utc_now, monotonic: Callable[[], float] = time.monotonic, content_policy: StagingContentPolicy | None = None, - sleep: Callable[[float], None] = time.sleep, ) -> None: self.run_id = _safe_identifier(run_id, label="run_id") self.candidate_id = _safe_identifier(candidate_id, label="candidate_id") @@ -864,16 +876,19 @@ def __init__( self.upload_interval_seconds = max(0.0, float(upload_interval_seconds)) self._clock = clock self._monotonic = monotonic - self._sleep = sleep self._content_policy = content_policy or StagingContentPolicy() - self._transport = ( - HuggingFaceDatasetStorage(self.repo_id, api=api) + self.emitter_client = emitter_client + self._hand_over = ( + RunFileHandOver( + emitter_client, + repository=self.repo_id, + run_id=self.run_id, + prefix=DEFAULT_STAGING_PREFIX, + commit_interval_seconds=self.upload_interval_seconds, + ) if self.delivery_mode == "local_and_remote" and self.repo_id else None ) - self._upload_session = ( - BestEffortUploadSession(self._transport) if self._transport else None - ) self.started_at = self._clock() self.updated_at = self.started_at self.status: LifecycleStatus = "running" @@ -887,8 +902,6 @@ def __init__( self._events: list[dict[str, Any]] = [] self._calibration_events: list[dict[str, Any]] = [] self._last_upload_at = 0.0 - self._consecutive_upload_failures = 0 - self._remote_disabled = False self._delivery = { "contract_version": STAGING_CONTRACT_VERSION, "enabled": True, @@ -1165,45 +1178,48 @@ def block( self._terminal_upload() def verify_remote(self) -> None: + """Have the emitter compare the Hub's copy of the run with what it committed. + + The emitter first commits the run's pending files, waiting up to + ``READ_BACK_WAIT_SECONDS``. Any answer but ``passed`` (a differing or + missing file, files still pending, no emitter) fails the read-back. + """ if self.status == "running": raise StagingContractError( "Authenticated remote read-back requires a completed, blocked or " "failed staging run." ) - if self._transport is None: + if self._hand_over is None: raise StagingReadBackError("Remote read-back requires remote staging mode.") self._maybe_upload(force=True) - expected = { - remote_path: local_path.read_bytes() - for local_path, remote_path in self._upload_paths() - } - try: - for path, expected_bytes in expected.items(): - remote_bytes = self._transport.download(path) - self._content_policy.validate_remote_file(path, remote_bytes) - if remote_bytes != expected_bytes: - raise StagingReadBackError( - f"Remote file {path} does not match local pre-read-back state." - ) - except Exception as exc: - self._delivery["read_back"] = "failed" - self._delivery["last_error_code"] = "READ_BACK_FAILED" - self._persist_bundle() - if isinstance(exc, StagingReadBackError): - raise - raise StagingReadBackError( - "Authenticated staging read-back failed." - ) from exc + if self._hand_over.last_accepted is not True: + # The emitter compares the Hub with what it committed; without the + # current files that can be an older state of the run. + self._fail_read_back( + "Authenticated staging read-back failed: the run's current " + "files were not handed over to the local emitter." + ) + result = self._hand_over.read_back(wait_seconds=self.READ_BACK_WAIT_SECONDS) + self._hand_over.receipt() + self._record_delivery() + if result["status"] != "passed" or self._hand_over.files_committed < 1: + self._fail_read_back(_read_back_failure(result)) self._delivery["read_back"] = "passed" self._delivery["last_error_code"] = None self._persist_bundle() # Make the verified state visible to authenticated consumers. This is # best effort because read-back has already established that the core # run files are present and valid: a failed refresh cannot change the - # verified local state (``_upload_path``), and the remote copy may then - # still show the delivery as it was before read-back. + # verified local state (``_record_delivery``), and the remote copy may + # then still show the delivery as it was before read-back. self._maybe_upload(force=True) + def _fail_read_back(self, message: str) -> NoReturn: + self._delivery["read_back"] = "failed" + self._delivery["last_error_code"] = "READ_BACK_FAILED" + self._persist_bundle() + raise StagingReadBackError(message) + def _require_running(self, action: str) -> None: if self.status != "running": raise StagingContractError( @@ -1340,114 +1356,118 @@ def _upload_paths(self) -> list[tuple[Path, str]]: ) return paths - def _upload_path( - self, - local_path: Path, - remote_path: str, - *, - count_delivery: bool, - ) -> bool: - if self._upload_session is None: - return False - data = local_path.read_bytes() - self._content_policy.validate_remote_file(remote_path, data) - result = self._upload_session.upload( - local_path, - remote_path, - count=count_delivery, - ) - self._delivery["upload_attempts"] = self._upload_session.attempts - self._delivery["upload_successes"] = self._upload_session.successes - self._consecutive_upload_failures = self._upload_session.consecutive_failures - self._remote_disabled = not self._upload_session.enabled + def _record_delivery(self) -> None: + """Copy the emitter's counts, and the last hand-over's outcome, locally.""" + hand_over = self._hand_over + if hand_over is None: + return + attempts = hand_over.files_attempted + self._delivery["upload_attempts"] = attempts + self._delivery["upload_successes"] = min(hand_over.files_committed, attempts) # Once read-back has given its verdict, the verdict owns the error # code: the delivery contract ties a passed read-back to no error and - # a failed one to READ_BACK_FAILED, so a later refresh upload, failed - # or not, cannot rewrite it (microcosm#1301). A failed refresh stays - # visible as an attempt without a success. - owns_error = self._delivery["read_back"] == "not_requested" - if not result.succeeded: - if owns_error: - self._delivery["last_error_code"] = "UPLOAD_FAILED" + # a failed one to READ_BACK_FAILED, so a later refresh, delivered or + # not, cannot rewrite it (microcosm#1301). A refresh the emitter did + # not accept stays visible as an attempt without a success. + if self._delivery["read_back"] != "not_requested": + return + failed = hand_over.last_accepted is False or ( + hand_over.last_error_code is not None + ) + self._delivery["last_error_code"] = "UPLOAD_FAILED" if failed else None + + def _hand_over_files(self, files: list[tuple[str, Path]], *, flush: bool) -> bool: + assert self._hand_over is not None + result = self._hand_over.hand_over(files, flush=flush) + if not result.accepted: + warn_hand_over_failure(self._hand_over.repository, result) + if result.became_paused: print( - f"warning: staging upload failed for {remote_path}", + "warning: pausing staging hand-overs after three in a row " + "failed; local telemetry continues.", file=sys.stderr, ) - if result.became_disabled: - print( - "warning: pausing remote staging writes after three " - "consecutive failures; local telemetry continues.", - file=sys.stderr, - ) - else: - if owns_error: - self._delivery["last_error_code"] = None - return True - return False - - def _reconcile_remote_delivery_metadata(self) -> None: - """Refresh counter-bearing metadata without counting these two writes.""" - - for filename in ("run_manifest.json", "progress.json"): - if self._remote_disabled: - break - self._persist_bundle() - self._upload_path( - self.run_dir / filename, - f"{self.repo_run_prefix}/{filename}", - count_delivery=False, - ) - self._persist_bundle() - - #: Delays before each terminal upload attempt. Mid-run, three consecutive - #: failures pause remote writes for the rest of the run so a rate-limited - #: Hub is not hammered; the terminal state is different: a run whose remote - #: copy stays "running" forever is the last-mile gap the v20 national run - #: met (its final state was delivered by hand), so completion and failure - #: re-open the session for a bounded, backed-off final flush. - _TERMINAL_UPLOAD_DELAYS: tuple[float, ...] = (0.0, 15.0, 60.0) + return result.accepted def _terminal_upload(self) -> None: - """Deliver the terminal state even after failures paused remote writes.""" + """Hand over the final state even after failures paused hand-overs. + + Mid-run, three hand-overs in a row that the emitter does not accept + pause them for the rest of the run, so a missing or stalled emitter + cannot slow the build. The final state is different: a run whose + remote copy stays "running" forever is the last-mile gap the v20 + national run met (its final state was delivered by hand), so + completion, failure and a refusal by the validation checks hand it + over once more. The emitter retries its commits itself. + """ - if self._transport is None or self._upload_session is None: + if self._hand_over is None: return - for delay in self._TERMINAL_UPLOAD_DELAYS: - if delay > 0.0: - self._sleep(delay) - self._upload_session.reopen() - self._remote_disabled = False - self._consecutive_upload_failures = 0 - self._maybe_upload(force=True) - if ( - not self._remote_disabled - and self._delivery["last_error_code"] != "UPLOAD_FAILED" - ): - return - print( - "warning: the staging run's terminal state did not reach " - f"{self.repo_id} after {len(self._TERMINAL_UPLOAD_DELAYS)} attempts; " - "the local bundle is complete.", - file=sys.stderr, - ) + self._hand_over.reopen() + self._maybe_upload(force=True) + if self._hand_over.last_accepted is False: + print( + "warning: the staging run's final state was not handed over to " + f"the local emitter for {self.repo_id}; the local bundle is " + "complete.", + file=sys.stderr, + ) def _maybe_upload(self, *, force: bool = False) -> None: - if self._transport is None or self._remote_disabled: + hand_over = self._hand_over + if hand_over is None or not hand_over.enabled: return now = self._monotonic() if not force and now - self._last_upload_at < self.upload_interval_seconds: return self._last_upload_at = now + # The documents carry the emitter's counts as of this hand-over. + hand_over.receipt() + self._record_delivery() + self._persist_bundle() + prefix = f"{self.repo_run_prefix}/" + files = [] for local_path, remote_path in self._upload_paths(): - self._upload_path( - local_path, - remote_path, - count_delivery=True, + self._content_policy.validate_remote_file( + remote_path, local_path.read_bytes() ) - if self._remote_disabled: - break + files.append((remote_path.removeprefix(prefix), local_path)) + handed_over = dict(self._delivery) + self._hand_over_files(files, flush=force) + self._record_delivery() + if self._delivery == handed_over: + return self._persist_bundle() - self._reconcile_remote_delivery_metadata() + if not hand_over.last_accepted or not hand_over.enabled: + return + # The hand-over changed what the documents report (the emitter + # committed, or an earlier failure cleared): hand the two documents + # that carry the delivery over again, so the remote copy matches. + self._hand_over_files( + [ + ("run_manifest.json", self.run_dir / "run_manifest.json"), + ("progress.json", self.run_dir / "progress.json"), + ], + flush=force, + ) + if hand_over.last_accepted is False: + self._record_delivery() + self._persist_bundle() + + +def _read_back_failure(result: Mapping[str, Any]) -> str: + """Describe a failed read-back from the emitter's answer, without secrets.""" + status = result.get("status") + mismatched = [str(path) for path in result.get("mismatched_paths") or []] + if mismatched: + detail = "the Hub's copies differ from the committed bytes: " + ", ".join( + mismatched + ) + elif result.get("error_code"): + detail = f"the emitter reported {status} ({result['error_code']})" + else: + detail = f"the emitter reported {status}" + return f"Authenticated staging read-back failed: {detail}." def validate_staging_bundle( diff --git a/packages/microcosm-build/src/microcosm/build/telemetry_emitter.py b/packages/microcosm-build/src/microcosm/build/telemetry_emitter.py index 31f3c893ef..e40358a456 100644 --- a/packages/microcosm-build/src/microcosm/build/telemetry_emitter.py +++ b/packages/microcosm-build/src/microcosm/build/telemetry_emitter.py @@ -1,58 +1,177 @@ -"""Microcosm metadata adapter for the independently packaged local emitter.""" +"""Microcosm's build adapter for the separately installed local emitter. + +A build imports only ``microcosm-emitter-interface``. Starting the adapter +starts the ``microcosm-emitter`` command, installed on its own (for example +``uv tool install microcosm-emitter``), as this build's child process, with +three modules: telemetry, Orrery graph publication, and the Hugging Face +hand-over of staging run files. The interface finds the command through +``MICROCOSM_EMITTER_COMMAND``, then ``PATH``. + +The child inherits the build's environment variables and runs as the same +user, so it finds the build's Hugging Face credential (``HF_TOKEN``, then +``HUGGINGFACE_TOKEN``, then the token saved by ``hf auth login``). Its module +settings travel on its standard input, never in environment variables or +process arguments. No call raises into the build: a missing, slow, +refusing or outdated emitter leaves the build running without it. + +The adapter never starts an emitter older than ``MINIMUM_EMITTER_VERSION``. +It reads the version from ``microcosm-emitter version`` first, because the +emitter's telemetry module records the run's start as soon as the emitter +starts, before its ``hello`` answer can name its release. +""" from __future__ import annotations +import json +import re +import subprocess import sys -from collections.abc import Mapping +from collections.abc import Mapping, Sequence from pathlib import Path from typing import Any -from microcosm_emitter.host.launcher import start_services -from microcosm_emitter.orrery.client import ( - GraphPublicationClient, +from microcosm_emitter_interface import ( + EmitterClient, + HuggingFaceSettings, + OrrerySettings, + TelemetryRun, + TelemetrySettings, default_spool_path, - publish_graph, ) -from microcosm_emitter.orrery.contracts import ( +from microcosm_emitter_interface.launcher import resolve_command +from microcosm_emitter_interface.orrery import ( PublicationFileRole, PublicationInventory, PublicationReceipt, + publication_id_of, + unavailable_receipt, ) -from microcosm_emitter.telemetry.client import ( - LocalTelemetryEmitter as EmitterTelemetryClient, -) -from microcosm_emitter.telemetry.client import ( - TelemetryRun, -) -from microcosm_emitter.telemetry.constants import ( +from microcosm_emitter_interface.telemetry import ( + DEFAULT_FAILURE_CLASS, DEFAULT_HEARTBEAT_SECONDS, - SERVICE_START_WARNING, + TelemetryEventType, + TelemetryStatus, ) from microcosm.build.telemetry_identity import runtime_identity +__all__ = [ + "DEFAULT_HEARTBEAT_SECONDS", + "MINIMUM_EMITTER_VERSION", + "EmitterClient", + "LocalTelemetryEmitter", + "TelemetryRun", + "publication_inventory", + "publish_graph", + "start_local_telemetry_emitter_service", +] + +SETUP_WARNING = ( + "Local Microcosm emitter was not started ({error_type}); the build will continue." +) +#: The emitter took about four seconds to become ready on an M1 Max; this is +#: only a ceiling on the wait. +STARTUP_TIMEOUT_SECONDS = 15.0 +#: The first emitter release with everything a build hands over: the Hugging +#: Face module (``stage_run_files``, ``run_files_receipt`` and +#: ``read_back_run_files``) and its queue in ``events.handovers.sqlite3``. +#: Releases 0.4.0 to 0.5.1 accept the same protocol version but start without +#: that module; 0.7.0 added only release publication, which builds do not use. +MINIMUM_EMITTER_VERSION = "0.6.0" +OUTDATED_EMITTER_WARNING = ( + "The installed microcosm-emitter {reported}; this build needs {required} " + "or later, so it did not start that emitter and will continue without it. " + "Upgrade it with `uv tool install --upgrade 'microcosm-emitter>={required}'`, " + "or point MICROCOSM_EMITTER_COMMAND at a newer one." +) +_RELEASE_NUMBER = re.compile(r"(\d+)\.(\d+)\.(\d+)") +_MINIMUM_RELEASE = tuple(int(part) for part in MINIMUM_EMITTER_VERSION.split(".")) + + +def _release_number(version: object) -> tuple[int, ...] | None: + """``(major, minor, patch)`` of a release version, or None if it has none.""" + found = _RELEASE_NUMBER.match(version) if isinstance(version, str) else None + return None if found is None else tuple(int(part) for part in found.groups()) + + +def _installed_emitter_version(command: str, timeout: float) -> str | None: + """The release ``command version`` reports, or None without a usable answer. + + ``microcosm-emitter version`` (every release since 0.4.0, the first with + the command) prints the same description as the emitter's ``hello`` + answer, and starts none of its modules. + """ + try: + answer = subprocess.run( + [command, "version"], + stdin=subprocess.DEVNULL, + capture_output=True, + text=True, + timeout=timeout, + check=False, + ) + description = json.loads(answer.stdout) if answer.returncode == 0 else None + except Exception: + return None + version = ( + description.get("emitter_version") if isinstance(description, dict) else None + ) + return version if isinstance(version, str) else None + -class LocalTelemetryEmitter(EmitterTelemetryClient): - """Supply build identity and select both workers in one emitter process.""" +def _start_emitter(**options: Any) -> EmitterClient: + """Start the installed emitter, unless it is older than the minimum. + + The emitter's telemetry module records the run's start as soon as the + emitter starts, before ``hello`` can name its release, so the release is + read from ``microcosm-emitter version`` first. An emitter stopped after + starting would leave the collector a run that started and never + finished. An outdated emitter is never started: the client returned is + unavailable, so every call reports that. A missing command is left to + ``EmitterClient.start``, which reports it. + """ + try: + command = resolve_command() + except Exception: + return EmitterClient.start(**options) + timeout = options.get("startup_timeout", STARTUP_TIMEOUT_SECONDS) + version = _installed_emitter_version(command, timeout) + installed = _release_number(version) + if installed is not None and installed >= _MINIMUM_RELEASE: + return EmitterClient.start(command=command, **options) + reported = "reports no version" if version is None else f"reports version {version}" + print( + OUTDATED_EMITTER_WARNING.format( + reported=reported, required=MINIMUM_EMITTER_VERSION + ), + file=sys.stderr, + ) + return EmitterClient() + + +class LocalTelemetryEmitter: + """One build's emitter: its telemetry run and the client that reaches it. + + ``client`` is the interface's ``EmitterClient`` for the emitter this build + started, or ``None`` when the build could not prepare one. Staging writers + hand their run files to the same client. + + Recording the run's outcome (``complete``, ``fail`` or ``block``) shuts + the emitter down unless ``close_service_on_finish`` is false; a build that + still hands work over afterwards passes false and calls ``close``. + """ def __init__( self, *, - run, - transport, - handle=None, - graph_client=None, + run: TelemetryRun, + client: EmitterClient | None, close_service_on_finish: bool = True, - ): - super().__init__( - run=run, - transport=transport, - handle=handle, - close_service_on_finish=close_service_on_finish, - ) - self._graph_client = ( - graph_client if graph_client is not None else GraphPublicationClient() - ) + ) -> None: + self.run = run + self.client = client + self._close_service_on_finish = close_service_on_finish + self._closed = False @classmethod def start( @@ -66,12 +185,11 @@ def start( run_kind: str = "build", development_collector_url: str | None = None, heartbeat_seconds: float = DEFAULT_HEARTBEAT_SECONDS, - # The service took about four seconds to become ready on an M1 Max, - # past the provider's three-second default; this is only a ceiling. - startup_timeout_seconds: float = 15.0, + startup_timeout_seconds: float = STARTUP_TIMEOUT_SECONDS, spool_path: Path | str | None = None, close_service_on_finish: bool = True, ) -> LocalTelemetryEmitter: + """Start the installed emitter; a failure leaves an unavailable adapter.""" run = TelemetryRun( run_id=run_id, country_code=country_code, @@ -83,45 +201,168 @@ def start( try: path = Path(spool_path) if spool_path else default_spool_path() identity = runtime_identity() - shared = { - "spool_path": str(path), - "development_collector_url": development_collector_url, - } - handle = start_services( - { - "telemetry": { - **shared, - "registration": run.as_registration(), - "identity": identity, - "heartbeat_seconds": heartbeat_seconds, - }, - "orrery": shared, - }, - startup_timeout=startup_timeout_seconds, - ) except Exception as error: print( - SERVICE_START_WARNING.format(error_type=type(error).__name__), + SETUP_WARNING.format(error_type=type(error).__name__), file=sys.stderr, ) return cls( - run=run, - transport=None, - close_service_on_finish=close_service_on_finish, + run=run, client=None, close_service_on_finish=close_service_on_finish ) + client = _start_emitter( + telemetry=TelemetrySettings( + run=run, + identity=identity, + development_collector_url=development_collector_url, + heartbeat_seconds=heartbeat_seconds, + ), + orrery=OrrerySettings(development_collector_url=development_collector_url), + # Its queue is the hand-over database beside the spool database + # (``events.handovers.sqlite3``), so emitters of every release can + # share the spool database on one machine. + hugging_face=HuggingFaceSettings(), + spool_path=path, + startup_timeout=startup_timeout_seconds, + ) return cls( - run=run, - transport=handle.client.for_module("telemetry"), - handle=handle, - graph_client=GraphPublicationClient(handle.client.for_module("orrery")), - close_service_on_finish=close_service_on_finish, + run=run, client=client, close_service_on_finish=close_service_on_finish ) + @property + def available(self) -> bool: + """Whether this build's emitter is running and not yet closed.""" + return self.client is not None and self.client.available and not self._closed + + def _telemetry(self): + return self.client.telemetry if self.available else None + + def emit( + self, + *, + event_type: TelemetryEventType, + status: TelemetryStatus, + stage_id: str | None = None, + message: str | None = None, + details: Mapping[str, Any] | None = None, + ) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.emit( + event_type=event_type, + status=status, + stage_id=stage_id, + message=message, + details=details, + ) + + def stage( + self, + stage_id: str, + *, + status: TelemetryStatus = "started", + message: str | None = None, + **details: Any, + ) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.stage(stage_id, status=status, message=message, **details) + + def transition_stage( + self, + stage_id: str, + *, + status: str = "running", + message: str | None = None, + **details: Any, + ) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.transition_stage( + stage_id, status=status, message=message, **details + ) + + def progress( + self, + stage_id: str, + *, + done: int, + total: int, + unit: str | None = None, + **details: Any, + ) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.progress(stage_id, done=done, total=total, unit=unit, **details) + + def calibration_progress(self, event: Mapping[str, Any]) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.calibration_progress(event) + + def transition_calibration_progress(self, event: Mapping[str, Any]) -> None: + if (telemetry := self._telemetry()) is not None: + telemetry.transition_calibration_progress(event) + + def fail( + self, + error: BaseException, + *, + failed_during: str | None = None, + failure_class: str = DEFAULT_FAILURE_CLASS, + error_code: str | None = None, + ) -> None: + try: + if (telemetry := self._telemetry()) is not None: + telemetry.fail( + error, + failed_during=failed_during, + failure_class=failure_class, + error_code=error_code, + ) + finally: + self._finish() + + def block( + self, + *, + phase: str, + blocking_gate_ids: Sequence[str], + blocking_failure_count: int | None = None, + gate_statuses: Mapping[str, str] | None = None, + ) -> None: + """Record that the build's validation checks refused its candidate.""" + try: + if (telemetry := self._telemetry()) is not None: + telemetry.refuse( + phase=phase, + refusing_check_ids=list(blocking_gate_ids), + refusing_check_count=blocking_failure_count, + check_statuses=gate_statuses, + ) + finally: + self._finish() + + def complete(self) -> None: + try: + if (telemetry := self._telemetry()) is not None: + telemetry.complete() + finally: + self._finish() + + def _finish(self) -> None: + if self._close_service_on_finish: + self.close() + + def close(self) -> None: + """Ask the emitter to finish its hand-overs and stop; repeats do nothing.""" + if self._closed: + return + self._closed = True + if self.client is not None: + self.client.close() + def publication_inventory( self, directory: Path, roles: Mapping[str, PublicationFileRole] ) -> PublicationInventory | None: - """Ask the existing graph worker to measure selected public files.""" - return self._graph_client.inventory(directory, roles) + """Ask this build's emitter to measure selected public files.""" + if not self.available: + return None + return self.client.orrery_inventory(directory, roles) def publish_graph( self, @@ -130,14 +371,52 @@ def publish_graph( *, wait_seconds: float = 30.0, ) -> PublicationReceipt: - return publish_graph( - directory, - inventory, - client=self._graph_client, - wait_seconds=wait_seconds, + """Queue the measured files; wait only after the emitter queued them.""" + if not self.available: + return unavailable_receipt(publication_id_of(inventory)) + return self.client.hand_over_orrery_inputs( + directory, inventory, wait_seconds=wait_seconds + ) + + +def _orrery_emitter() -> EmitterClient: + """A short-lived emitter that runs only the Orrery module.""" + return _start_emitter( + orrery=OrrerySettings(), startup_timeout=STARTUP_TIMEOUT_SECONDS + ) + + +def publication_inventory( + directory: Path, roles: Mapping[str, PublicationFileRole] +) -> PublicationInventory | None: + """Measure graph files when the build has no emitter of its own.""" + client = _orrery_emitter() + try: + return client.orrery_inventory(directory, roles) + finally: + client.close() + + +def publish_graph( + directory: Path, + inventory: PublicationInventory, + *, + wait_seconds: float = 30.0, +) -> PublicationReceipt: + """Queue graph files when the build has no emitter of its own. + + The emitter's queue is durable, so a pending job is delivered by a later + emitter or by ``microcosm-emitter-publish-graph``. + """ + client = _orrery_emitter() + try: + return client.hand_over_orrery_inputs( + directory, inventory, wait_seconds=wait_seconds ) + finally: + client.close() def start_local_telemetry_emitter_service(**run: Any) -> LocalTelemetryEmitter: - """Construct the build adapter without importing emitter service internals.""" + """Start this build's emitter through the interface.""" return LocalTelemetryEmitter.start(**run) diff --git a/packages/microcosm-build/src/microcosm/build/transport/compose.py b/packages/microcosm-build/src/microcosm/build/transport/compose.py index daa90a6e50..620bbd4794 100644 --- a/packages/microcosm-build/src/microcosm/build/transport/compose.py +++ b/packages/microcosm-build/src/microcosm/build/transport/compose.py @@ -68,7 +68,7 @@ import hashlib import json import re -from collections.abc import Iterator, Mapping, Sequence +from collections.abc import Iterable, Iterator, Mapping, Sequence from dataclasses import dataclass, replace from importlib.resources import files from pathlib import Path @@ -1004,6 +1004,54 @@ def _reference_activation_gaps( yield gap +_HOLDOUT_REFERENCES = "holdout_references" + + +def _holdout_separation_gaps( + documents: Iterable[tuple[str, Mapping]], +) -> Iterator[str]: + """Name every non-holdout row that measures a declared holdout's concept. + + A holdout row tests the calibrated model against a fact it never saw, so + no other reference document may carry a row with the same ``measure``, + whatever its entity. Only rows of ``holdout_references`` count as + holdouts; a spec without that document has nothing to guard. + """ + + documents = tuple(documents) + holdouts: dict[str, list[Mapping]] = {} + for resource, document in documents: + if resource != _HOLDOUT_REFERENCES: + continue + for row in document.get("target_references", ()): + if isinstance(row, Mapping) and _is_text(row.get("measure")): + holdouts.setdefault(row["measure"], []).append(row) + if not holdouts: + return + seen = set() + for resource, document in documents: + if resource == _HOLDOUT_REFERENCES: + continue + for row in document.get("target_references", ()): + if ( + not isinstance(row, Mapping) + or not _is_text(row.get("measure")) + or row["measure"] not in holdouts + ): + continue + for holdout in holdouts[row["measure"]]: + gap = ( + f"holdout separation: {resource}.{row.get('name', '?')} " + f"({row.get('entity', '?')}, {row['measure']}) measures " + f"the concept of {_HOLDOUT_REFERENCES}." + f"{holdout.get('name', '?')} " + f"({holdout.get('entity', '?')}, {holdout['measure']})" + ) + if gap not in seen: + seen.add(gap) + yield gap + + def _reference_selections(spec: Mapping[str, object]) -> dict[str, dict]: if not _has_resource(spec, "reference_selection"): return {} @@ -1445,6 +1493,8 @@ def validate_transport_activation(spec: Mapping[str, object]) -> None: Selections inside parameter lists count; selected resource data is literal. Entitlement selections use the factory's instantiated rows, so explicit scenario nodes replace their tier templates during preflight too. + No row of another reference document, mass included, may share a + ``holdout_references`` row's measure on any entity. """ missing = [] @@ -1537,11 +1587,13 @@ def validate_transport_activation(spec: Mapping[str, object]) -> None: ) reference_resources.update(reference_selections) checked_reference_views = set() + separation_views = [] for resource in sorted(reference_resources): if not _has_resource(spec, resource): missing.append(f"{resource}.json") continue document = transport_resource(spec, resource) + separation_views.append((resource, document)) identity = hashlib.sha256(canonical_json(document)).hexdigest() checked_reference_views.add((resource, identity)) missing.extend( @@ -1553,7 +1605,15 @@ def validate_transport_activation(spec: Mapping[str, object]) -> None: measurement_refusals, ) ) + # The mass document is a calibration input even when no node selects it. + if "mass_references" not in reference_resources and _has_resource( + spec, "mass_references" + ): + separation_views.append( + ("mass_references", transport_resource(spec, "mass_references")) + ) for (resource, identity), document in selected_reference_views.items(): + separation_views.append((resource, document)) if (resource, identity) not in checked_reference_views: missing.extend( _reference_activation_gaps( @@ -1564,6 +1624,7 @@ def validate_transport_activation(spec: Mapping[str, object]) -> None: measurement_refusals, ) ) + missing.extend(_holdout_separation_gaps(separation_views)) receipt = ( transport_resource(spec, "receipt_contract") if _has_resource(spec, "receipt_contract") @@ -2932,6 +2993,8 @@ def _precalibration_stages(spec: Mapping[str, object]) -> dict[str, Mapping]: else () ) holdout_columns = {(row["entity"], row["measure"]) for row in holdout} + # A stage output measures a holdout's concept on any entity. + holdout_measures = {row["measure"]: row for row in holdout} holdout_modules = { row["rulespec_path"] for row in bindings.values() @@ -3035,8 +3098,15 @@ def _precalibration_stages(spec: Mapping[str, object]) -> dict[str, Mapping]: "precalibration_stages outputs must be nonempty and distinct." ) columns.add(column) - if columns & holdout_columns: - raise ValueError("precalibration_stages output is a holdout measure.") + for entity, column in sorted(columns): + if column in holdout_measures: + holdout_row = holdout_measures[column] + raise ValueError( + "precalibration_stages output is a holdout measure: stage " + f"{identifier!r} output ({entity}, {column}) measures the " + f"concept of holdout_references.{holdout_row.get('name', '?')} " + f"({holdout_row['entity']}, {holdout_row['measure']})." + ) if stage["rulespec_path"] in holdout_modules: raise ValueError("precalibration_stages module produces a holdout measure.") result[name] = stage 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 e0110781d4..c51481ee28 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 @@ -41,7 +41,8 @@ "hmrc.spi.private_pension_income.count_by_total_income_band", "hmrc.spi.state_pension.count_by_total_income_band", "hmrc.spi.savings_interest_income.count_by_total_income_band", - "hmrc.spi.self_employment_income.count_by_self_employment_income_band" + "hmrc.spi.self_employment_income.count_by_self_employment_income_band", + "hmrc.spi.employment_income.count_by_self_employment_income_band" ], "max_dropped_rows": 2, "max_dropped_published_share": 0.01 @@ -76,7 +77,7 @@ "reason": "Zero-support floor: a row in one of the floor's scopes (the UC payment-distribution and benefit-cap amount bands, the HMRC SPI income bands by total income and SPI Table 3.10's self-employment income bands, and the band-H council-tax rows by English region) whose compiled matrix row reaches no source household (household_source_id) with a positive prior weight cannot be fitted by any weights (the solver's initialiser refuses a nonzero target with no support), so it is dropped from the solve, not pooled. A row that some households carry stays bound however few they are; when one or two distinct source households carry it, its model figures are withheld from every written surface (CD171's absolute floor of three, receipt_counts.UK_DISCLOSURE_FLOOR, to which María's ruling of 2026-10-29 moved the floor of ten). Each scope holds one unit, because its share ceiling sums published values. The floor's receipt reports each target's dropped published total and each scope's dropped share, and the run refuses when a scope's drops pass either of its ceilings or when a per-row exclusion names a row the floor drops.", "tracking": "microcosm#1095", "approved_by": "juaristi22", - "adjudication": "microcosm#1095 U3, ruled 2026-10-16 with the fifth ports PR (floor 10) and revised 2026-10-21 with #1333: a cell that rests on fewer than 10 records is no reason to leave a row out, only a measured distortion of the calibration is. The floor drops only rows no household carries, the benefit-cap amount bands join its scope and their per-row entries retire, and the figures of rows under 10 source households are withheld, as the BRMA rows' are (under three since María's ruling of 2026-10-29). The thirteen entries it retired (the eleven benefit-cap amount bands and the two HMRC £500k to £1m cells) and the A/B that retired them: experiments/1095-uk-thin-row-binding-receipts.md. Extended on 2026-10-22 (María's ruling on the next policyengine-uk bump) to the HMRC SPI income-band families and the band-H council-tax rows by region, in scopes of one unit each with their own ceilings. On #1333's policyengine-uk 2.145.0 spine every HMRC £1m-and-over cell and every band-H region cell has carriers. The three band-H region entries retire and their rows bind, with their figures withheld where fewer than 10 source households carry them (fewer than three since María's ruling of 2026-10-29, receipt_counts.UK_DISCLOSURE_FLOOR); the ten HMRC £1m-and-over cells, bound on arm 1, distorted their neighbours and stay held on that measurement, so the HMRC scopes cover the bands below them. Extended on 2026-10-29 in microcosm#1420, in answer to the independent review's finding 7 and pending María's confirmation, to the SPI families microcosm#1418 binds, Table 3.7's other income by total-income band and Table 3.10's self-employment bands from GBP 1 to GBP 10,000: a row of theirs that no household carries is dropped and receipted as its siblings' rows are, not refused. The ceilings are unchanged, so the HMRC amounts scope's 2-row cap, signed for seven families, now covers nine, and the counts scope's, signed for seven, now covers eight; María confirms or re-sizes them (the re-reviews of microcosm#1420, H and 4).", + "adjudication": "microcosm#1095 U3, ruled 2026-10-16 with the fifth ports PR (floor 10) and revised 2026-10-21 with #1333: a cell that rests on fewer than 10 records is no reason to leave a row out, only a measured distortion of the calibration is. The floor drops only rows no household carries, the benefit-cap amount bands join its scope and their per-row entries retire, and the figures of rows under 10 source households are withheld, as the BRMA rows' are (under three since María's ruling of 2026-10-29). The thirteen entries it retired (the eleven benefit-cap amount bands and the two HMRC £500k to £1m cells) and the A/B that retired them: experiments/1095-uk-thin-row-binding-receipts.md. Extended on 2026-10-22 (María's ruling on the next policyengine-uk bump) to the HMRC SPI income-band families and the band-H council-tax rows by region, in scopes of one unit each with their own ceilings. On #1333's policyengine-uk 2.145.0 spine every HMRC £1m-and-over cell and every band-H region cell has carriers. The three band-H region entries retire and their rows bind, with their figures withheld where fewer than 10 source households carry them (fewer than three since María's ruling of 2026-10-29, receipt_counts.UK_DISCLOSURE_FLOOR); the ten HMRC £1m-and-over cells, bound on arm 1, distorted their neighbours and stay held on that measurement, so the HMRC scopes cover the bands below them. Extended on 2026-10-29 in microcosm#1420, in answer to the independent review's finding 7 and pending María's confirmation, to the SPI families microcosm#1418 binds, Table 3.7's other income by total-income band and Table 3.10's self-employment bands from GBP 1 to GBP 10,000: a row of theirs that no household carries is dropped and receipted as its siblings' rows are, not refused. The ceilings are unchanged, so the HMRC amounts scope's 2-row cap, signed for seven families, now covers nine, and the counts scope's, signed for seven, now covers eight; María confirms or re-sizes them (the re-reviews of microcosm#1420, H and 4). Extended on 2026-11-01 in microcosm#1428, in answer to its independent review's finding 11, to Table 3.10's employment-income counts by self-employment band, which #1428 binds over the same bands: a row of theirs no household carries is dropped and receipted, not refused. The counts scope's 2-row cap now covers nine families.", "approved_on": "2026-10-22", "expires_on": "2027-01-08" }, @@ -171,6 +172,15 @@ "approved_on": "2026-10-23", "expires_on": "2027-01-23" }, + { + "name": "hmrc.spi.savings_interest_income.amount_by_total_income_band.band_1000000", + "reason": "Measured distortion, not thin support, as for the ten HMRC £1m-and-over cells (María's rule of 2026-10-21). With the SPI donors' interest and other income rebased to SPI's 2023-24 bands (microcosm#1428), the first national built from f3cb3ddd3 fitted every other interest and other-income band, the £1m-and-over other-income row included, and missed this row outside the uk_target_fit band. Held out of the objective and measured on every evaluation. The row rests on the SPI Public Use Tape, so its figures and its neighbours' stay out of this register.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "adjudication": "María's ruling of 2026-10-30 on the savings follow-up (microcosm#1428): hold the £1m-and-over savings interest amount row as a measured distortion, rebuild the national on the same spine and score it; how the rebase sits in the top bands at design weights is a follow-up.", + "approved_on": "2026-10-30", + "expires_on": "2027-01-30" + }, { "name": "slc.repayments.england_plan_5", "reason": "Structural under-support: the student-loans stage tops Plan 5 up to SLC's liable stock, which binds, and fewer than ten source households carry Plan 5 repayments on #1333's 2.145.0 spine, so no weights reach SLC's repayment figure; the row's model figures are withheld.", diff --git a/packages/microcosm-build/src/microcosm/build/uk/country_package.json b/packages/microcosm-build/src/microcosm/build/uk/country_package.json index 63b49d38ed..c50932797c 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/country_package.json +++ b/packages/microcosm-build/src/microcosm/build/uk/country_package.json @@ -162,6 +162,11 @@ "kind": "legacy_json", "schema_id": "legacy_json" }, + { + "path": "hmrc_spi_table_3_7_savings_rows.json", + "kind": "legacy_json", + "schema_id": "legacy_json" + }, { "path": "slc_liable_stocks.json", "kind": "legacy_json", diff --git a/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json b/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json index d751cd670f..89c17c9608 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json +++ b/packages/microcosm-build/src/microcosm/build/uk/cross_grain_declarations.json @@ -1074,10 +1074,11 @@ }, { "targets": [ + "hmrc.spi.employment_income.count_by_self_employment_income_band", "hmrc.spi.self_employment_income.amount_by_self_employment_income_band", "hmrc.spi.self_employment_income.count_by_self_employment_income_band" ], - "reason": "Banded by groupby on the person's own self-employment income after loss relief, SPI Table 3.10's range; the band is the fan-out dimension, not a measurement filter, and Table 3.10 counts taxpayers and non-taxpayers alike. Bound from GBP 1 to GBP 10,000 only, the bands above stay with Table 3.6's self-employment rows by total income, so the two tables do not pull against each other (microcosm#1418)." + "reason": "Banded by groupby on the person's own self-employment income after loss relief, SPI Table 3.10's range; the band is the fan-out dimension, not a measurement filter, and Table 3.10 counts taxpayers and non-taxpayers alike; its employment-income count adds the year's pay with its company car benefits (employment_income_with_benefits_in_kind_annual) as a filter over the same bands. Bound from GBP 1 to GBP 10,000 only, the bands above stay with Table 3.6's self-employment rows by total income, so the two tables do not pull against each other (microcosm#1418)." } ] } diff --git a/packages/microcosm-build/src/microcosm/build/uk/gates.json b/packages/microcosm-build/src/microcosm/build/uk/gates.json index bd59208bb4..6bcfb151ec 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/gates.json +++ b/packages/microcosm-build/src/microcosm/build/uk/gates.json @@ -637,7 +637,7 @@ "check": "uc_take_up", "maximum_caseload_deviation": 0.055 }, - "notes": "Stage-time gate over the Universal Credit take-up receipt (microcosm#1334): every reporter claims and no unit outside the draw changes; in each DWP family type the pools whose target is reachable realize DWP's calendar-2025 caseload within 0.055 of it at the stage's weights, Great Britain only, counting units the engine moves off their legacy benefits at their expected claim at the closure; and the family type's caseload is no further from DWP's than before the redraw, give or take 0.055 of DWP's count. The tolerance was 0.05 until microcosm#1418: routing gilt interest out of dividend_income reshuffles the SPI channel's draws. On the spine of 2026-10-28 (da944f12c), single people's caseload ends 0.0523 of DWP's count further from it than before the redraw (0.0486 on the spine before, 3c0d11b6's), so 0.055 holds it with about 8,000 to spare; couples without children, lone parents and couples with children end closer than before by 0.53, 0.054 and 0.42 of their counts, and every family type's reachable pools realize DWP's count within 0.0015. The terminal take-up signal gate no longer measures would_claim_uc, whose rate is now set by award band and family type, not as one share of the age population." + "notes": "Stage-time gate over the Universal Credit take-up receipt (microcosm#1334): every reporter claims and no unit outside the draw changes; in each DWP family type the pools whose target is reachable realize DWP's calendar-2025 caseload within 0.055 of it at the stage's weights, Great Britain only, counting units the engine moves off their legacy benefits at their expected claim at the closure; and the family type's caseload is no further from DWP's than before the redraw, give or take 0.055 of DWP's count. The tolerance was 0.05 until microcosm#1418: routing gilt interest out of dividend_income reshuffles the SPI channel's draws. In the savings follow-up (microcosm#1428), small upstream changes moved single people's GBP 1,000 to 1,100 band into a pool whose DWP count exceeds its entitled units, and the family type's caseload ended 0.0568, then 0.0674, of DWP's count further from it than before the redraw. The stage now joins a pool that cannot meet its count to the adjacent pool with more room for its gap, so a family type's caseload lands on DWP's wherever its entitled units allow, and the tolerance stays at 0.055 (María's ruling of 2026-10-31). The terminal take-up signal gate no longer measures would_claim_uc, whose rate is now set by award band and family type, not as one share of the age population." }, { "id": "uk_stage_pension_credit_take_up", @@ -1347,6 +1347,8 @@ "person.private_pension_income_annual_share", "person.self_employment_income_annual_share", "person.self_employment_income_other_spells", + "person.self_employment_gross_receipts", + "person.annuity_and_trust_income", "person.esa_health_condition_proxy", "person.esa_includes_support_component", "person.esa_support_group_proxy", diff --git a/packages/microcosm-build/src/microcosm/build/uk/hmrc_spi_table_3_7_savings_rows.json b/packages/microcosm-build/src/microcosm/build/uk/hmrc_spi_table_3_7_savings_rows.json new file mode 100644 index 0000000000..9e2558783c --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk/hmrc_spi_table_3_7_savings_rows.json @@ -0,0 +1,1217 @@ +{ + "schema_version": 1, + "country": "uk", + "kind": "uk_vendored_ledger_facts", + "resource": "hmrc_spi_table_3_7_savings_rows.json", + "purpose": "HMRC Survey of Personal Incomes 2023-24, Table 3.7 (income by source and range of total income, taxpayers): the United Kingdom interest from banks and building societies and other income amounts in each of the 13 total-income bands. Consumed by the SPI income stage, which rebases each donor's interest and other income from the 2022-23 tape to these 2023-24 amounts band by band before the OBR's savings income growth carries them to the frame's year (microcosm#1418 savings follow-up).", + "consumers": [ + "uk_runtime.spi_income" + ], + "planned_consumers": [], + "policy": "Rows are copied verbatim from the pinned Chronicle consumer feed named in source_fact_feed; every value is a publisher-stated fact. Consumers declare their own arithmetic on these rows and never edit this file by hand: regenerate it with tools/vendor_uk_ledger_facts.py.", + "generator": { + "tool": "tools/vendor_uk_ledger_facts.py", + "version": 1 + }, + "source_fact_feed": { + "source_repo": "PolicyEngine/chronicle", + "source_commit": "08962f1b893fc1ba3b7bdd3d800c7e867318951a", + "build": "build-bundle --suite uk -> build-consumer-artifact", + "artifact_schema_version": "policyengine_ledger.consumer_artifact.v2", + "fact_row_count": 1512256, + "facts_sha256": "11b20b4333270e269a5cbfe6302eb4986851990b340ef02d948eb71d62c12d5c", + "manifest_sha256": "96faf0e33686682cf37e8fa9511727571b3f8221f15bbc21591b799af87de722" + }, + "selections": [ + { + "label": "spi_2023_24_table_3_7_savings_rows", + "selector": { + "source_name": "hmrc", + "source_concept": [ + "hmrc.spi_savings_interest_income_amount", + "hmrc.spi_other_income_amount" + ], + "groupby_dimension": "hmrc.total_income_band", + "geography_id": "K02000001", + "period_type": "tax_year", + "period_value": [ + 2023 + ] + }, + "row_count": 26 + } + ], + "row_count": 26, + "rows": [ + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_e5510c38e40c6826732890f1", + "semantic_fact_key": "ledger_semantic_fact_v2_a03df98dc27f88f8be477fa5", + "source_record_id": "hmrc.spi_2324.table_3_7.band_100000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_100000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 100000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 455000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_4587a245d3c10ba59c5bfa6e", + "semantic_fact_key": "ledger_semantic_fact_v2_985c94cce353d872448c574e", + "source_record_id": "hmrc.spi_2324.table_3_7.band_1000000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_1000000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 1000000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1790000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_2717645cfa430002f67162c4", + "semantic_fact_key": "ledger_semantic_fact_v2_b414f94aba1bea525e7006f5", + "source_record_id": "hmrc.spi_2324.table_3_7.band_12570.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_12570", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 12570 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 6000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_c83a328cd251998df1d53dd8", + "semantic_fact_key": "ledger_semantic_fact_v2_1b8445c61dc70638ebd2c74c", + "source_record_id": "hmrc.spi_2324.table_3_7.band_15000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_15000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 15000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 33000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_75e68302293f837179617425", + "semantic_fact_key": "ledger_semantic_fact_v2_92ae7dc34ae10b892c099284", + "source_record_id": "hmrc.spi_2324.table_3_7.band_150000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_150000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 150000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 322000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_8573ad2cda65bae28ddde217", + "semantic_fact_key": "ledger_semantic_fact_v2_0577f10c1b94d5cbecb0534e", + "source_record_id": "hmrc.spi_2324.table_3_7.band_20000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_20000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 20000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 157000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_e8bdf778e214cd826bd17df2", + "semantic_fact_key": "ledger_semantic_fact_v2_7f0ee30171c114dd081beccf", + "source_record_id": "hmrc.spi_2324.table_3_7.band_200000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_200000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 200000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 499000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_93e6a9a54395ba63cfbc019f", + "semantic_fact_key": "ledger_semantic_fact_v2_0b8fdecf9e2abefa1317682b", + "source_record_id": "hmrc.spi_2324.table_3_7.band_30000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_30000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 30000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 190000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_678dce88d0d33cf807237111", + "semantic_fact_key": "ledger_semantic_fact_v2_14476dce35fafee69ee1e6a1", + "source_record_id": "hmrc.spi_2324.table_3_7.band_300000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_300000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 300000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 642000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_9c1b58625019a01860f2e32d", + "semantic_fact_key": "ledger_semantic_fact_v2_523120d087c5cbdb6b343d44", + "source_record_id": "hmrc.spi_2324.table_3_7.band_40000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_40000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 40000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 216000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_e718979f8b1e09d15cffce7e", + "semantic_fact_key": "ledger_semantic_fact_v2_0d0e169580b0ac5e5513ce4e", + "source_record_id": "hmrc.spi_2324.table_3_7.band_50000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_50000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 50000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 377000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_e7005d9bc7c85c2f94930ad0", + "semantic_fact_key": "ledger_semantic_fact_v2_1075f7c5b2ce05bea3dd9e7f", + "source_record_id": "hmrc.spi_2324.table_3_7.band_500000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_500000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 500000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 744000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_b28e1ec629932e2237eee742", + "semantic_fact_key": "ledger_semantic_fact_v2_e2edc5ca161535de4675b008", + "source_record_id": "hmrc.spi_2324.table_3_7.band_70000.other_income_amount", + "concept": "hmrc.spi_other_income_amount", + "measure_id": "other_income_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_70000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 70000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 415000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_0ef4a95b830d9e4e41b15e02", + "semantic_fact_key": "ledger_semantic_fact_v2_4a4569704cc5a077919d551c", + "source_record_id": "hmrc.spi_2324.table_3_7.band_100000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_100000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 100000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1260000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_4f8e330da2fcd6774dd7ea1a", + "semantic_fact_key": "ledger_semantic_fact_v2_d70e23809e18fd573e088875", + "source_record_id": "hmrc.spi_2324.table_3_7.band_1000000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_1000000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 1000000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1240000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_bd65aa884ad89d9837551b0e", + "semantic_fact_key": "ledger_semantic_fact_v2_1fd7e186cfe18dc8101d732e", + "source_record_id": "hmrc.spi_2324.table_3_7.band_12570.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_12570", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 12570 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 274000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_34ecf84ec234f3525db59f91", + "semantic_fact_key": "ledger_semantic_fact_v2_b71d465fa22f287f801e1600", + "source_record_id": "hmrc.spi_2324.table_3_7.band_15000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_15000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 15000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1370000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_89bdbe74eda3cee8844ad898", + "semantic_fact_key": "ledger_semantic_fact_v2_7455ca917af359f592f53baa", + "source_record_id": "hmrc.spi_2324.table_3_7.band_150000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_150000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 150000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 650000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_752ea2329d313046c61bf1e2", + "semantic_fact_key": "ledger_semantic_fact_v2_5565e9911ead200a021feed5", + "source_record_id": "hmrc.spi_2324.table_3_7.band_20000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_20000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 20000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 3130000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_02f3a7f7b7097a3fd455b702", + "semantic_fact_key": "ledger_semantic_fact_v2_319901210d0afbf0de06c224", + "source_record_id": "hmrc.spi_2324.table_3_7.band_200000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_200000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 200000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 733000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_d341b6820714e38a12ac4b1c", + "semantic_fact_key": "ledger_semantic_fact_v2_1fb51f0e371951a3d0d67dc5", + "source_record_id": "hmrc.spi_2324.table_3_7.band_30000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_30000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 30000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 2530000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_8fc8bdb298f62c90d7af57b8", + "semantic_fact_key": "ledger_semantic_fact_v2_cf9ed3d017bb0c21d24bd5ce", + "source_record_id": "hmrc.spi_2324.table_3_7.band_300000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_300000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 300000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 673000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_367d1c49bfab3c640463ded8", + "semantic_fact_key": "ledger_semantic_fact_v2_88d6fe5ff5e512fd0baae89c", + "source_record_id": "hmrc.spi_2324.table_3_7.band_40000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_40000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 40000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1870000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_819d2f77e45b3ba5a7907a4a", + "semantic_fact_key": "ledger_semantic_fact_v2_6f58eabf6f4f5ca53a106611", + "source_record_id": "hmrc.spi_2324.table_3_7.band_50000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_50000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 50000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 2340000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_5d68b2314b5c54a09f274733", + "semantic_fact_key": "ledger_semantic_fact_v2_66db03562553db442bf55fd1", + "source_record_id": "hmrc.spi_2324.table_3_7.band_500000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_500000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 500000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 653000000 + }, + { + "aggregate_fact_key": "ledger_aggregate_fact_v2_ab8a5ac6dd4ba75e194133f1", + "semantic_fact_key": "ledger_semantic_fact_v2_0cf642d6a0e4224ef468b28c", + "source_record_id": "hmrc.spi_2324.table_3_7.band_70000.savings_interest_amount", + "concept": "hmrc.spi_savings_interest_income_amount", + "measure_id": "savings_interest_amount", + "unit": "gbp", + "aggregation": "sum", + "entity": { + "name": "person", + "role": "taxpayer" + }, + "geography": { + "id": "K02000001", + "level": "country", + "vintage": "current" + }, + "period": { + "type": "tax_year", + "value": 2023 + }, + "period_coverage": { + "start_date": null, + "end_date": null, + "basis": null + }, + "layout": { + "record_set_id": "hmrc.spi_2324.table_3_7", + "groupby_dimension": "hmrc.total_income_band", + "groupby_value_id": "band_70000", + "table_record_kind": "detail" + }, + "dimensions": { + "total_income_lower_bound": 70000 + }, + "source": { + "source_name": "hmrc", + "source_table": "SPI collated Tables 3.1 to 3.11, tax year 2023-24: income by range of total income", + "source_file": "Collated_Tables_3_1_to_3_11_2324.ods", + "source_sha256": "ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e", + "vintage": "spi_2023_24", + "raw_r2_key": "raw/hmrc/hmrc-spi-income-bands-2023-24/2024/ad063b06b2bdeef8600dbbb09d48153337a4966f8c7eea50df7a2e0304ebd73e/Collated_Tables_3_1_to_3_11_2324.ods" + }, + "value": 1620000000 + } + ] +} 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 105de52371..b088b6a9b2 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": 1409, + "compiled_count": 1418, "counts_by_kind": { "calibration_drift": 566, "fixture_only": 42, - "ledger_only": 814 + "ledger_only": 823 }, - "difference_count": 1422, + "difference_count": 1431, "differences": [ { "fixture_value": 1608000.0, @@ -637,6 +637,13 @@ "period": 2025, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, + { + "kind": "ledger_only", + "ledger_value": 23377178.788788605, + "name": "dwp.jsa.amount_income_based", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, { "kind": "ledger_only", "ledger_value": 1390586.25, @@ -2485,6 +2492,62 @@ "period": 2025, "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." }, + { + "kind": "ledger_only", + "ledger_value": 136689.37329700272, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1000_2000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 72111.7166212534, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1_500", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 110858.310626703, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_2000_3000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 96866.48501362398, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_3000_4000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 82874.65940054496, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_4000_5000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 159291.553133515, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_5000_7500", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 68882.83378746595, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_500_1000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, + { + "kind": "ledger_only", + "ledger_value": 121621.25340599455, + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_7500_10000", + "period": 2025, + "reason": "Ledger-compiled row has no fixture counterpart at this comparison period." + }, { "kind": "ledger_only", "ledger_value": 617065102.3673128, diff --git a/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json b/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json index a838d64e98..5a6e274e4a 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json +++ b/packages/microcosm-build/src/microcosm/build/uk/ledger_fact_vendor_selections.json @@ -1728,6 +1728,33 @@ } ] }, + { + "resource": "hmrc_spi_table_3_7_savings_rows.json", + "purpose": "HMRC Survey of Personal Incomes 2023-24, Table 3.7 (income by source and range of total income, taxpayers): the United Kingdom interest from banks and building societies and other income amounts in each of the 13 total-income bands. Consumed by the SPI income stage, which rebases each donor's interest and other income from the 2022-23 tape to these 2023-24 amounts band by band before the OBR's savings income growth carries them to the frame's year (microcosm#1418 savings follow-up).", + "consumers": [ + "uk_runtime.spi_income" + ], + "planned_consumers": [], + "selections": [ + { + "label": "spi_2023_24_table_3_7_savings_rows", + "selector": { + "source_name": "hmrc", + "source_concept": [ + "hmrc.spi_savings_interest_income_amount", + "hmrc.spi_other_income_amount" + ], + "groupby_dimension": "hmrc.total_income_band", + "geography_id": "K02000001", + "period_type": "tax_year", + "period_value": [ + 2023 + ] + }, + "expected_row_count": 26 + } + ] + }, { "resource": "hmrc_isa_statistics_facts.json", "purpose": "HMRC Annual savings statistics (September 2026 release), the rows the ISA subscriptions stage draws subscribers and amounts from and the Lifetime ISA anchor counts payers against (microcosm#1415): Table 9.7 2023-24 subscribers by total income and size of subscription, and the holders who made no further subscription, for all subscribers and each type paid into; Table 9.8 subscribers by age and sex; Table 9.9 subscribers by region; Table 9.4 accounts and amounts subscribed by component for 2023-24 and 2024-25 (the latest year provisional); Table 9.6 market values at 5 April 2025; the cash ISA limit reduction impact note's shares of under-65 cash subscribers either side of GBP 12,000 in 2022-23; and Lifetime ISA Table 1a withdrawals for 2024-25 and 2025-26. Tables 9.7 to 9.9 count individuals and Table 9.4 accounts. None is a calibration target: the stage's reviewed fence keeps them measured only. No value is derived here.", diff --git a/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json b/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json index 97debbad8c..650d711cb4 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json +++ b/packages/microcosm-build/src/microcosm/build/uk/release_input_coverage_manifest.json @@ -472,7 +472,7 @@ "required_mass_change_reason": "Capital-gains incidence anchor moves the mass of non-liable clone households back to their paired originals until the sub-exempt and loss-making clone mass match the Advani-Summers reporter composition at the redrawn liable mass; every pair's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Advani and Summers (2020), Capital Gains and UK Inequality, CAGE Working Paper 465", "survey": "Family Resources Survey 2024-25, SPI synthetic support, the HMRC Table 3 redrawn gains on the spine and Advani-Summers capital-gains incidence" @@ -495,7 +495,7 @@ "capital_gains" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Advani and Summers (2020), Capital Gains and UK Inequality, CAGE Working Paper 465", "survey": "Family Resources Survey 2024-25, SPI synthetic support, and Advani-Summers capital-gains incidence" @@ -518,7 +518,7 @@ "required_mass_change_reason": "Capital-gains residential split divides every household carrying liable gainers into arms weighted by the solved residential probabilities, one arm per subset of residential gainers; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "https://www.gov.uk/government/statistics/capital-gains-tax-statistics", "survey": "HMRC Capital Gains Tax statistics 2026 release, Table 8 (UK residential property disposals, 2024-25, administrative) on the amounts the Table 3 redraw placed" @@ -540,7 +540,7 @@ "required_mass_change_reason": "Capital-gains support split divides the wealthiest households of each HMRC Table 3 income band into light copies at equal weight; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "HMRC Capital Gains Tax statistics, July 2026 release, Table 3 for 2024-25, via the vendored conditioning facts", "survey": "Family Resources Survey 2024-25, SPI synthetic support and HMRC Capital Gains Tax statistics Table 3 (2024-25 individuals by size of gain and taxable income)" @@ -570,7 +570,7 @@ "uc_is_in_gainful_self_employment" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "The FRS job record's company car answers through frs_spine's carriers (EXPBEN01, EXPBEN03, CARVAL, FUELTYP, CARCON, CARAMT), WAS round-8 company cars' list prices, and HMRC's 2024-25 company car recipients by CO2 band (Table 2A) and fuel (Table 2C), via the vendored facts", "survey": "Family Resources Survey 2024-25 job record; Wealth and Assets Survey round 8; HMRC Benefits in kind statistics (July 2026)" @@ -599,7 +599,7 @@ "required_mass_change_reason": "ETB public-services imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "UK Data Service SN 8856 Effects of Taxes and Benefits household tab, DfT rail fare index, and public NHS activity/cost table.", "survey": "Effects of Taxes and Benefits 1977-2024 and NHS age-gender public table" @@ -619,7 +619,7 @@ "required_mass_change_reason": "ETB VAT expenditure-rate imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "UK Data Service SN 8856 Effects of Taxes and Benefits household tab and cited VAT anchor resource.", "survey": "Effects of Taxes and Benefits 1977-2024" @@ -641,7 +641,7 @@ "required_mass_change_reason": "High-value home support divides every owner household in the top value stratum of its region into light copies at equal weight; every household's mass and the total household mass are conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Microcosm structural operator (microcosm#1240 fix 1); no publisher input", "survey": "Family Resources Survey 2024-25 and SPI synthetic support, after the WAS wealth draw and the regional property uprating" @@ -662,7 +662,7 @@ "required_mass_change_reason": "CGT asset-type assignment on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "https://www.gov.uk/government/statistics/capital-gains-tax-statistics", "survey": "HMRC Capital Gains Tax statistics 2026 release, Table 8 (UK residential property disposals, 2024-25, administrative), Table 4.1 (individuals claiming Business Asset Disposal Relief or Investors' Relief by band of qualifying gain, 2024-25, administrative) and Table 7 (disposals, proceeds and gains by asset type, 2023-24, sample-based), vendored from the pinned Chronicle feed" @@ -686,7 +686,7 @@ "capital_gains" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "conditioning_resource": "hmrc_cgt_conditioning_facts.json", "conditioning_resource_sha256": "6a2ba5e3e43c6d7936416552aadc716729b902dcac24b97093ae8ccf06cf8a8f", @@ -776,7 +776,7 @@ "full_frs_tei_band_unavailable" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "hmrc_surface": "2023-24", "mapped_build_period": "2024", @@ -803,7 +803,7 @@ "required_mass_change_reason": "ISA subscriptions per adult from HMRC's ISA tables on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "HMRC Individual Savings Account statistics Tables 9.4, 9.6 and 9.7 to 9.9, the cash ISA limit reduction impact note and Lifetime ISA Table 1a, via the vendored facts; Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed round-8 person and household tabs (interviews April 2020 to March 2022, Great Britain).", "survey": "HMRC Annual savings statistics (September 2026 release); Wealth and Assets Survey round 8" @@ -868,7 +868,7 @@ "required_mass_change_reason": "LCFS consumption imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "UK Data Service SN 9603 Living Costs and Food Survey 2024-25 (2nd edition) household/person tabs and the vendored Chronicle facts for NEED 2024 mean kWh, DESNZ Energy Trends and QEP average prices paid for calendar 2024, road-fuel outturn (DESNZ, HMRC, ONS Consumer Trends) and road fuel by vehicle type (DESNZ), ONS Consumer Trends household spending by COICOP division, the DfT VEH1103 licensed-car stock, NTS bus use, and the DfT and devolved bus finance tables and fares indices.", "survey": "Living Costs and Food Survey 2024-25" @@ -894,7 +894,7 @@ "required_mass_change_reason": "NTS bus-travel imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Department for Transport National Travel Survey, UK Data Service SN 5340 (End User Licence, 19th edition, November 2025), DOI 10.5255/UKDA-SN-5340-19; local licensed tab files (household, individual, trip); England residents only from 2013.", "survey": "National Travel Survey 2002-2024" @@ -914,7 +914,7 @@ "required_mass_change_reason": "Private-school attendance stored on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "policyengine-uk attends_private_school (the gov.simulation.private_school_vat attendance rates and factor), evaluated by the pinned engine", "survey": "policyengine-uk private-school attendance imputation, stored at the spine's weights" @@ -937,7 +937,7 @@ "property_finance_costs" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "https://www.gov.uk/government/statistics/property-rental-income-statistics", "survey": "Survey of Personal Incomes Public Use Tape 2022-23 and HMRC Property Rental Income Statistics 2026 (tax year 2024-25)" @@ -958,7 +958,7 @@ "required_mass_change_reason": "Annual property purchases imputed on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "https://www.gov.uk/government/statistics/uk-stamp-tax-statistics", "survey": "HMRC Annual Stamp Tax Statistics 2024 to 2025 (corrected 11 March 2026), Tables 6b, 8a and 8b" @@ -981,7 +981,7 @@ "property_wealth" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "uk/high_value_home_value_knots.json, built by tools/build_uk_high_value_home_stock.py from PolicyEngine/chronicle#343's registrations", "survey": "HM Land Registry Price Paid latest sales uprated with the UK House Price Index, owner-weighted by region (the dense value node's knots, region level)" @@ -1005,7 +1005,7 @@ "non_residential_property_value" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "MHCLG dwellings and the UK House Price Index regional average price averaged over the twelve months of calendar 2024 from the July 2026 full file, the frame's valuation basis, so the engine's annual uprating from 2024 projects the value once (microcosm#1240 fix 5).", "survey": "Public regional property reference" @@ -1033,7 +1033,7 @@ "employment_income" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "HMRC, Salary sacrifice reform for pension contributions effective from 6 April 2029", "survey": "Family Resources Survey 2024-25 salary-sacrifice respondents and HMRC salary-sacrifice reform analysis" @@ -1066,7 +1066,7 @@ "household_source_id" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Reserved SPI support households for the HMRC Table 2.5 total-income bands from GBP 200,000, stacked at the published band taxpayer count over the donors per band (PolicyEngine/chronicle#280 lane).", "survey": "Survey of Personal Incomes Public Use Tape 2022-23 and HMRC Income Tax liabilities statistics July 2026 Table 2.5" @@ -1088,7 +1088,7 @@ "student_loan_plan" ], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Explore Education Statistics Table 6a, Higher education total", "survey": "Family Resources Survey 2024-25 and Student Loans Company borrower forecasts for England" @@ -1096,6 +1096,26 @@ "stage": "student_loans", "status": "required_at_build" }, + "trading_allowance_receipts": { + "base_candidate_sha256": "f17306ccb2aad7ff0130be3589b560afb2e2a12a943570911cd0c77f07934833", + "base_candidate_tier": "frs", + "effective_mass_requirements": {}, + "mass_change_semantics": "mass_conserving", + "output_weight_kind": "importance", + "outputs": [ + "self_employment_gross_receipts" + ], + "required_mass_change_reason": "Self-employed gross receipts stored on the source spine: household weights pass through unchanged and total household mass is conserved.", + "rewrites": [], + "source_manifest": "source_stages.json", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", + "source_vintages": { + "source": "self_employment_income after the SPI income stage; HMRC's published gainers of the raise to GBP 3,000, about 400,000 taxpayers with a lower bill by about GBP 380 on average", + "survey": "The self-employed's own profit on the final spine, and HMRC's policy paper on the Budget 2026 trading allowance raise (calibration)" + }, + "stage": "trading_allowance_receipts", + "status": "required_at_build" + }, "was_lisa": { "base_candidate_sha256": "f17306ccb2aad7ff0130be3589b560afb2e2a12a943570911cd0c77f07934833", "base_candidate_tier": "frs", @@ -1110,7 +1130,7 @@ "required_mass_change_reason": "WAS Lifetime ISA imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed round-8 person and household tabs (interviews April 2020 to March 2022, Great Britain).", "survey": "Wealth and Assets Survey round 8" @@ -1149,7 +1169,7 @@ "required_mass_change_reason": "WAS wealth imputation on the source spine: household weights pass through unchanged and total household mass is conserved.", "rewrites": [], "source_manifest": "source_stages.json", - "source_manifest_sha256": "895ebc04fb44e7147d04490724990bfd9795cc2095a33c999389f445c0975c47", + "source_manifest_sha256": "fbf236daef5f947a0123e258812f9b111c5d18a8f2d839c87abb4dce9c17cdda", "source_vintages": { "source": "Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed 2006-22 household tab.", "survey": "Wealth and Assets Survey round 8" diff --git a/packages/microcosm-build/src/microcosm/build/uk/source_stages.json b/packages/microcosm-build/src/microcosm/build/uk/source_stages.json index b369a8bb69..288eed25b1 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/source_stages.json +++ b/packages/microcosm-build/src/microcosm/build/uk/source_stages.json @@ -277,6 +277,7 @@ "loss_relief", "ni_class_4_losses_brought_forward", "private_pension_income", + "annuity_and_trust_income", "individual_savings_account_interest_income", "savings_interest_income", "dividend_income", @@ -383,6 +384,7 @@ "loss_relief", "ni_class_4_losses_brought_forward", "private_pension_income", + "annuity_and_trust_income", "individual_savings_account_interest_income", "savings_interest_income", "dividend_income", @@ -1961,7 +1963,7 @@ "dividend_income": "dividend_income", "private_pension_income": "private_pension_income", "property_income": "property_income", - "other_investment_income": null, + "other_investment_income": "other_investment_income", "gift_aid": null, "charitable_investment_gifts": null, "hmrc_spi_pay": "hmrc_spi_pay", @@ -2629,9 +2631,10 @@ "self_employment_income_annual_share", "self_employment_income_other_spells", "private_pension_income_annual_share", - "contributory_benefits_annual_share" + "contributory_benefits_annual_share", + "annuity_and_trust_income" ], - "notes": "Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes." + "notes": "Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes. A drawn row's annuity and trust descriptor is zero, since the tape's private pension excludes those payments and books them as other income (microcosm#1428)." }, { "artifacts": [ @@ -6403,13 +6406,13 @@ "family_type": "two FRS claimant or partner roles make a couple; children are UC children or qualifying young people and other non-claimants under 20 (the calibration measure's uc_calibration_family_type)", "award_bands": "GBP 1,200 a year (DWP's GBP 100 a month), (1,200 i, 1,200 (i + 1)] in whole pence for i < 25, and above GBP 30,000", "targets": "DWP Stat-Xplore Households on Universal Credit by family type and monthly award band, mean of April to December 2025", - "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it", + "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it. Then, lowest first, a pool that cannot meet DWP's count (its undrawn entitled units' expected claims exceed the count, or the count exceeds them plus the weight of every drawn unit) is held at the nearer of those ends and passes its gap to the other pools, nearest first, the one with more room first at equal distance and the lower on a tie, each taking what its room allows; a gap no pool can take leaves the family type unreachable", "minimum_pool_sources": 30, "drawn_units": "entitled, non-reporting units of the population that the engine does not move off their legacy benefits (legacy_benefits_closed) and that report none, since a legacy benefit the engine leaves in place ends once the unit claims UC", "undrawn_claims": "a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), a unit keeping income-related ESA at 0, any other at its stored flag", "kept_legacy_award": "a unit whose claimant or partner reports income-related ESA (esa_income_reported), and that neither reports Universal Credit nor is moved off its legacy benefits, claims no Universal Credit, since policyengine-uk ends that award once the family claims it", "weight_mapping": "household_to_benunit", - "residual_rate": "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too", + "residual_rate": "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands after any gaps passed to or from it, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too", "solve_scope": "great_britain", "not_drawn": "keeps its stored flag, except a unit keeping income-related ESA, which claims none" } @@ -7926,6 +7929,52 @@ "source": "HMRC Individual Savings Account statistics Tables 9.4, 9.6 and 9.7 to 9.9, the cash ISA limit reduction impact note and Lifetime ISA Table 1a, via the vendored facts; Office for National Statistics Wealth and Assets Survey, UK Data Service SN 7215, DOI 10.5255/UKDA-SN-7215-20; local licensed round-8 person and household tabs (interviews April 2020 to March 2022, Great Britain).", "stage": "isa_subscriptions", "survey": "HMRC Annual savings statistics (September 2026 release); Wealth and Assets Survey round 8" + }, + { + "stage": "trading_allowance_receipts", + "survey": "The self-employed's own profit on the final spine, and HMRC's policy paper on the Budget 2026 trading allowance raise (calibration)", + "source": "self_employment_income after the SPI income stage; HMRC's published gainers of the raise to GBP 3,000, about 400,000 taxpayers with a lower bill by about GBP 380 on average", + "grain": "person", + "operations": [ + { + "kind": "assign_trading_allowance_receipts", + "output": "self_employment_gross_receipts", + "profit": "self_employment_income", + "draw": "trading_allowance_claimant", + "seed": 0, + "claimant_bands": [ + { + "upper_inclusive": 4500.0, + "rate": 0.72 + }, + { + "upper_inclusive": 9000.0, + "rate": 0.14 + }, + { + "rate": 0.0 + } + ], + "claimant_expenses": 1000.0, + "other_expenses": 3000.0, + "calibration": "HMRC's policy paper on the Budget 2026 trading allowance raise: about 400,000 taxpayers with a lower bill, by about GBP 380 on average, measured on policyengine-uk for the microcosm#1428 national from 9f70c71e7 at 2028-29 prices; the rates drift with each national (microcosm#1439), until HMRC publishes claimant counts (María's choices of 2026-10-31 and 2026-11-01)", + "rule": "a person with a positive self_employment_income claims the allowance where their uniform falls below their profit band's rate; a claimant's receipts are their profit plus claimant_expenses, any other trader's their profit plus other_expenses, and a person with no positive profit keeps zero" + }, + { + "kind": "record_mass_conservation_receipt", + "entity": "household", + "reason": "Self-employed gross receipts stored on the source spine: household weights pass through unchanged and total household mass is conserved.", + "declared_factor": 1.0, + "gate_coupling": "The terminal family gate requires a valid mass-conserving MassChangeRecord carrying exactly this stage-specific reason." + } + ], + "outputs": [ + "self_employment_gross_receipts" + ], + "nonnegative_outputs": [ + "self_employment_gross_receipts" + ], + "notes": "The last spine stage (microcosm#1428). policyengine-uk applies the trading allowance against self_employment_gross_receipts, which neither the FRS nor the SPI tape records; without receipts a rise in the allowance relieves only profits up to the new allowance, in full, and misses its main base, the traders who already claim the GBP 1,000 allowance against larger receipts. Under current law a claimant's receipts are their profit plus GBP 1,000 exactly. Each trader with a positive profit is flagged a claimant at their profit band's rate, drawn on their own person_id: a claimant's receipts are their profit plus GBP 1,000, any other trader's their profit plus GBP 3,000 (expenses at the raised allowance, so the raise does not relieve them; the costing books switchers as behaviour), and a person with no positive profit keeps zero, which the engine reads as unknown. Every trader with a positive profit is treated as filing, as SPI Table 3.10's counts, which bind the frame's traders, are of filers, so a profit of GBP 1,000 or less is now taxed where the engine used to relieve it in full. The rates are calibrated to HMRC's policy paper until HMRC publishes claimant counts. The engine uprates receipts with profit, so a claimant's GBP 1,000 grows with the mixed income index while the allowance is nominal: the raise relieves GBP 1,932 more in 2027-28, falling to GBP 1,758 by 2031-32, 3.4% to 12.1% below GBP 2,000. The other traders' stored GBP 3,000 grows the same way, so an allowance above GBP 3,000 times that index relieves them from the stored expense, not from data: allowances above GBP 3,000 are mis-scored until policyengine-uk#2765 lets the stage store the claim status (microcosm#1439; María's ruling of 2026-11-01)." } ] } diff --git a/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml b/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml index 3dd4eb0432..517e9dc901 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml +++ b/packages/microcosm-build/src/microcosm/build/uk/spec/sources.yaml @@ -408,6 +408,7 @@ stages: - loss_relief - ni_class_4_losses_brought_forward - private_pension_income + - annuity_and_trust_income - individual_savings_account_interest_income - savings_interest_income - dividend_income @@ -513,6 +514,7 @@ stages: - loss_relief - ni_class_4_losses_brought_forward - private_pension_income + - annuity_and_trust_income - individual_savings_account_interest_income - savings_interest_income - dividend_income @@ -1697,7 +1699,7 @@ stages: dividend_income: dividend_income private_pension_income: private_pension_income property_income: property_income - other_investment_income: null + other_investment_income: other_investment_income gift_aid: null charitable_investment_gifts: null hmrc_spi_pay: hmrc_spi_pay @@ -2255,7 +2257,8 @@ stages: - self_employment_income_other_spells - private_pension_income_annual_share - contributory_benefits_annual_share - notes: Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes. + - annuity_and_trust_income + notes: Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes. A drawn row's annuity and trust descriptor is zero, since the tape's private pension excludes those payments and books them as other income (microcosm#1428). - stage: company_cars survey: Family Resources Survey 2024-25 job record; Wealth and Assets Survey round 8; HMRC Benefits in kind statistics (July 2026) source: The FRS job record's company car answers through frs_spine's carriers (EXPBEN01, EXPBEN03, CARVAL, FUELTYP, CARCON, CARAMT), WAS round-8 company cars' list prices, and HMRC's 2024-25 company car recipients by CO2 band (Table 2A) and fuel (Table 2C), via the vendored facts @@ -5158,13 +5161,13 @@ stages: family_type: two FRS claimant or partner roles make a couple; children are UC children or qualifying young people and other non-claimants under 20 (the calibration measure's uc_calibration_family_type) award_bands: GBP 1,200 a year (DWP's GBP 100 a month), (1,200 i, 1,200 (i + 1)] in whole pence for i < 25, and above GBP 30,000 targets: DWP Stat-Xplore Households on Universal Credit by family type and monthly award band, mean of April to December 2025 - pooling: adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it + pooling: adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it. Then, lowest first, a pool that cannot meet DWP's count (its undrawn entitled units' expected claims exceed the count, or the count exceeds them plus the weight of every drawn unit) is held at the nearer of those ends and passes its gap to the other pools, nearest first, the one with more room first at equal distance and the lower on a tie, each taking what its room allows; a gap no pool can take leaves the family type unreachable minimum_pool_sources: 30 drawn_units: entitled, non-reporting units of the population that the engine does not move off their legacy benefits (legacy_benefits_closed) and that report none, since a legacy benefit the engine leaves in place ends once the unit claims UC undrawn_claims: a reporter at 1, a moved unit at the claim probability uc_legacy_closure_take_up's rule gives it (dwp_move_to_uc_facts.json), a unit keeping income-related ESA at 0, any other at its stored flag kept_legacy_award: a unit whose claimant or partner reports income-related ESA (esa_income_reported), and that neither reports Universal Credit nor is moved off its legacy benefits, claims no Universal Credit, since policyengine-uk ends that award once the family claims it weight_mapping: household_to_benunit - residual_rate: (T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too + residual_rate: (T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands after any gaps passed to or from it, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too solve_scope: great_britain not_drawn: keeps its stored flag, except a unit keeping income-related ESA, which claims none outputs: [] @@ -6361,3 +6364,33 @@ stages: - stocks_and_shares_isa_subscriptions - lifetime_isa_payments notes: 'Imputes ISA subscriptions per adult by type, and the per-person ISA balances, on the final spine (microcosm#1415). Each household''s was_wealth cash and stocks-and-shares ISA totals are split across its adults by the holding pattern of a WAS round-8 donor household with the same number of adults, so person balances sum exactly to the household totals, which are unchanged. Subscribers in 2023-24 are adults aged 18 or over in households holding the type, raked by class (cash only, stocks and shares only, both) to Table 9.7''s income bands, Table 9.8''s age and sex and Table 9.9''s regions and selected by keyed walks, the both class first. Amounts follow Table 9.7''s subscription bands within each income band and class, uniform inside a band and exactly GBP 20,000 at the top; the both class splits each person''s amount by their balance shares, shifted so the class''s stocks-and-shares total is Table 9.4''s 2023-24 stocks-and-shares amount less the stocks-and-shares-only payments. People grow to 2024-25 by Table 9.4''s account growth (an upper bound on people, as from 6 April 2024 a person may pay into several ISAs of one type), and amounts scale to Table 9.4''s 2024-25 amounts per type, holding subscribers already at the GBP 20,000 overall limit and moving combined amounts between GBP 18,000 (Table 9.7''s last band floor below the limit) and the limit on a line up to it, so a factor below one leaves no empty range under the limit (María''s rulings of 29 October 2026): Table 9.7''s cash bands sit above Table 9.4, and growing that excess by Table 9.4''s ratio against the limit pushed the subscribers below it far up. Every Lifetime ISA holder aged 18 to 47 (the ages that can hold one in 2024-25) with room under the overall limit pays in, amounts in (0, GBP 4,000] drawn to Table 9.4''s 2024-25 Lifetime ISA amount. No ISA fact is a calibration target: binding the cells the stage draws to would be circular, so the reviewed fence keeps them measured only.' +- stage: trading_allowance_receipts + survey: The self-employed's own profit on the final spine, and HMRC's policy paper on the Budget 2026 trading allowance raise (calibration) + source: self_employment_income after the SPI income stage; HMRC's published gainers of the raise to GBP 3,000, about 400,000 taxpayers with a lower bill by about GBP 380 on average + grain: person + operations: + - kind: assign_trading_allowance_receipts + output: self_employment_gross_receipts + profit: self_employment_income + draw: trading_allowance_claimant + seed: 0 + claimant_bands: + - upper_inclusive: 4500.0 + rate: 0.72 + - upper_inclusive: 9000.0 + rate: 0.14 + - rate: 0.0 + claimant_expenses: 1000.0 + other_expenses: 3000.0 + calibration: 'HMRC''s policy paper on the Budget 2026 trading allowance raise: about 400,000 taxpayers with a lower bill, by about GBP 380 on average, measured on policyengine-uk for the microcosm#1428 national from 9f70c71e7 at 2028-29 prices; the rates drift with each national (microcosm#1439), until HMRC publishes claimant counts (María''s choices of 2026-10-31 and 2026-11-01)' + rule: a person with a positive self_employment_income claims the allowance where their uniform falls below their profit band's rate; a claimant's receipts are their profit plus claimant_expenses, any other trader's their profit plus other_expenses, and a person with no positive profit keeps zero + - kind: record_mass_conservation_receipt + entity: household + reason: 'Self-employed gross receipts stored on the source spine: household weights pass through unchanged and total household mass is conserved.' + declared_factor: 1.0 + gate_coupling: The terminal family gate requires a valid mass-conserving MassChangeRecord carrying exactly this stage-specific reason. + outputs: + - self_employment_gross_receipts + nonnegative_outputs: + - self_employment_gross_receipts + notes: 'The last spine stage (microcosm#1428). policyengine-uk applies the trading allowance against self_employment_gross_receipts, which neither the FRS nor the SPI tape records; without receipts a rise in the allowance relieves only profits up to the new allowance, in full, and misses its main base, the traders who already claim the GBP 1,000 allowance against larger receipts. Under current law a claimant''s receipts are their profit plus GBP 1,000 exactly. Each trader with a positive profit is flagged a claimant at their profit band''s rate, drawn on their own person_id: a claimant''s receipts are their profit plus GBP 1,000, any other trader''s their profit plus GBP 3,000 (expenses at the raised allowance, so the raise does not relieve them; the costing books switchers as behaviour), and a person with no positive profit keeps zero, which the engine reads as unknown. Every trader with a positive profit is treated as filing, as SPI Table 3.10''s counts, which bind the frame''s traders, are of filers, so a profit of GBP 1,000 or less is now taxed where the engine used to relieve it in full. The rates are calibrated to HMRC''s policy paper until HMRC publishes claimant counts. The engine uprates receipts with profit, so a claimant''s GBP 1,000 grows with the mixed income index while the allowance is nominal: the raise relieves GBP 1,932 more in 2027-28, falling to GBP 1,758 by 2031-32, 3.4% to 12.1% below GBP 2,000. The other traders'' stored GBP 3,000 grows the same way, so an allowance above GBP 3,000 times that index relieves them from the stored expense, not from data: allowances above GBP 3,000 are mis-scored until policyengine-uk#2765 lets the stage store the claim status (microcosm#1439; María''s ruling of 2026-11-01).' 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 4364648213..76d5f8ef78 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,12 +1,12 @@ { "source_fact_feed": "chronicle-uk-08962f1-consumer-facts", "target_period": 2025, - "candidate_count": 1439, - "contract_target_count": 396, - "active_reference_count": 1409, + "candidate_count": 1455, + "contract_target_count": 398, + "active_reference_count": 1418, "status_counts": { - "active": 1409, - "signed_excluded": 30 + "active": 1418, + "signed_excluded": 37 }, "geography_pins": { "obr.income_tax": { @@ -161,6 +161,10 @@ "geography_level": "country", "geography_id": "K02000001" }, + "hmrc.spi.employment_income.count_by_self_employment_income_band": { + "geography_level": "country", + "geography_id": "K02000001" + }, "hmrc.spi.dividend_income.amount_by_total_income_band": { "geography_level": "country", "geography_id": "K02000001" @@ -4491,6 +4495,10 @@ "geography_level": "country", "geography_id": "K03000001" }, + "dwp.jsa.amount_income_based": { + "geography_level": "country", + "geography_id": "K03000001" + }, "microcosm.high_value_homes.over_1m_by_region": { "geography_fanout": [ { @@ -5408,6 +5416,70 @@ "factor": "1.11152010143825", "value_before_uprating": "3470000000.0" }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1_500", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "67000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1000_2000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "127000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_2000_3000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "103000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_3000_4000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "90000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_4000_5000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "77000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_500_1000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "64000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_5000_7500", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "148000.0" + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_7500_10000", + "from": "2023", + "to": "2025", + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "113000.0" + }, { "name": "hmrc/dividend_income_income_band_100_000_to_150_000", "from": "2023", @@ -13016,6 +13088,208 @@ } ] }, + "hmrc.spi.employment_income.count_by_self_employment_income_band": { + "status": "active", + "candidates": [ + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_0_1", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 0 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's zero band counts people with a self-employment source and no profit after loss relief. The binding bands people on their self-employment income alone, so a band from 0 to 1 would count every employee without self-employment income. It also lies outside the GBP 1 to GBP 10,000 range Mar\u00eda's ruling of 2026-10-29 binds, which her choice of 2026-10-30 extends to Table 3.10's employment-income counts. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1_500", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 72111.7166212534, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_a8a50ebacc90efdf051f460b", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "67000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1000_2000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 136689.37329700272, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_e07428dae7ed2be1a4b3d793", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "127000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_10000_15000", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 10000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_100000_plus", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 100000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_15000_20000", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 15000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_2000_3000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 110858.310626703, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_8f608695430804bf74928876", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "103000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_20000_30000", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 20000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_3000_4000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 96866.48501362398, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_0814147e65171246cce164c0", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "90000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_30000_50000", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 30000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_4000_5000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 82874.65940054496, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_5e447c3f14dc230f46520c1e", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "77000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_500_1000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 68882.83378746595, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_1f44d42f7a3ba77a7f872437", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "64000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_5000_7500", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 159291.553133515, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_535bdfcf3c4c862eee078139", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "148000.0" + } + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_50000_100000", + "status": "signed_excluded", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "signed_row": { + "dimension": "self_employment_income_lower_bound", + "value": 50000 + }, + "signed_rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: Mar\u00eda's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound." + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_7500_10000", + "status": "active", + "matched_fact_count_overall": 1, + "matched_fact_count_at_or_before_period": 1, + "resolved_period": 2025, + "resolved_value": 121621.25340599455, + "resolved_fact_period": "2023", + "resolved_fact_key": "ledger_aggregate_fact_v2_52b23e53122bfddd68b77ca8", + "uprating": { + "index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "factor": "1.07629427792916", + "value_before_uprating": "113000.0" + } + } + ] + }, "hmrc.spi.dividend_income.amount_by_total_income_band": { "status": "active", "candidates": [ @@ -31645,6 +31919,21 @@ } ] }, + "dwp.jsa.amount_income_based": { + "status": "active", + "candidates": [ + { + "name": "dwp.jsa.amount_income_based", + "status": "active", + "matched_fact_count_overall": 2, + "matched_fact_count_at_or_before_period": 2, + "resolved_period": 2025, + "resolved_value": 23377178.788788605, + "resolved_fact_period": "2025", + "resolved_fact_key": "ledger_aggregate_fact_v2_6d0a1e9a4006a42d57b637a2" + } + ] + }, "microcosm.high_value_homes.over_1m_by_region": { "status": "active", "candidates": [ @@ -32113,7 +32402,7 @@ { "family": "hmrc_spi", "status": "active_strict_band_pins", - "active_reference_count": 211, + "active_reference_count": 219, "signed_rationale": "SPI income-band targets fan out by strict total-income-band dimension pins, and SPI Table 3.10's by self-employment band, its bands outside GBP 1 to GBP 10,000 signed out row by row (microcosm#1418). The 13 property-income amount rows bind the SPI Table 3.7 net concept unscaled: landlords' profit after allowable expenses and before residential finance costs, which is what policyengine-uk's property_income means. The incumbent's x1.9 scaling (uk-data#311, uk-data#230) set the Property Rental Income Statistics' receipts before expenses against this net amount, so it is retired; the receipts are constructed on property_rental_income by the property_components stage and PRIS stays a diagnostic (microcosm#1106, Mar\u00eda's rulings of 2026-10-05 and 2026-10-08)." }, { diff --git a/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json b/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json index aa48ed2e9b..f5be4e0dcd 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_reference_signed_exclusions.json @@ -272,6 +272,90 @@ "value": 100000 } }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "zero_band_counts_everyone_without_the_income", + "rationale": "SPI 2023-24 Table 3.10's zero band counts people with a self-employment source and no profit after loss relief. The binding bands people on their self-employment income alone, so a band from 0 to 1 would count every employee without self-employment income. It also lies outside the GBP 1 to GBP 10,000 range María's ruling of 2026-10-29 binds, which her choice of 2026-10-30 extends to Table 3.10's employment-income counts. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 0 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 10000 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 15000 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 20000 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 30000 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 50000 + } + }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "reason_id": "bound_by_table_3_6_from_10000", + "rationale": "SPI 2023-24 Table 3.10's self-employment bands from GBP 10,000 stay with Table 3.6's rows by total income, so the two tables do not pull against each other: María's ruling of 2026-10-29 binds Table 3.10 from GBP 1 to GBP 10,000, the small-profit end of the Budget's trading allowance measures (Table 6.1 line 15), and her choice of 2026-10-30 adds its employment-income counts over the same bands. Signed out of the band fan-out; the eight bands from GBP 1 stay bound.", + "tracking": "microcosm#1418", + "approved_by": "juaristi22", + "approved_on": "2026-10-30", + "row": { + "dimension": "self_employment_income_lower_bound", + "value": 100000 + } + }, { "target_id": "hmrc.spi.self_employment_income.amount_by_self_employment_income_band", "reason_id": "bound_by_table_3_6_from_10000", 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 2c5ae87c39..338b645d4b 100644 --- a/packages/microcosm-build/src/microcosm/build/uk/target_references.json +++ b/packages/microcosm-build/src/microcosm/build/uk/target_references.json @@ -310,6 +310,7 @@ "dwp.hb.households_pension_age_social_rented": "dwp.legacy_benefits", "dwp.hb.households_private_rented": "dwp.housing_benefit", "dwp.hb.households_social_rented": "dwp.housing_benefit", + "dwp.jsa.amount_income_based": "dwp.legacy_benefits", "dwp.jsa_claimants": "dwp.legacy_benefits", "dwp.pension_credit.benefit_units": "dwp.pension_credit", "dwp.pension_credit.benefit_units_65_69": "dwp.pension_credit", @@ -426,6 +427,7 @@ "hmrc.spi.dividend_income.amount_by_total_income_band": "hmrc.survey_of_personal_incomes", "hmrc.spi.dividend_income.count_by_total_income_band": "hmrc.survey_of_personal_incomes", "hmrc.spi.employment_income.amount_by_total_income_band": "hmrc.survey_of_personal_incomes", + "hmrc.spi.employment_income.count_by_self_employment_income_band": "hmrc.survey_of_personal_incomes", "hmrc.spi.employment_income.count_by_total_income_band": "hmrc.survey_of_personal_incomes", "hmrc.spi.other_investment_income.amount_by_total_income_band": "hmrc.survey_of_personal_incomes", "hmrc.spi.private_pension_income.amount_by_total_income_band": "hmrc.survey_of_personal_incomes", @@ -701,6 +703,7 @@ "dwp.hb.households_pension_age_social_rented": "Housing Benefit benefit units, pension age, social rented sector", "dwp.hb.households_private_rented": "Housing Benefit claimants, private rented", "dwp.hb.households_social_rented": "Housing Benefit claimants, social rented", + "dwp.jsa.amount_income_based": "Jobseeker's Allowance spending, income-based", "dwp.jsa_claimants": "Jobseeker\u2019s Allowance claimants", "dwp.pension_credit.benefit_units": "Pension Credit benefit units, Great Britain", "dwp.pension_credit.benefit_units_65_69": "Pension Credit benefit units, claimant aged 65 to 69", @@ -817,6 +820,7 @@ "hmrc.spi.dividend_income.amount_by_total_income_band": "Amount by total income band", "hmrc.spi.dividend_income.count_by_total_income_band": "Count by total income band", "hmrc.spi.employment_income.amount_by_total_income_band": "Amount by total income band", + "hmrc.spi.employment_income.count_by_self_employment_income_band": "Count with employment income by self-employment income band", "hmrc.spi.employment_income.count_by_total_income_band": "Count by total income band", "hmrc.spi.other_investment_income.amount_by_total_income_band": "Amount by total income band", "hmrc.spi.private_pension_income.amount_by_total_income_band": "Amount by total income band", @@ -3583,6 +3587,206 @@ "uprating_from_period": "2023", "uprating_to_period": 2025 }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1_500", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 1 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1_500", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1000_2000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 1000 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_1000_2000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_2000_3000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 2000 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_2000_3000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_3000_4000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 3000 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_3000_4000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_4000_5000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 4000 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_4000_5000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_500_1000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 500 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_500_1000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_5000_7500", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 5000 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_5000_7500", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, + { + "name": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_7500_10000", + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person", + "geography_level": "country", + "geography_id": "K02000001", + "dimension_values": { + "self_employment_income_lower_bound": 7500 + } + }, + "entity": "person", + "measure": "hmrc.spi.employment_income.count_by_self_employment_income_band.band_7500_10000", + "family": "hmrc_spi", + "period": 2025, + "metadata": { + "contract_target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "measure_kind": "prepared_column" + }, + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "uprating_from_period": "2023", + "uprating_to_period": 2025 + }, { "name": "hmrc/dividend_income_income_band_100_000_to_150_000", "ledger_selector": { @@ -48968,6 +49172,33 @@ "assertion_policy": "allow_source_projection", "value_operation": "calendar_year_window" }, + { + "name": "dwp.jsa.amount_income_based", + "ledger_selector": { + "source_name": "dwp", + "source_concept": "dwp.benefit_expenditure_amount", + "entity_name": "government", + "dimension_values": { + "benefit_forecast_line": "unemployment_benefits__jobseekers_allowance__income_based" + }, + "source_measure_id_by_opening_year": { + "2024": "expenditure_2024", + "2025": "expenditure_2025" + }, + "geography_level": "country", + "geography_id": "K03000001" + }, + "entity": "benunit", + "measure": "dwp/jsa/amount_income_based", + "family": "dwp_benefit_expenditure", + "period": 2025, + "metadata": { + "contract_target_id": "dwp.jsa.amount_income_based", + "measure_kind": "prepared_column" + }, + "assertion_policy": "allow_source_projection", + "value_operation": "calendar_year_window" + }, { "name": "microcosm.high_value_homes.over_1m_by_region@E12000001", "ledger_selector": { 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 26e6397d79..cad15cf6a5 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 @@ -836,6 +836,7 @@ "dwp.hb.households_pension_age_social_rented": "Post-freeze fact family (DWP Stat-Xplore Housing Benefit, pension age), no uk-data metric (microcosm#1069 c10).", "dwp.hb.households_pension_age_private_rented": "Post-freeze fact family (DWP Stat-Xplore Housing Benefit, pension age), no uk-data metric (microcosm#1069 c10).", "dwp.hb.amount_pension_age": "Post-freeze fact family (DWP benefit expenditure and caseload tables, pension-age Housing Benefit spending), no uk-data metric (microcosm#1095).", + "dwp.jsa.amount_income_based": "Post-freeze fact family (DWP benefit expenditure and caseload tables, income-based Jobseeker's Allowance spending), no uk-data metric (microcosm#1428).", "ons.households.english_regions": "Post-freeze fact family (each nation's official household estimate: LFS 2025 for England's regions, NRS 2025, Welsh Government rolled to 2025, Census 2021 rolled by LPS stock for Northern Ireland), no uk-data metric (microcosm#1123, nations win).", "nrs.households.scotland": "Post-freeze fact family (each nation's official household estimate: LFS 2025 for England's regions, NRS 2025, Welsh Government rolled to 2025, Census 2021 rolled by LPS stock for Northern Ireland), no uk-data metric (microcosm#1123, nations win).", "welshgov.households.wales": "Post-freeze fact family (each nation's official household estimate: LFS 2025 for England's regions, NRS 2025, Welsh Government rolled to 2025, Census 2021 rolled by LPS stock for Northern Ireland), no uk-data metric (microcosm#1123, nations win).", @@ -895,7 +896,8 @@ "hmrc.itl.savings_tax_at_additional_rate": "Post-freeze fact family (HMRC Income Tax liabilities statistics Table 2.6, July 2026, in Chronicle: Income Tax on savings income at each rate, all payers, the calendar-2025 window of the 2024-25 and 2025-26 projections), no uk-data metric (microcosm#1418).", "hmrc.spi.other_investment_income.amount_by_total_income_band": "New declaration backed by SPI 2023-24 Table 3.7 other income in Chronicle (spi_income_bands_2023_24); no uk-data metric holds other investment income by band (microcosm#1418).", "hmrc.spi.self_employment_income.count_by_self_employment_income_band": "New declaration backed by SPI 2023-24 Table 3.10 in Chronicle (spi_income_bands_2023_24, PolicyEngine/chronicle#394); no uk-data metric holds self-employment income by self-employment band (microcosm#1418).", - "hmrc.spi.self_employment_income.amount_by_self_employment_income_band": "New declaration backed by SPI 2023-24 Table 3.10 in Chronicle (spi_income_bands_2023_24, PolicyEngine/chronicle#394); no uk-data metric holds self-employment income by self-employment band (microcosm#1418)." + "hmrc.spi.self_employment_income.amount_by_self_employment_income_band": "New declaration backed by SPI 2023-24 Table 3.10 in Chronicle (spi_income_bands_2023_24, PolicyEngine/chronicle#394); no uk-data metric holds self-employment income by self-employment band (microcosm#1418).", + "hmrc.spi.employment_income.count_by_self_employment_income_band": "New declaration backed by SPI 2023-24 Table 3.10 in Chronicle (spi_income_bands_2023_24, PolicyEngine/chronicle#394); no uk-data metric holds employment income by self-employment band (microcosm#1418)." }, "suppressed_ancestors": { "hmrc/salary_sacrifice_it_relief_basic_rate": { @@ -971,6 +973,7 @@ "hmrc.spi.self_employment_income.count_by_total_income_band", "hmrc.spi.self_employment_income.count_by_self_employment_income_band", "hmrc.spi.self_employment_income.amount_by_self_employment_income_band", + "hmrc.spi.employment_income.count_by_self_employment_income_band", "hmrc.spi.dividend_income.amount_by_total_income_band", "hmrc.spi.dividend_income.count_by_total_income_band", "hmrc.spi.property_income.amount_by_total_income_band", @@ -1320,6 +1323,7 @@ "dwp.hb.households_pension_age_social_rented", "dwp.hb.households_pension_age_private_rented", "dwp.hb.amount_pension_age", + "dwp.jsa.amount_income_based", "microcosm.high_value_homes.over_1m_by_region", "microcosm.high_value_homes.over_1_5m_by_region", "microcosm.high_value_homes.over_2m_by_region", @@ -4058,6 +4062,54 @@ "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands_times_obr_per_capita_mixed_income", "selector_note": "Uprated from the SPI 2023-24 fact to the 2025 calibration period as recipients times the amount per recipient: the count rows' index (HMRC's projected growth of all taxpayers over all income ranges, Income Tax liabilities statistics Table 2.5) times gov.economic_assumptions.indices.obr.per_capita.mixed_income on the pinned engine, the index policyengine-uk grows self_employment_income by. Each band's mean therefore moves as the engine moves incomes; growing the counts and amounts on unrelated indices would have made calibration add people to each band and tilt them toward its bottom edge (the independent review of microcosm#1420, finding 2). The calibration binds at calendar 2025 under María's ruling of 2026-09-22 (PolicyEngine/chronicle#280 lane)." }, + { + "target_id": "hmrc.spi.employment_income.count_by_self_employment_income_band", + "family": "hmrc_spi", + "geography_levels": [ + "country" + ], + "measurement": { + "entity": "person", + "map_to": "household", + "concept": "uk.person.count", + "groupby_dimension": "hmrc.self_employment_income_band" + }, + "bindings": { + "policyengine": { + "metric_name": "hmrc/employment_income_count_self_employment_income_band", + "value_variable": "person_count", + "from_entity": "person", + "map_to": "household", + "groupby_variable": "self_employment_income_after_loss_relief_annual", + "band_filter_dimension": "self_employment_income", + "band_upper_bound": 10000, + "band_upper_bound_inclusive": false, + "filters": [ + { + "variable": "employment_income_with_benefits_in_kind_annual", + "operator": "!=", + "value": 0 + } + ], + "notes": "SPI 2023-24 Table 3.10: the individuals with a self-employment source, taxpayer or not, who also have employment income, by range of self-employment income. Bound for the eight bands from GBP 1 to GBP 10,000 beside the self-employment counts (María's rulings of 2026-10-29 and 2026-10-30, microcosm#1418): the counts alone let the solve meet each band with traders who have no pay, where more than half of Table 3.10's traders below GBP 3,000 have employment income too, and the trading allowance measures (Table 6.1 line 15) reach the ones who pay Income Tax. The target fans out over every published band and target_reference_signed_exclusions.json signs out the others. Banded by the person's own self-employment income after loss relief, half-open, with the top bound band closed at GBP 10,000 (band_upper_bound). Employment income is the year's pay with its company car and car fuel benefits, employment_income_with_benefits_in_kind_annual, the term every HMRC employment income row reads (microcosm#1430)." + }, + "axiom": { + "metric_name": "hmrc/employment_income_count_self_employment_income_band", + "status": "pending", + "value_rule": "uk.person.count" + } + }, + "ledger_selector": { + "source_name": "hmrc", + "source_concept": "hmrc.spi_table_3_10_employment_income_count", + "groupby_dimension": "hmrc.self_employment_income_band", + "entity_name": "person" + }, + "category_id": "hmrc.survey_of_personal_incomes", + "label": "Count with employment income by self-employment income band", + "uprating_index": "hmrc.itl_2026.taxpayer_count_growth_all_bands", + "selector_note": "Uprated from the SPI 2023-24 fact to the 2025 calibration period by HMRC's projected growth of all taxpayers over all income ranges (Income Tax liabilities statistics Table 2.5), as the self-employment counts by self-employment band are. Table 3.10's employment income is income assessed under the Income Tax (Earnings and Pensions) Act 2003 and other miscellaneous income (its note 4), wider than Table 3.6's: the binding reads employment_income_with_benefits_in_kind_annual, as Table 3.6's employment rows do, so it leaves out miscellaneous income and Incapacity Benefit, contribution-based Employment and Support Allowance and Jobseeker's Allowance. Taxable benefits in kind count on SPI rows, whose pay holds the tape's pay, benefits and termination pay (PAY + EPB + TAXTERM), and the company car and car fuel benefits count on every row; FRS rows' other benefits in kind don't, their pay being the cash pay reported (the #1428 review, finding 13; microcosm#1430). The calibration binds at calendar 2025 under María's ruling of 2026-09-22 (PolicyEngine/chronicle#280 lane)." + }, { "target_id": "hmrc.spi.dividend_income.amount_by_total_income_band", "family": "hmrc_spi", @@ -15031,7 +15083,7 @@ "value_expression": "savings_interest_income + tax_free_savings_income + other_investment_income", "from_entity": "person", "map_to": "household", - "notes": "uk-data holds the last actual flat for later years - a populace-side declaration (uk-data targets/sources/ons_savings.py:39-44 at 12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3). The row measures cash interest in and outside tax-free accounts. From policyengine-uk 2.162.2 savings_interest_income is the interest outside them, which the frame stores so under the additive ISA income contract, with ISA interest apart in individual_savings_account_interest_income; the ISA part, tax_free_savings_income, adds it back (microcosm#1095, microcosm#1360). D.41 also counts interest on gilts, National Savings bonds and other securities, which the frame holds in other_investment_income: the SPI tape's other investment income on SPI rows and, from microcosm#1418, the FRS NS&I and gilt accounts on FRS rows. The engine taxes it as savings income beside savings_interest_income." + "notes": "uk-data holds the last actual flat for later years - a populace-side declaration (uk-data targets/sources/ons_savings.py:39-44 at 12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3). The row measures cash interest in and outside tax-free accounts. From policyengine-uk 2.162.2 savings_interest_income is the interest outside them, which the frame stores so under the additive ISA income contract, with ISA interest apart in individual_savings_account_interest_income; the ISA part, tax_free_savings_income, adds it back (microcosm#1095, microcosm#1360). D.41 also counts interest on gilts, National Savings bonds and other securities, which the frame holds in other_investment_income: the SPI tape's other investment income on SPI rows and, from microcosm#1418, the FRS gilt accounts on FRS rows; FRS NS&I accounts are interest in savings_interest_income (microcosm#1428). The engine taxes it as savings income beside savings_interest_income." }, "axiom": { "metric_name": "ons/savings_interest_income", @@ -22351,12 +22403,12 @@ "bindings": { "policyengine": { "metric_name": "hmrc/other_investment_income_income_band", - "value_variable": "other_investment_income", + "value_variable": "other_investment_income_spi_concept", "from_entity": "person", "map_to": "household", "groupby_variable": "total_income_after_loss_relief_annual", "band_filter_dimension": "total_income", - "notes": "Other investment income of taxpayers by total-income band: SPI Table 3.7's 'Other income' [Note 6], the part of total investment income outside property, bank and building society interest and dividends (SPI's OTHERINV, which the SPI donors carry into other_investment_income). From microcosm#1418 the frame also holds the FRS NS&I and gilt accounts there, and the engine taxes the column as savings income beside savings_interest_income. Banded by person-level total income; band edges come from the fact dimension. No row held the column before, so the ITL Table 2.6 savings tax rows were met mostly through it: on PR A's national (microcosm#1419) it carried about GBP 9.5bn in 2024, where Table 3.7 publishes GBP 5.85bn for 2023-24 (María's ruling of 2026-10-29, microcosm#1418).", + "notes": "Other investment income of taxpayers by total-income band: SPI Table 3.7's 'Other income' [Note 6], the part of total investment income outside property, bank and building society interest and dividends (SPI's OTHERINV, which the SPI donors carry into other_investment_income). On FRS rows the column holds gilt interest, which the engine taxes as savings income beside savings_interest_income, and the measure (other_investment_income_spi_concept) adds the purchased-annuity and trust payments that FRS rows keep in private_pension_income, where the engine's means tests, household income and tax read them; the frame stores their part as annuity_and_trust_income (microcosm#1428). Banded by person-level total income; band edges come from the fact dimension. No row held the column before, so the ITL Table 2.6 savings tax rows were met mostly through it: on PR A's national (microcosm#1419) it carried about GBP 9.5bn in 2024, where Table 3.7 publishes GBP 5.85bn for 2023-24 (María's ruling of 2026-10-29, microcosm#1418).", "filters": [ { "variable": "income_tax_before_winter_fuel_payment_charge_annual", @@ -30526,6 +30578,79 @@ "label": "Housing Benefit spending, pension age", "value_operation": "calendar_year_window" }, + { + "target_id": "dwp.jsa.amount_income_based", + "family": "dwp_benefit_expenditure", + "geography_levels": [ + "country" + ], + "measurement": { + "entity": "benunit", + "concept": "uk.benefits.jsa_income.amount", + "filters": [ + { + "concept": "uk.geography.country", + "operator": "in", + "value": [ + "england", + "scotland", + "wales" + ] + } + ] + }, + "bindings": { + "policyengine": { + "metric_name": "dwp/jsa/amount_income_based", + "value_variable": "jsa_income", + "from_entity": "benunit", + "household_conditions": [ + { + "variable": "region", + "entity": "household", + "reduce": "any", + "operator": "in", + "value": [ + "NORTH_EAST", + "NORTH_WEST", + "YORKSHIRE", + "EAST_MIDLANDS", + "WEST_MIDLANDS", + "EAST_OF_ENGLAND", + "LONDON", + "SOUTH_EAST", + "SOUTH_WEST", + "WALES", + "SCOTLAND" + ], + "map_to": "benunit" + } + ], + "notes": "DWP benefit expenditure and caseload tables, Spring Forecast 2026: the Unemployment_benefits worksheet line 'Jobseeker's Allowance, income-based', nominal GBP, which DWP publishes for Great Britain plus residents overseas (Notes tab), so the model column sums Great Britain households only. Bound at the calendar-2025 window of the fiscal years (three twelfths of the FY2024-25 outturn, nine twelfths of the FY2025-26 forecast; calendar_year_window), as the pension-age Housing Benefit row is. Income-based JSA closes with the move to Universal Credit: GBP 144.7m in FY2023-24, GBP 91.0m in FY2024-25 and under GBP 1m forecast from FY2025-26. Without the split, the calibration met OBR's total JSA (obr.jobseekers_allowance) by scaling income-based reporters with contributory claimants, well above the window's level (microcosm#1428, María's ruling of 2026-10-31). The value is the engine's jsa_income, income-based JSA paid on the reported award." + }, + "axiom": { + "metric_name": "dwp/jsa/amount_income_based", + "status": "pending", + "value_rule": "uk.benefits.jsa_income.amount" + } + }, + "assertion_policy": "allow_source_projection", + "ledger_selector": { + "source_name": "dwp", + "source_concept": "dwp.benefit_expenditure_amount", + "entity_name": "government", + "dimension_values": { + "benefit_forecast_line": "unemployment_benefits__jobseekers_allowance__income_based" + }, + "source_measure_id_by_opening_year": { + "2024": "expenditure_2024", + "2025": "expenditure_2025" + } + }, + "category_id": "dwp.legacy_benefits", + "label": "Jobseeker's Allowance spending, income-based", + "value_operation": "calendar_year_window" + }, { "target_id": "microcosm.high_value_homes.over_1m_by_region", "family": "high_value_homes", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py index d031d82875..f0de6bdbe7 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/frs_spine.py @@ -221,6 +221,21 @@ "owned_company_carries_on_property_business", "owned_company_income_share", ) + +#: FRS PENSION.PENTYPE codes of an annuity not bought with pension funds (4) +#: and a trust or covenant (5), the ADULT ANYPEN4 and ANYPEN5 sources. Their +#: payments stay in private_pension_income, where policyengine-uk's means +#: tests, household income and tax read them: trust and covenant payments +#: are generally non-savings income (ITA 2007 s. 18), and the FRS records the +#: whole annuity payment, of which only the income element is savings income +#: (ITTOIA 2005 s. 717). SPI Table 3.7 counts both as other income (note 6), +#: so the part they make of private_pension_income is stored apart, in +#: ANNUITY_AND_TRUST_INCOME_COLUMN, a calibration-only descriptor that the +#: Table 3.7 other-income measure adds (microcosm#1428 review, finding 1). +FRS_ANNUITY_AND_TRUST_PENSION_TYPES = (4, 5) +#: The descriptor: each person's annual annuity and trust payments, already +#: inside private_pension_income. No engine input reads it. +ANNUITY_AND_TRUST_INCOME_COLUMN = "annuity_and_trust_income" #: Each person's company car from the FRS job tab, the four carriers the #: company_cars stage reads to set policyengine-uk's company car inputs #: (PolicyEngine/uk-autumn-budget-dashboard-2026#316); see @@ -232,6 +247,7 @@ "frs_company_car_private_fuel", "frs_company_car_contribution", ) + OUTPUT_COLUMNS = ( "person_id", "person_benunit_id", @@ -260,6 +276,7 @@ "loss_relief", "ni_class_4_losses_brought_forward", "private_pension_income", + ANNUITY_AND_TRUST_INCOME_COLUMN, "individual_savings_account_interest_income", "savings_interest_income", "dividend_income", @@ -625,7 +642,9 @@ def _assemble_frame( # tape's into both inputs (microcosm#1095). pe_person["loss_relief"] = 0.0 pe_person["ni_class_4_losses_brought_forward"] = 0.0 - _add_private_pension(pe_person, person, frs["pension"]) + pe_person[ANNUITY_AND_TRUST_INCOME_COLUMN] = _add_private_pension( + pe_person, person, frs["pension"] + ) _add_accounts(pe_person, person, frs["accounts"]) owner_managers = frs_owner_manager_inputs(person, frs["job"]) for column in OWNER_MANAGER_COLUMNS: @@ -729,30 +748,43 @@ def _assemble_frame( def _add_private_pension( pe_person: pd.DataFrame, person: pd.DataFrame, pension: pd.DataFrame -) -> None: - pension_payment = _sum_to_entity( - _number(pension, "penpay") * (_number(pension, "penpay") > 0), - pension.get("person_id", pd.Series(dtype="float64")), - person["person_id"], - ) - pension_tax_paid = _sum_to_entity( - _number(pension, "ptamt") - * ((_number(pension, "ptinc") == 2) & (_number(pension, "ptamt") > 0)), - pension.get("person_id", pd.Series(dtype="float64")), - person["person_id"], - ) - pension_deductions_removed = _sum_to_entity( - _number(pension, "poamt") +) -> pd.Series: + """Write private pension income; return its annuity and trust part. + + Each row's gross weekly amount is the payment, any tax paid at source and + any deductions taken out. Every row is private pension income; the rows + of FRS_ANNUITY_AND_TRUST_PENSION_TYPES are also returned, annual, by + person, as the descriptor of that part. + """ + + penpay = _number(pension, "penpay") + ptamt = _number(pension, "ptamt") + poamt = _number(pension, "poamt") + gross = ( + penpay * (penpay > 0) + + ptamt * ((_number(pension, "ptinc") == 2) & (ptamt > 0)) + + poamt * ( ((_number(pension, "poinc") == 2) | (_number(pension, "penoth") == 1)) - & (_number(pension, "poamt") > 0) - ), - pension.get("person_id", pd.Series(dtype="float64")), - person["person_id"], + & (poamt > 0) + ) + ) + if len(pension) and "pentype" not in pension.columns: + raise ValueError( + "FRS PENSION tab needs PENTYPE to tell annuity and trust payments " + "from pensions." + ) + annuity_or_trust = _number(pension, "pentype").isin( + FRS_ANNUITY_AND_TRUST_PENSION_TYPES ) + person_ids = pension.get("person_id", pd.Series(dtype="float64")) pe_person["private_pension_income"] = ( - pension_payment + pension_tax_paid + pension_deductions_removed - ) * WEEKS_IN_YEAR + _sum_to_entity(gross, person_ids, person["person_id"]) * WEEKS_IN_YEAR + ) + return ( + _sum_to_entity(gross * annuity_or_trust, person_ids, person["person_id"]) + * WEEKS_IN_YEAR + ) #: FRS ACCOUNTS.ACCOUNT codes (FRS 2024-25 variable listing, SN 9563) by the @@ -763,25 +795,29 @@ def _add_private_pension( #: ISA interest under the producer's additive ISA income contract #: (microcosm#1360); policyengine-uk's tax_free_savings_income adds it. ISA_INTEREST_COLUMN = "individual_savings_account_interest_income" -#: Deposit interest, savings_interest_income: current (1), NS&I investment -#: (3), savings and investment (5), fixed-rate, guaranteed income and -#: guaranteed growth bond (25; no interest recorded on FRS 2024-25), basic -#: (27) and credit union (28) accounts. -FRS_DEPOSIT_INTEREST_ACCOUNTS = (1, 3, 5, 25, 27, 28) +#: Deposit interest, savings_interest_income: current (1), NS&I Direct Saver +#: (2), NS&I investment (3), savings and investment (5), National Savings +#: capital (10), Pensioners Guaranteed (13), income (16) and deposit (17) +#: bonds, First Option (18), fixed-rate, guaranteed income and guaranteed +#: growth (25) and guaranteed equity (26) bonds, basic (27) and credit union +#: (28) accounts. SPI has counted all interest paid gross or net, NS&I's +#: taxable products included, as interest from banks and building societies +#: since 2016-17 (Table 3.7 note 4), so the NS&I products sit here, not in +#: other income (microcosm#1428; PR A routed them to other income). On FRS +#: 2024-25 codes 16, 25 and 26 record no interest, and 10, 13, 17 and 18 do +#: not occur. +FRS_DEPOSIT_INTEREST_ACCOUNTS = (1, 2, 3, 5, 10, 13, 16, 17, 18, 25, 26, 27, 28) #: Other interest, other_investment_income, which policyengine-uk taxes as #: savings income beside deposit interest (taxable_savings_interest_income): -#: NS&I Direct Saver (2), gilts (6, booked as dividends before), National -#: Savings capital (10), income (16) and deposit (17) bonds, Pensioners -#: Guaranteed (13), First Option (18) and guaranteed equity (26) bonds. The -#: tax-free products stay out: National Savings certificates (11, 12), SAYE -#: (14), Premium Bonds (15), the Yearly Plan (19) and friendly society -#: investments (31). On FRS 2024-25 only the NS&I Direct Saver and gilts carry -#: interest in this group: codes 16 and 26 record none, and 10, 13, 17 and 18 -#: do not occur. Of the codes no list maps, only a share club (24) records -#: interest on FRS 2024-25: the club's returns are on shares, so they are out -#: of scope as interest; profit sharing (22), company share option plans (23), -#: an endowment policy not linked (29) and informal assets (32) record none. -FRS_OTHER_INTEREST_ACCOUNTS = (2, 6, 10, 13, 16, 17, 18, 26) +#: gilts (6, booked as dividends before microcosm#1418), the interest on +#: securities SPI counts as other income (Table 3.7 note 6). The tax-free +#: products stay out: National Savings certificates (11, 12), SAYE (14), +#: Premium Bonds (15), the Yearly Plan (19) and friendly society investments +#: (31). Of the codes no list maps, only a share club (24) records interest on +#: FRS 2024-25: the club's returns are on shares, so they are out of scope as +#: interest; profit sharing (22), company share option plans (23), an +#: endowment policy not linked (29) and informal assets (32) record none. +FRS_OTHER_INTEREST_ACCOUNTS = (6,) #: Dividends: unit and investment trusts (7) and stocks, shares and bonds (8). FRS_DIVIDEND_ACCOUNTS = (7, 8) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py index 86bca0290e..ba3aabaf99 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph.py @@ -629,6 +629,12 @@ ("household", "stocks_and_shares_isa"), } ), + # The gross receipts are drawn on each person's final self-employment + # profit, and the receipt counts support by source household + # (microcosm#1428). + "trading_allowance_receipts": frozenset( + {("person", "self_employment_income"), ("household", "household_source_id")} + ), # The copies' childcare re-draw reads every household's clone path (the # lineage columns of each copy stage) and keeps the native units' cells: # an open surface, like the other take-up redraws. @@ -1250,6 +1256,9 @@ def _cells( "lifetime_isa_payments", ), ), + "trading_allowance_receipts": ( + _Cell("person", "self_employment_gross_receipts", "float64"), + ), "company_cars": ( _Cell("person", "company_car_list_price", "float64"), _Cell("person", "company_car_co2_emissions", "float64"), @@ -1347,6 +1356,10 @@ def _cells( "self_employment_income_other_spells", "private_pension_income_annual_share", "contributory_benefits_annual_share", + # A drawn row's private pension is the tape's, which books annuity and + # trust payments as other income, so its annuity and trust descriptor is + # zero (microcosm#1428). + "annuity_and_trust_income", ) _HMRC_SPI_HIDDEN_STRING = ( "aa_category", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_kernels.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_kernels.py index 2a44b177c5..3d9bd23d8d 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_kernels.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/graph_kernels.py @@ -138,6 +138,7 @@ "student_loans": "student_loans", "private_school_attendance": "private_school_attendance", "isa_subscriptions": "isa_subscriptions", + "trading_allowance_receipts": "trading_allowance_receipts", "company_cars": "company_cars", "childcare_copy_take_up": "childcare_copy_take_up", "age_tail": "age_tail", @@ -240,6 +241,9 @@ hmrc_isa_statistics, receipt_counts, ), + # The claimant draw is keyed on identity and its receipt rounds its + # support (microcosm#1428). + "trading_allowance_receipts": (receipt_counts, stochastic_assignment), # The company cars read their carriers' names and codes from frs_spine, # HMRC's company car tables through their typed loader, the engine's CPI # index and contribution cap, the SPI channel's EPB and tape-row flag, and @@ -610,6 +614,7 @@ def _fixture_implementations(source: Path) -> Mapping[str, object]: ) from .student_loans import UKStudentLoansStageTransform from .take_up_contract import load_uk_take_up_contract + from .trading_allowance_receipts import UKTradingAllowanceReceiptsStageTransform from .uc_capital_coherence import UKUCCapitalCoherenceStageTransform from .uc_deduction_attributes import UKUCDeductionAttributesStageTransform from .uc_reporter_redraw import UKUCReporterRedrawStageTransform @@ -875,6 +880,9 @@ def _fixture_implementations(source: Path) -> Mapping[str, object]: donor_household=was, donor_person=was_person, ), + "trading_allowance_receipts": UKTradingAllowanceReceiptsStageTransform( + stage=stages["trading_allowance_receipts"] + ), "company_cars": UKCompanyCarsStageTransform( stage=stages["company_cars"], engine=engine, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py index da17983b1e..abd9e21206 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/hmrc_uprating.py @@ -1368,6 +1368,46 @@ def _savings_income_level( return value +def uk_obr_savings_income_level( + opening_year: int, + year: int, + *, + rows: list[Mapping[str, Any]] | None = None, +) -> tuple[float, dict[int, tuple[float, str]]]: + """Savings income in fiscal ``year`` over fiscal ``opening_year``. + + The OBR's growth rates chained between the two fiscal years, read from + the vendored resource the SPI savings rows grow by; returns the level and + each year's growth with its source record. The SPI income stage rebases + its donors' savings to the frame's year on it (microcosm#1418 savings + follow-up). A year the resource does not carry is refused. + """ + + if rows is None: + rows = list( + vendored_rows( + UK_OBR_SAVINGS_INCOME_GROWTH_RESOURCE, + concept=UK_OBR_SAVINGS_INCOME_GROWTH_CONCEPT, + period_type="fiscal_year", + ) + ) + if int(year) < int(opening_year): + raise ValueError( + f"The OBR savings income path runs forward only: fiscal year {year} " + f"is before {opening_year}." + ) + growth = _obr_savings_income_growth(rows) + used: dict[int, tuple[float, str]] = {} + level = _savings_income_level( + growth, + opening_year=int(opening_year), + year=int(year), + spec_name="SPI donor savings", + used=used, + ) + return level, used + + def align_hmrc_row_by_obr_savings_income_growth( reference: LedgerTargetReference, registry: TargetRegistry, @@ -1534,4 +1574,5 @@ def align_hmrc_count_row_by_taxpayer_growth( "installed_engine_version", "live_engine_parameter_value", "hmrc_uprating_appliers", + "uk_obr_savings_income_level", ] diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/isa_subscriptions.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/isa_subscriptions.py index 0f8eba40f7..37dafd7564 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/isa_subscriptions.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/isa_subscriptions.py @@ -60,7 +60,6 @@ import numpy as np import pandas as pd -from microcosm.build.gates import FitWeightRecord from microcosm.build.source_manifest import SourceStageSpec from microcosm.build.stochastic_assignment import stable_identity_uniforms from microcosm.build.uk_runtime.cgt_imputation import ( @@ -1643,10 +1642,6 @@ class UKISASubscriptionsStageTransform: statistics: HMRCISAStatistics | None = None last_receipt: Mapping[str, Any] | None = field(default=None, init=False) - @property - def fit_weight_records(self) -> tuple[FitWeightRecord, ...]: - return () - def _table( self, supplied: pd.DataFrame | None, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py index 7cf4b64da3..53299a165f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/measure_simulation.py @@ -41,6 +41,7 @@ SELF_EMPLOYMENT_INCOME_ANNUAL_SHARE, SELF_EMPLOYMENT_INCOME_OTHER_SPELLS, ) +from microcosm.build.uk_runtime.frs_spine import ANNUITY_AND_TRUST_INCOME_COLUMN from microcosm.build.uk_runtime.high_value_homes import ( high_value_home_mask, uk_high_value_home_thresholds, @@ -283,6 +284,33 @@ def savings_interest_outside_isas(frame: Any) -> np.ndarray: return np.maximum(interest, 0.0) +#: SPI Table 3.7's other income (note 6): the engine's other_investment_income +#: plus the purchased-annuity and trust payments that FRS rows keep in +#: private_pension_income, where the engine's means tests, household income +#: and tax read them (microcosm#1428). The frame stores each person's annuity +#: and trust payments at the dataset's year +#: (frs_spine.ANNUITY_AND_TRUST_INCOME_COLUMN), and their share of the stored +#: private pension carries them to the measurement year on the engine's own +#: private pension path. A frame without the column (the enhanced FRS +#: reference) reads the engine's other income alone. A reserved name. +UK_SPI_OTHER_INVESTMENT_INCOME = "other_investment_income_spi_concept" + + +def annuity_and_trust_share(frame: Any) -> np.ndarray: + """Each person's annuity and trust share of their stored private pension.""" + + person = frame.table("person") + if ( + ANNUITY_AND_TRUST_INCOME_COLUMN not in person + or "private_pension_income" not in person + ): + return np.zeros(len(person)) + part = person[ANNUITY_AND_TRUST_INCOME_COLUMN].to_numpy(dtype=float) + pension = person["private_pension_income"].to_numpy(dtype=float) + share = np.divide(part, pension, out=np.zeros(len(person)), where=pension > 0) + return np.clip(share, 0.0, 1.0) + + #: The named terms the resolver computes: measures declared once as #: expressions of the binding interpreter's grammar, evaluated from their #: leaves wherever a binding names them (a value, a band or a filter, on the @@ -568,6 +596,21 @@ def compute_uk_measure_input( else "frame_columns:savings_interest_income", ) + if variable == UK_SPI_OTHER_INVESTMENT_INCOME: + if entity != "person": + raise KeyError(f"{variable} is person-only: {entity}") + other, route = compute_uk_measure_input( + frame, simulation, "person", "other_investment_income", year + ) + pension, _ = compute_uk_measure_input( + frame, simulation, "person", "private_pension_income", year + ) + return ( + other + annuity_and_trust_share(frame) * pension, + "engine_components:other_investment_income" + f"+annuity_and_trust_share*private_pension_income:{route}", + ) + if variable in DFE_SPRING_TERM_MEASURES: if entity != "person": raise KeyError(f"DfE spring-term measures are person-only: {entity}") @@ -1065,11 +1108,12 @@ def __init__( "High-value home measures must not be persisted as source inputs: " f"{persisted_high_value}" ) - if UK_SAVINGS_INTEREST_OUTSIDE_ISAS in set(map(str, frame.table("person"))): - raise ValueError( - f"{UK_SAVINGS_INTEREST_OUTSIDE_ISAS} must not be persisted as a " - "source input." - ) + for reserved in ( + UK_SAVINGS_INTEREST_OUTSIDE_ISAS, + UK_SPI_OTHER_INVESTMENT_INCOME, + ): + if reserved in set(map(str, frame.table("person"))): + raise ValueError(f"{reserved} must not be persisted as a source input.") persisted_spring_term = sorted( set(DFE_SPRING_TERM_MEASURES) & set(map(str, frame.table("person"))) ) @@ -1193,6 +1237,12 @@ def knows(self, entity: str, variable: str) -> bool: return entity == "person" and "savings_interest_income" in set( map(str, self.frame.table("person")) ) + if variable == UK_SPI_OTHER_INVESTMENT_INCOME: + return ( + entity == "person" + and self.knows("person", "other_investment_income") + and self.knows("person", "private_pension_income") + ) if variable in DFE_SPRING_TERM_MEASURES: return entity == "person" and all( self.knows("person", name) for name in DFE_SPRING_TERM_ENGINE_INPUTS @@ -1237,7 +1287,10 @@ def entity_for(self, variable: str) -> str | None: return "household" if variable == UK_CHILD_BENEFIT_CHILD_COUNT: return "benunit" - if variable == UK_SAVINGS_INTEREST_OUTSIDE_ISAS: + if variable in ( + UK_SAVINGS_INTEREST_OUTSIDE_ISAS, + UK_SPI_OTHER_INVESTMENT_INCOME, + ): return "person" if _cgt_model_measure(variable, self.year) is not None: return "person" diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_publication.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_publication.py index 67518dc5ec..abd1a444f7 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_publication.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/orrery_publication.py @@ -15,14 +15,14 @@ from pathlib import Path from typing import Any, TypedDict -from microcosm_emitter.orrery.client import publication_inventory, publish_graph -from microcosm_emitter.orrery.contracts import ( +from microcosm_emitter_interface.orrery import ( PublicationFileRole, PublicationReceipt, ) from microcosm.build.artifact_files import file_artifact, materialize_bytes from microcosm.build.staging_dataset import StagedDatasetDelivery +from microcosm.build.telemetry_emitter import publication_inventory, publish_graph from microcosm.graph import ContentStore from microcosm.graph.canonical import canonical_json from microcosm.graph.evidence import collect_execution_evidence, load_run_evidence diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/rowwise_staging.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/rowwise_staging.py index a27fc79681..290f463987 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/rowwise_staging.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/rowwise_staging.py @@ -8,8 +8,10 @@ These helpers were moved from ``tools/build_uk_rowwise_candidate.py`` so the graph full-build driver and the rowwise tool stage identically; the tool -imports them back. ``_hub_api`` and ``_hub_token`` are the test seams the -drivers' tests patch on this module. +imports them back. The run files go to the build's emitter, which commits +them with the build's own credential; the staged dataset is still uploaded +here. ``_hub_api`` and ``_hub_token`` are the test seams the drivers' tests +patch on this module for the staged dataset. """ from __future__ import annotations @@ -105,8 +107,14 @@ def active_telemetry_emitter() -> LocalTelemetryEmitter | None: return _ACTIVE_EMITTER +def _run_file_emitter() -> Any: + """The client of this build attempt's emitter, which takes its run files.""" + + return None if _ACTIVE_EMITTER is None else _ACTIVE_EMITTER.client + + def _hub_api() -> Any: - """The Hub client used for the run bundle and staged dataset (test seam).""" + """The Hub client used for the staged dataset (test seam).""" from huggingface_hub import HfApi @@ -215,7 +223,7 @@ def create_staging_run_bundle( delivery_mode="local_only" if local_only else "local_and_remote", repo_id=None if local_only else args.staging_repo_id, upload_interval_seconds=args.staging_upload_interval_seconds, - api=None if local_only else _hub_api(), + emitter_client=None if local_only else _run_file_emitter(), ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_income.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_income.py index 9f185ec422..1f4e36dea1 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_income.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_income.py @@ -4,7 +4,7 @@ import hashlib import math -from collections.abc import Mapping, Sequence +from collections.abc import Collection, Mapping, Sequence from dataclasses import dataclass from functools import cache from importlib import import_module @@ -37,6 +37,7 @@ FRS_HMRC_UBISJA_COLUMN, ) from microcosm.build.uk_runtime.frs_spine import ( + ANNUITY_AND_TRUST_INCOME_COLUMN, FRS_LANDLORD_CARRIER_COLUMN, ISA_INTEREST_COLUMN, uc_gainful_self_employment, @@ -210,8 +211,39 @@ #: microcosm#1095) until microcosm#1418 moved them to the OBR's savings income #: forecast, so the calibration closes the gap between the two. The engine #: lockstep test holds both indices to the engine's. +#: +#: Since the microcosm#1418 savings follow-up, interest and other income +#: reach the frame's year on SPI's own path instead +#: (``rebase_spi_donor_savings``): HMRC's published 2023-24 Table 3.7 amounts +#: by range of total income, then the OBR's savings income growth, the path +#: the band targets take. On their engine indices the 2022-23 tape reached +#: 2024 at about half of SPI's 2023-24 other income (GDP per head, x1.09, +#: against x1.65 in that one year) and short of its interest, and the solve +#: met the band targets by stretching the few households that carry them. +#: Both columns run on the projection's index from the frame's year on, named +#: here. SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION = { "savings_interest_income": "gov.economic_assumptions.indices.obr.per_capita.gdp", + "other_investment_income": "gov.economic_assumptions.indices.obr.per_capita.gdp", +} +#: The published rows the donor savings rebase reads (vendored from the +#: Chronicle feed pin), the year they describe, and each rebased column's +#: Table 3.7 concept. +SPI_SAVINGS_REBASE_RESOURCE = "hmrc_spi_table_3_7_savings_rows.json" +#: The prepared tape's taxpayer flag, the records the rebase factors read. +SPI_DONOR_TAXPAYER_COLUMN = "is_taxpayer" +#: The tape's TAXPAYER codes: 1, a taxpayer, and 2, not. +SPI_TAXPAYER_CODES = (1, 2) +#: The band factors assume the tape's FACT weights gross to the taxpayer +#: population. A column whose banded tape amount is under this share of the +#: published amount does not (a synthetic tape, whose factors would run to +#: millions), and is left as it is. The production tape holds about 0.37 of +#: the published interest and 0.6 of the other income. +SPI_SAVINGS_REBASE_MINIMUM_GROSSING = 0.1 +SPI_SAVINGS_REBASE_YEAR = 2023 +SPI_SAVINGS_REBASE_CONCEPTS = { + "savings_interest_income": "hmrc.spi_savings_interest_income_amount", + "other_investment_income": "hmrc.spi_other_income_amount", } # Use the pinned engine's variable-specific indices. None explicitly retains # nominal amounts where no same-scope indexed mapping has been reviewed; @@ -696,6 +728,7 @@ class UKSPIIncomeImputationResult: state_pension_age: int | None = None gainful_self_employment_refresh: Mapping[str, object] | None = None pension_coherence: Mapping[str, object] | None = None + gift_anchor: Mapping[str, object] | None = None @dataclass(frozen=True) @@ -853,6 +886,26 @@ def impute_uk_spi_income_support( raise TypeError("donor_table must be a pandas DataFrame.") raw_donor = donor_table.copy(deep=True) donor = _prepare_spi_donor(raw_donor, seed=seed, age_model=donor_age_model) + # The band donors place each record by the published total, which holds + # the tape's own savings, so they read the tape from before the rebase too. + prepared_donor = donor + # The tape's interest and other income move to SPI's 2023-24 bands before + # any draw, so the forest and the band donors read the same rebased tape + # (microcosm#1418 savings follow-up). + savings_rebase = None + rebased_columns: frozenset[str] = frozenset() + if rebase_income_to_build_period and int(build_period) >= SPI_SAVINGS_REBASE_YEAR: + rebase_year_factors, _ = _spi_income_uprating_factors(SPI_SAVINGS_REBASE_YEAR) + donor, savings_rebase = rebase_spi_donor_savings( + donor, + spi_savings_rebase_published(), + income_factors=rebase_year_factors, + ) + rebased_columns = frozenset( + column + for column, entry in savings_rebase["columns"].items() + if "skipped" not in entry + ) donor_age_draw = { **donor.attrs.get("age_draw", {}), "stage1_query_age": SPI_STAGE1_QUERY_AGE_RULE, @@ -968,6 +1021,13 @@ def impute_uk_spi_income_support( columns=initialize_frs_channel_columns, ) person = _seed_frs_hmrc_auxiliary_leaves(person, spi_people=spi_people) + # The stage-1 transport reads each twin's analogue. A stage-1 output that is + # its own analogue and that the frame does not carry (other income, on a + # frame whose FRS rows hold none) is the stage-time zero the fill below + # writes, on every row, so the twins locate as non-carriers (microcosm#1428). + for column in SPI_INCOME_QRF_OUTPUT_COLUMNS: + if SPI_STAGE1_ANALOGUE_COLUMNS.get(column) == column and column not in person: + person[column] = 0.0 base_household = household[household_channel] == BASE_FRS_SUPPORT_CHANNEL if "clone_index" in household: @@ -1105,8 +1165,10 @@ def fit_reference(encoded: pd.DataFrame, observed: pd.DataFrame): uprating_factors = dict.fromkeys(SPI_INCOME_QRF_OUTPUT_COLUMNS, 1.0) if rebase_income_to_build_period: uprating_factors, income_uprating = _spi_income_uprating_factors( - int(build_period) + int(build_period), rebased_columns=rebased_columns ) + if savings_rebase is not None: + income_uprating = {**income_uprating, "savings_rebase": savings_rebase} stage1_draws = stage1_draws.mul(pd.Series(uprating_factors), axis="columns") nonnegative_stage1 = [ column @@ -1135,6 +1197,7 @@ def fit_reference(encoded: pd.DataFrame, observed: pd.DataFrame): household=household, spi_people=spi_people, uprating_factors=uprating_factors, + original_donor=prepared_donor, state_pension_age=( None if donor_age_model is None else donor_age_model.state_pension_age ), @@ -1302,6 +1365,9 @@ def fit_reference(encoded: pd.DataFrame, observed: pd.DataFrame): ) guard_receipts.append(receipt) + person, gift_anchor = _anchor_spi_gifts_to_tape( + person, household, donor_full, spi_people=spi_people + ) # Non-ISA interest is the stage-1 taxable draw; ISA interest is the stage-2 # draw beside it (microcosm#1360). person.loc[spi_people, "savings_interest_income"] = taxable_interest_draw @@ -1317,6 +1383,7 @@ def fit_reference(encoded: pd.DataFrame, observed: pd.DataFrame): ) person = _refresh_landlord_carrier(person, spi_people=spi_people) person = _refresh_annual_income_descriptors(person, spi_people=spi_people) + person = _clear_annuity_and_trust_descriptor(person, spi_people=spi_people) # The flag is the stage's last new column, where the graph's typed cells # place it (the legacy oracle and the graph must agree on column order). person[SPI_INCOME_RECIPIENT_COLUMN] = ( @@ -1357,6 +1424,7 @@ def fit_reference(encoded: pd.DataFrame, observed: pd.DataFrame): state_pension_age=int(state_pension_age), gainful_self_employment_refresh=gainful_self_employment, pension_coherence=pension_coherence, + gift_anchor=gift_anchor, ) @@ -1410,6 +1478,7 @@ def _resample_band_donor_leaves( seed: int, age_pool_minimum: int | None = None, state_pension_age: int | None = None, + original_donor: pd.DataFrame | None = None, ) -> tuple[pd.DataFrame, dict[str, object]]: """Give every reserved band carrier a band-conditional tape draw. @@ -1511,22 +1580,16 @@ def _resample_band_donor_leaves( # (microcosm#1106). The loss draws travel the same way: the published # total holds the profit net of losses brought forward, which # self_employment_income already carries (microcosm#1095). - income_columns = [ - column - for column in columns - if column not in (SPI_PROPERTY_FINANCE_COSTS_COLUMN, *SPI_LOSS_DRAW_COLUMNS) - ] - income_factors = np.asarray( - [float(uprating_factors[column]) for column in income_columns] - ) - published_total = donor["total_income"].to_numpy(dtype=float) leaf_values = donor[columns].to_numpy(dtype=np.float64) - income_values = donor[income_columns].to_numpy(dtype=np.float64) # The total income a drawn record realises on the frame: its income leaves - # at the stage's factors plus whatever of the published total the leaves do - # not carry, held nominal. - total_income = income_values @ income_factors + np.maximum( - published_total - income_values.sum(axis=1), 0.0 + # at the stage's factors, net of its employment expenses and without its + # gifts, plus what the tape's own leaves leave of its published total, + # held nominal (_realised_total_income). ``original_donor`` is the tape + # before the savings rebase, whose leaves the published total holds. + total_income = _realised_total_income( + donor if original_donor is None else original_donor, + donor, + uprating_factors, ) donor_region = donor["region"].astype(str).to_numpy() fact = donor["FACT"].to_numpy(dtype=float) @@ -1675,10 +1738,23 @@ def _resample_band_donor_leaves( @cache -def _spi_income_uprating_factors(year: int): - """Rebase SPI money flows before conditioning on build-year FRS incomes.""" +def _spi_income_uprating_factors( + year: int, *, rebased_columns: Collection[str] | None = None +): + """Rebase SPI money flows before conditioning on build-year FRS incomes. + + ``rebased_columns`` names the savings columns rebase_spi_donor_savings + moved to 2023-24, which grow on the OBR's savings path from there; a + savings column it left as it was (a tape that does not gross) grows on + its engine index from 2022-23. None takes every rebased concept. + """ from policyengine_uk import CountryTaxBenefitSystem + from microcosm.build.uk_runtime.hmrc_uprating import ( + UK_OBR_SAVINGS_INCOME_GROWTH_INDEX_CONCEPT, + uk_obr_savings_income_level, + ) + if year < SPI_DONOR_INCOME_YEAR: raise ValueError("SPI income cannot be rebased before its source year.") if set(SPI_INCOME_UPRATING_VARIABLES) != set(SPI_INCOME_QRF_OUTPUT_COLUMNS): @@ -1689,6 +1765,31 @@ def _spi_income_uprating_factors(year: int): factors = {} columns = {} for column, variable_name in SPI_INCOME_UPRATING_VARIABLES.items(): + rebased = ( + column in SPI_SAVINGS_REBASE_CONCEPTS + if rebased_columns is None + else column in rebased_columns + ) + if rebased and year >= SPI_SAVINGS_REBASE_YEAR: + # rebase_spi_donor_savings has moved the column to SPI's 2023-24 + # bands; the OBR's savings income growth carries it on. + factor, used = uk_obr_savings_income_level(SPI_SAVINGS_REBASE_YEAR, year) + factors[column] = factor + columns[column] = { + "variable": variable_name, + "index": UK_OBR_SAVINGS_INCOME_GROWTH_INDEX_CONCEPT, + "factor": factor, + "basis": "spi_published_bands_then_obr_savings_income", + "from_period": SPI_SAVINGS_REBASE_YEAR, + "growth_by_year": { + str(fiscal_year): growth + for fiscal_year, (growth, _) in used.items() + }, + "dataset_projection_index": ( + SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION[variable_name] + ), + } + continue path = None factor = 1.0 if variable_name is not None: @@ -1772,6 +1873,269 @@ def prepare_spi_donor_table( return _prepare_spi_donor(raw, seed=seed, age_model=age_model) +def spi_savings_rebase_published( + rows: Sequence[Mapping[str, Any]] | None = None, +) -> dict[str, dict[int, float]]: + """HMRC's 2023-24 Table 3.7 amounts by band, for each rebased column. + + Read from the vendored resource (``SPI_SAVINGS_REBASE_RESOURCE``): the + United Kingdom interest from banks and building societies and other + income of taxpayers, keyed by each band's lower bound of total income. + Both columns must name the same bands, once each. + """ + + if rows is None: + from microcosm.build.uk_runtime.ledger_fact_vendoring import vendored_rows + + rows = vendored_rows(SPI_SAVINGS_REBASE_RESOURCE) + columns = { + concept: column for column, concept in SPI_SAVINGS_REBASE_CONCEPTS.items() + } + published: dict[str, dict[int, float]] = { + column: {} for column in SPI_SAVINGS_REBASE_CONCEPTS + } + for row in rows: + column = columns.get(str(row.get("concept"))) + if column is None: + continue + period = int((row.get("period") or {}).get("value", -1)) + if period != SPI_SAVINGS_REBASE_YEAR: + raise ValueError( + f"{SPI_SAVINGS_REBASE_RESOURCE}: a {column} row describes {period}, " + f"not {SPI_SAVINGS_REBASE_YEAR}." + ) + bound = int((row.get("dimensions") or {})["total_income_lower_bound"]) + if bound in published[column]: + raise ValueError( + f"{SPI_SAVINGS_REBASE_RESOURCE}: {column} has two rows from {bound}." + ) + value = float(row["value"]) + if not np.isfinite(value) or value < 0.0: + raise ValueError( + f"{SPI_SAVINGS_REBASE_RESOURCE}: {column} from {bound} is {value!r}." + ) + published[column][bound] = value + bands = {column: tuple(sorted(by_bound)) for column, by_bound in published.items()} + if not all(bands.values()) or len(set(bands.values())) != 1: + raise ValueError( + f"{SPI_SAVINGS_REBASE_RESOURCE} must give every rebased column the " + f"same total-income bands: {bands}." + ) + return published + + +#: The rebase bands the tape once on its income moved to 2023-24, the year the +#: published bands describe: each income leaf at its 2022-23 to 2023-24 factor, +#: each rebased column at its factor over all bands, and the rest of the +#: published total held nominal, as the band donors' realised income is built. +#: Its consumers band again on income uprated to the frame's year, so banding +#: on 2022-23 income counted the band-edge migration twice (microcosm#1428 +#: review, finding 6). Moving each record's savings by its own band's factor +#: has no fixed point: the band sets the factor and the factor the band, and on +#: the production tape records kept changing band from pass to pass. + + +#: The tape's gift leaves relieve income rather than add to it, so a record's +#: total income never counts them (Vahid's review of microcosm#1428). +SPI_RELIEF_LEAF_COLUMNS = ("gift_aid", "charitable_investment_gifts") + + +def _realised_total_income( + donor: pd.DataFrame, + values: pd.DataFrame, + factors: Mapping[str, float], +) -> np.ndarray: + """Each tape record's total income with its leaves moved by ``factors``. + + The published total (SPI's TI) holds the income leaves net of employment + expenses, which are deducted from pay, and none of the gift leaves, which + are reliefs; restricted finance costs and the loss draws travel with their + leaves. So a record's income moves by its income leaves' growth less its + expenses' growth, and the rest of its published total, which ``donor``'s + own leaves do not itemise, is held nominal, negative where they over-count + it. ``values`` holds the leaves that move: the tape's own, or rebased ones. + With every factor at one and the tape's own leaves the result is the + published total itself (Vahid's review of microcosm#1428). + """ + + income = [ + column + for column in SPI_INCOME_QRF_OUTPUT_COLUMNS + if column in donor + and column + not in ( + SPI_PROPERTY_FINANCE_COSTS_COLUMN, + *SPI_LOSS_DRAW_COLUMNS, + *SPI_RELIEF_LEAF_COLUMNS, + SPI_HMRC_EMPLOYMENT_EXPENSES_COLUMN, + ) + ] + expenses = SPI_HMRC_EMPLOYMENT_EXPENSES_COLUMN in donor + + def net(frame: pd.DataFrame, moved: Mapping[str, float]) -> np.ndarray: + total = frame[income].to_numpy(dtype=np.float64) @ np.asarray( + [float(moved.get(column, 1.0)) for column in income] + ) + if expenses: + total = total - frame[SPI_HMRC_EMPLOYMENT_EXPENSES_COLUMN].to_numpy( + dtype=np.float64 + ) * float(moved.get(SPI_HMRC_EMPLOYMENT_EXPENSES_COLUMN, 1.0)) + return total + + rest = donor["total_income"].to_numpy(dtype=np.float64) - net(donor, {}) + return net(values, factors) + rest + + +def rebase_spi_donor_savings( + donor: pd.DataFrame, + published: Mapping[str, Mapping[int, float]], + *, + income_factors: Mapping[str, float] | None = None, +) -> tuple[pd.DataFrame, dict[str, object]]: + """Move the tape's interest and other income to SPI's 2023-24 bands. + + Each taxpayer donor's column is scaled by its band's factor: HMRC's + published 2023-24 amount over the tape's FACT-weighted amount for the + taxpayers in the same range of total income, since Table 3.7 counts + taxpayers only. The tape is banded once on its income moved to 2023-24 + (``_realised_total_income``): each income leaf at its 2022-23 to 2023-24 + factor (``income_factors``; none holds the leaves nominal) and each + rebased column at its factor over all bands, the published total over the + taxpayers' tape total. A taxpayer is a record the tape flags (TAXPAYER 1) + or one whose income crosses the first band's lower bound, the Personal + Allowance, by 2023-24, so a saver who becomes a taxpayer is counted once; + the factor over all bands counts the same taxpayers, finding the crossers + on income moved without their savings. A flagged taxpayer below the first band sits in + it, as the table's lowest band holds those taxpayers (note 8); a tape + without the flag counts every record at or above the first band. Any + other donor takes the factor of all bands together. Banded so, the rebased + tape reproduces the published amounts band by band; a record whose band's + factor differs from the factor of all bands can sit across an edge when + banded on its rebased income. The OBR's savings income growth then + carries both columns to the frame's year (``_spi_income_uprating_factors``). + A band the tape carries none of has nothing to scale, and a band whose tape + amount is under SPI_SAVINGS_REBASE_MINIMUM_GROSSING of its published amount + takes the factor of all bands; both are named in the receipt. A column + whose tape does not gross to the population is left as it is, and the + receipt says so. The receipt carries the factors only. + """ + + bounds = sorted(next(iter(published.values()))) + edges = np.asarray(bounds, dtype=np.float64) + weights = donor["FACT"].to_numpy(dtype=np.float64) + flagged = SPI_DONOR_TAXPAYER_COLUMN in donor + tape_taxpayer = ( + donor[SPI_DONOR_TAXPAYER_COLUMN].to_numpy(dtype=bool) + if flagged + else np.zeros(len(donor), dtype=bool) + ) + band_2022 = ( + np.searchsorted( + edges, donor["total_income"].to_numpy(dtype=np.float64), side="right" + ) + - 1 + ) + factors_in = dict(income_factors or {}) + rebased = donor.copy() + receipt: dict[str, object] = { + "resource": SPI_SAVINGS_REBASE_RESOURCE, + "from_period": SPI_DONOR_INCOME_YEAR, + "to_period": SPI_SAVINGS_REBASE_YEAR, + "band_by": "total_income_moved_to_2023_24", + "factors_over": ( + "taxpayers: TAXPAYER 1, or income crossing the first band by 2023-24" + if flagged + else "all_records_at_or_above_the_first_band" + ), + "band_lower_bounds": [int(bound) for bound in bounds], + "columns": {}, + } + original: dict[str, np.ndarray] = {} + targets: dict[str, np.ndarray] = {} + banding_factors: dict[str, float] = {} + # Both passes count the same taxpayers: those the tape flags and the + # records whose income crosses the first band by 2023-24, found here on + # income moved without the savings the banding factor then moves (Vahid's + # review of microcosm#1428). + first = ( + np.searchsorted( + edges, _realised_total_income(donor, donor, factors_in), side="right" + ) + - 1 + ) + first_crossed = ~tape_taxpayer & (band_2022 < 0) & (first >= 0) + first_taxpayer = tape_taxpayer | first_crossed if flagged else (first >= 0) + for column, by_bound in published.items(): + values = donor[column].to_numpy(dtype=np.float64) + target = np.asarray([float(by_bound[bound]) for bound in bounds]) + taxpayer = first_taxpayer + tape = np.bincount( + np.clip(first, 0, None)[taxpayer], + weights=(weights * values)[taxpayer], + minlength=len(bounds), + ) + carried = tape > 0.0 + # Over the bands the tape carries; an empty band is left as it is. + if ( + tape[carried].sum() + < SPI_SAVINGS_REBASE_MINIMUM_GROSSING * target[carried].sum() + ): + receipt["columns"][column] = { + "concept": SPI_SAVINGS_REBASE_CONCEPTS[column], + "skipped": "the tape's weights do not gross to the published amounts", + } + continue + original[column] = values + targets[column] = target + banding_factors[column] = ( + float(target[carried].sum() / tape[carried].sum()) if carried.any() else 1.0 + ) + if not original: + return rebased, receipt + + income = _realised_total_income(donor, donor, {**factors_in, **banding_factors}) + band = np.searchsorted(edges, income, side="right") - 1 + crossed = ~tape_taxpayer & (band_2022 < 0) & (band >= 0) + taxpayer = tape_taxpayer | crossed if flagged else (band >= 0) + band = np.where(taxpayer, np.clip(band, 0, None), band) + for column, values in original.items(): + target = targets[column] + tape = np.bincount( + band[taxpayer], + weights=(weights * values)[taxpayer], + minlength=len(bounds), + ) + carried = tape > 0.0 + thin = carried & (tape < SPI_SAVINGS_REBASE_MINIMUM_GROSSING * target) + usable = carried & ~thin + all_bands = ( + float(target[usable].sum() / tape[usable].sum()) if usable.any() else 1.0 + ) + factors = np.where(usable, target / np.where(usable, tape, 1.0), all_bands) + rebased[column] = values * np.where( + taxpayer, factors[np.clip(band, 0, None)], all_bands + ) + receipt["columns"][column] = { + "concept": SPI_SAVINGS_REBASE_CONCEPTS[column], + "banding_factor": banding_factors[column], + "band_factors": { + str(bound): float(factor) + for bound, factor, kept in zip(bounds, factors, usable, strict=True) + if kept + }, + "below_first_band_factor": all_bands, + "bands_without_tape_amounts": [ + int(bound) + for bound, kept in zip(bounds, carried, strict=True) + if not kept + ], + "bands_too_thin_to_gross": [ + int(bound) for bound, kept in zip(bounds, thin, strict=True) if kept + ], + } + return rebased, receipt + + def _prepare_spi_donor( raw: pd.DataFrame, *, @@ -1849,6 +2213,19 @@ def _prepare_spi_donor( # on the prepared tape for the band donors' propensity and band pools; # they are never QRF inputs or outputs. donor["total_income"] = numeric["TI"].to_numpy(dtype=float) + # Table 3.7 counts taxpayers only, so the savings rebase reads the tape's + # TAXPAYER flag (SPI_TAXPAYER_CODES: 1, a taxpayer; 2, not). A tape without + # it carries no flag, and the rebase's receipt says it counted every record + # at or above the first band (microcosm#1428). + if "TAXPAYER" in raw.columns: + taxpayer = pd.to_numeric(raw["TAXPAYER"], errors="coerce") + unknown = sorted(set(taxpayer.dropna().unique()) - set(SPI_TAXPAYER_CODES)) + if taxpayer.isna().any() or unknown: + raise ValueError( + "SPI TAXPAYER must be 1 (a taxpayer) or 2 (not) on every record; " + f"found {unknown or 'blanks'}." + ) + donor[SPI_DONOR_TAXPAYER_COLUMN] = taxpayer.eq(1).to_numpy() donor["is_composite"] = numeric["AGERANGE"].astype(int).eq(-1).to_numpy() # The published age band travels with the record so band pools can match # a carrier's age band; composites (-1) have none and never age-match. @@ -2590,6 +2967,56 @@ def _spi_pension_coherence( return person, receipt +#: Gift Aid and charitable investment gifts are sparse leaves the stage-1 +#: chain draws after, and conditioned on, the income leaves, so a change to +#: the donor savings rebase reshuffles which few donors' gifts the copies +#: draw: rebasing on the tape's taxpayers moved the copies' charitable +#: investment gifts far from the tape's own total (microcosm#1428). Their +#: totals over the drawn copies, at the stage's weights, are anchored to the +#: tape's own FACT-weighted totals (María's ruling of 2026-10-31). Both +#: columns are nominal, as their uprating mapping (None) keeps them. +SPI_GIFT_ANCHOR_COLUMNS = ("gift_aid", "charitable_investment_gifts") +SPI_GIFT_ANCHOR_BASIS = ( + "each column's total over the drawn copies at the stage's household " + "weights equals the prepared tape's FACT-weighted total; a column the " + "tape or the copies carry none of is left as drawn" +) + + +def _anchor_spi_gifts_to_tape( + person: pd.DataFrame, + household: pd.DataFrame, + donor: pd.DataFrame, + *, + spi_people: pd.Series, +) -> tuple[pd.DataFrame, dict[str, object]]: + """Scale the copies' gift leaves to the tape's FACT-weighted totals. + + The receipt records each column's factor only, never a total or a count. + """ + + weights = _person_household_weights(person, household).to_numpy(dtype=np.float64) + rows = spi_people.reindex(person.index).fillna(False).to_numpy(dtype=bool) + fact = donor["FACT"].to_numpy(dtype=np.float64) + factors: dict[str, float] = {} + for column in SPI_GIFT_ANCHOR_COLUMNS: + tape = float((fact * donor[column].to_numpy(dtype=np.float64)).sum()) + values = person[column].to_numpy(dtype=np.float64, copy=True) + drawn = float((weights[rows] * values[rows]).sum()) + if tape <= 0.0 or drawn <= 0.0: + factors[column] = 1.0 + continue + factor = tape / drawn + values[rows] = values[rows] * factor + person[column] = values + factors[column] = factor + return person, { + "columns": list(SPI_GIFT_ANCHOR_COLUMNS), + "basis": SPI_GIFT_ANCHOR_BASIS, + "factors": factors, + } + + def _person_household_weights( person: pd.DataFrame, household: pd.DataFrame, @@ -3012,6 +3439,29 @@ def _refresh_annual_income_descriptors( return person +def _clear_annuity_and_trust_descriptor( + person: pd.DataFrame, *, spi_people: pd.Series +) -> pd.DataFrame: + """Zero a drawn row's annuity and trust descriptor. + + A drawn row's private pension is the tape's, which excludes purchased + annuity and trust income: SPI books those as other income, in the drawn + other_investment_income (microcosm#1428). An undrawn copy keeps its twin's + descriptor with its twin's pension. + """ + + if ANNUITY_AND_TRUST_INCOME_COLUMN not in person: + return person + _assign_spi_values( + person, + spi_people, + ANNUITY_AND_TRUST_INCOME_COLUMN, + np.zeros(int(spi_people.sum())), + default=0.0, + ) + return person + + def _refresh_uc_gainful_self_employment( person: pd.DataFrame, *, spi_people: pd.Series ) -> tuple[pd.DataFrame, dict[str, object] | None]: diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_rank_transport.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_rank_transport.py index 10ba7f27a5..33728b9b84 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_rank_transport.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_rank_transport.py @@ -119,7 +119,12 @@ "dividend_income": "dividend_income", "private_pension_income": "private_pension_income", "property_income": "property_income", - "other_investment_income": None, + # The twin's own other income locates the draw (microcosm#1428): its gilt + # interest, so a copy's OTHERINV draw ranks with its twin's holdings + # instead of an identity uniform that ignores them. The twin's purchased + # annuity and trust payments stay in private_pension_income, whose + # analogue they join. + "other_investment_income": "other_investment_income", "gift_aid": None, "charitable_investment_gifts": None, SPI_HMRC_PAY_COLUMN: FRS_HMRC_PAY_COLUMN, diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py index 0fcbd5724b..64746b11da 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_spine.py @@ -29,6 +29,7 @@ _raw_source_person_ids, _read_raw_frs_table, ) +from microcosm.build.uk_runtime.frs_spine import ANNUITY_AND_TRUST_INCOME_COLUMN from microcosm.build.uk_runtime.frs_take_up import uk_take_up_population_policy from microcosm.build.uk_runtime.hmrc_income import ( HMRCIncomeTargetSet, @@ -215,8 +216,8 @@ "self_employment_income", "savings_interest_income", "dividend_income", - # The tape's OTHERINV on SPI rows; FRS rows carry their own NS&I and gilt - # interest from frs_spine (microcosm#1418). + # The tape's OTHERINV on SPI rows; FRS rows carry their own gilt interest + # from frs_spine (microcosm#1418), NS&I being interest (microcosm#1428). "other_investment_income", "private_pension_income", "property_income", @@ -270,6 +271,10 @@ # tape's income is the tax year's, so each share is 1, and the twin's # other spells stay only where the tape drew none of that income. *FRS_ANNUAL_INCOME_OUTPUT_COLUMNS, + # A drawn row's private pension is the tape's, which books annuity and + # trust payments as other income, so its descriptor of them is zero + # (microcosm#1428). + ANNUITY_AND_TRUST_INCOME_COLUMN, ) # Reviewed constants for every load-bearing manifest parameter the spine @@ -315,6 +320,7 @@ ) # Held to the drawn incomes by rule, not drawn by stage 2. and column not in FRS_ANNUAL_INCOME_OUTPUT_COLUMNS + and column != ANNUITY_AND_TRUST_INCOME_COLUMN ) #: Both forests are queried over every SPI-channel person aged 16 and over, #: and the dependants' rows are discarded (uk-data#504, microcosm#1095). @@ -405,6 +411,7 @@ def evidence(self) -> dict[str, object]: self.imputation.gainful_self_employment_refresh ), "pension_coherence": self.imputation.pension_coherence, + "gift_anchor": self.imputation.gift_anchor, "state_pension_age_guard": list(self.imputation.state_pension_age_guard), "targets": { "count": len(self.source_targets.targets), diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py index 230b776fa8..8c8d7ed86b 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spi_support.py @@ -138,9 +138,9 @@ # The enhanced-FRS FRS-only stage uses these six income predictors. OTHERINV # is a first-stage SPI draw and HMRC accounting component. The FRS base -# carries `other_investment_income` only from its NS&I and gilt accounts -# (microcosm#1418), not OTHERINV's concept, so it stays out of second-stage -# training. +# carries `other_investment_income` only from its gilt accounts (microcosm#1418, +# NS&I being interest since microcosm#1428), not OTHERINV's concept, so it stays +# out of second-stage training. FRS_ONLY_SPI_FILL_INCOME_PREDICTOR_COLUMNS = ( "employment_income", "self_employment_income", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py index d1e6b0f46a..e340d2f8be 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/spine_build.py @@ -206,6 +206,9 @@ from microcosm.build.uk_runtime.staging import UK_STAGING_REPOSITORY from microcosm.build.uk_runtime.student_loans import UKStudentLoansStageTransform from microcosm.build.uk_runtime.take_up_contract import load_uk_take_up_contract +from microcosm.build.uk_runtime.trading_allowance_receipts import ( + UKTradingAllowanceReceiptsStageTransform, +) from microcosm.build.uk_runtime.uc_capital_coherence import ( UKUCCapitalCoherenceStageTransform, ) @@ -1462,6 +1465,10 @@ def _create_staging_run_bundle( delivery_mode="local_only" if local_only else "local_and_remote", repo_id=None if local_only else args.staging_repo_id, upload_interval_seconds=args.staging_upload_interval_seconds, + # The build's emitter commits the run files with its own credential. + emitter_client=( + None if local_only or _ACTIVE_EMITTER is None else _ACTIVE_EMITTER.client + ), ) @@ -1924,6 +1931,12 @@ def prepare_uk_spine_execution( contract=stochastic_contract, stage=stages_by_name["childcare_copy_take_up"], ) + if "trading_allowance_receipts" in stage_names: + implementations["trading_allowance_receipts"] = ( + UKTradingAllowanceReceiptsStageTransform( + stage=stages_by_name["trading_allowance_receipts"] + ) + ) if "age_tail" in stage_names: implementations["age_tail"] = UKAgeTailStageTransform( stage=stages_by_name["age_tail"] diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py index e2fdcf03c8..9b68b3f19f 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/terminal_gates.py @@ -315,6 +315,12 @@ def __post_init__(self) -> None: "person.private_pension_income_annual_share", "person.self_employment_income_annual_share", "person.self_employment_income_other_spells", + # The self-employed's gross receipts for the trading allowance, which the + # enhanced FRS leaves at the engine's zero (microcosm#1428). + "person.self_employment_gross_receipts", + # The annuity and trust part of private_pension_income, a calibration-only + # descriptor no engine input reads (microcosm#1428). + "person.annuity_and_trust_income", "person.esa_health_condition_proxy", "person.esa_includes_support_component", "person.esa_support_group_proxy", diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/trading_allowance_receipts.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/trading_allowance_receipts.py new file mode 100644 index 0000000000..d6e1cecda7 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/trading_allowance_receipts.py @@ -0,0 +1,376 @@ +"""Self-employed gross receipts for the trading allowance (microcosm#1428). + +policyengine-uk applies the trading allowance (ITTOIA 2005 Part 7A) against a +trader's gross receipts, ``self_employment_gross_receipts``. Neither the FRS +nor the SPI tape records turnover. Without receipts the engine treats a profit +within the allowance as receipts within it (full relief) and a larger profit +as already reflecting the better of expenses and the allowance (no relief). A +rise in the allowance then relieves only profits up to the new allowance, in +full, and misses its main base: traders who already claim the GBP 1,000 +allowance against larger receipts and gain the larger deduction. + +Under current law a trader who claims the allowance deducts GBP 1,000 from +receipts in place of expenses, so their receipts are their profit plus +GBP 1,000 exactly; a trader who deducts actual expenses has expenses above +GBP 1,000. This stage, the last of the spine, flags each trader with a +positive profit as a claimant with a probability by profit band, drawn on +their own ``person_id``, and stores their receipts: + +* a claimant's are their profit plus GBP 1,000; +* any other trader's are their profit plus GBP 3,000, expenses at the raised + allowance, so that the raise does not relieve them (the costing books the + traders who would switch to the allowance as behaviour); +* a person with no positive profit keeps zero, which the engine reads as + unknown. + +The engine then gives a claimant nothing more at GBP 1,000 and up to +GBP 2,000 more at GBP 3,000, and any other trader nothing at either. Every +trader with a positive profit is treated as filing, as SPI Table 3.10's +counts, which bind the frame's traders, are of filers. So a profit of GBP 1,000 +or less is now taxed where the engine used to relieve it in full. + +Until HMRC publishes claimant counts, the rates are calibrated to HMRC's +policy paper on the Budget 2026 raise (about 400,000 taxpayers with a lower +bill, by about GBP 380 on average), measured on policyengine-uk for the +#1428 national from 9f70c71e7 at 2028-29 prices (María's choices of +2026-10-31 and 2026-11-01). The rates drift with each national, as its +small traders and their other incomes move, so microcosm#1439 re-measures +them after each build. + +Two limits of encoding the claim in receipts (#1428 review, findings 2 and 8; +María's ruling of 2026-11-01 keeps them, documented, until policyengine-uk#2765 +lets the stage store the claim status itself, microcosm#1439): + +* The engine uprates receipts with profit, so a claimant's GBP 1,000 grows with + the mixed income index while the allowance is nominal: the raise relieves + GBP 1,932 more in 2027-28, falling to GBP 1,758 by 2031-32, 3.4% to 12.1% + below GBP 2,000. +* The other traders' stored GBP 3,000 grows the same way, so an allowance above + GBP 3,000 times that index relieves them from the stored expense, not from + data. Allowances above GBP 3,000 are mis-scored on this encoding. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from dataclasses import dataclass, field + +import numpy as np +import pandas as pd + +from microcosm.build.source_manifest import SourceStageSpec +from microcosm.build.stochastic_assignment import stable_identity_uniforms +from microcosm.build.uk_runtime.national_frame import ( + uk_household_weight_kind, + uk_national_frame, + uk_time_period, + validate_uk_national_frame, +) +from microcosm.build.uk_runtime.receipt_counts import ( + distinct_count, + rounded_count, + small_cell_share, + source_household_ids, + support_band, +) +from microcosm.frame import Frame, MassChangeRecord + +__all__ = [ + "TRADING_ALLOWANCE_CLAIMANT_BANDS", + "TRADING_ALLOWANCE_RECEIPTS_OUTPUT", + "TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME", + "UKTradingAllowanceReceiptsStageTransform", + "assign_trading_allowance_receipts", + "claimant_rates", + "store_trading_allowance_receipts", +] + +TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME = "trading_allowance_receipts" +TRADING_ALLOWANCE_RECEIPTS_OUTPUT = "self_employment_gross_receipts" +TRADING_ALLOWANCE_PROFIT = "self_employment_income" +TRADING_ALLOWANCE_CLAIMANT_DRAW = "trading_allowance_claimant" +TRADING_ALLOWANCE_CLAIMANT_SEED = 0 +#: The allowance a claimant deducts in place of expenses (2024-25). +TRADING_ALLOWANCE_CLAIMANT_EXPENSES = 1_000.0 +#: Any other trader's expenses: at the raised allowance, which then gives them +#: nothing. +TRADING_ALLOWANCE_OTHER_EXPENSES = 3_000.0 +#: The claimant probability by the person's profit, upper bounds inclusive, +#: over profits above zero; the last band has no upper bound. +TRADING_ALLOWANCE_CLAIMANT_BANDS: tuple[tuple[float | None, float], ...] = ( + (4_500.0, 0.72), + (9_000.0, 0.14), + (None, 0.0), +) +TRADING_ALLOWANCE_CALIBRATION = ( + "HMRC's policy paper on the Budget 2026 trading allowance raise: about " + "400,000 taxpayers with a lower bill, by about GBP 380 on average, measured " + "on policyengine-uk for the microcosm#1428 national from 9f70c71e7 at " + "2028-29 prices; the rates drift with each national (microcosm#1439), until " + "HMRC publishes claimant counts (María's choices of 2026-10-31 and 2026-11-01)" +) +TRADING_ALLOWANCE_RECEIPTS_MASS_CHANGE_REASON = ( + "Self-employed gross receipts stored on the source spine: household weights " + "pass through unchanged and total household mass is conserved." +) +_MASS_GATE_COUPLING = ( + "The terminal family gate requires a valid mass-conserving MassChangeRecord " + "carrying exactly this stage-specific reason." +) +TRADING_ALLOWANCE_RECEIPTS_RULE = ( + "a person with a positive self_employment_income claims the allowance " + "where their uniform falls below their profit band's rate; a claimant's " + "receipts are their profit plus claimant_expenses, any other trader's their " + "profit plus other_expenses, and a person with no positive profit keeps zero" +) + + +def _expected_operations() -> tuple[tuple[str, Mapping[str, object]], ...]: + bands: list[dict[str, object]] = [] + for upper, rate in TRADING_ALLOWANCE_CLAIMANT_BANDS: + band: dict[str, object] = {"rate": rate} + if upper is not None: + band = {"upper_inclusive": upper, **band} + bands.append(band) + return ( + ( + "assign_trading_allowance_receipts", + { + "output": TRADING_ALLOWANCE_RECEIPTS_OUTPUT, + "profit": TRADING_ALLOWANCE_PROFIT, + "draw": TRADING_ALLOWANCE_CLAIMANT_DRAW, + "seed": TRADING_ALLOWANCE_CLAIMANT_SEED, + "claimant_bands": bands, + "claimant_expenses": TRADING_ALLOWANCE_CLAIMANT_EXPENSES, + "other_expenses": TRADING_ALLOWANCE_OTHER_EXPENSES, + "calibration": TRADING_ALLOWANCE_CALIBRATION, + "rule": TRADING_ALLOWANCE_RECEIPTS_RULE, + }, + ), + ( + "record_mass_conservation_receipt", + { + "entity": "household", + "reason": TRADING_ALLOWANCE_RECEIPTS_MASS_CHANGE_REASON, + "declared_factor": 1.0, + "gate_coupling": _MASS_GATE_COUPLING, + }, + ), + ) + + +def claimant_rates(profit: np.ndarray) -> np.ndarray: + """Each person's claimant probability by their profit band (zero at none).""" + + profit = np.asarray(profit, dtype=np.float64) + rates = np.zeros(profit.shape, dtype=np.float64) + lower = 0.0 + for upper, rate in TRADING_ALLOWANCE_CLAIMANT_BANDS: + in_band = profit > lower + if upper is not None: + in_band &= profit <= upper + rates[in_band] = rate + if upper is None: + break + lower = upper + return rates + + +def assign_trading_allowance_receipts( + person_ids: np.ndarray, + profit: np.ndarray, + *, + seed: int = TRADING_ALLOWANCE_CLAIMANT_SEED, + salt: str = TRADING_ALLOWANCE_CLAIMANT_DRAW, +) -> tuple[np.ndarray, np.ndarray]: + """Each person's gross receipts and claimant flag.""" + + profit = np.asarray(profit, dtype=np.float64) + ids = np.asarray(person_ids) + if ids.shape != profit.shape: + raise ValueError("Trading allowance person ids must align to the profits.") + if not np.isfinite(profit).all(): + raise ValueError("Trading allowance profits must be finite.") + trader = profit > 0.0 + claimant = np.zeros(profit.shape, dtype=bool) + if trader.any(): + uniforms = stable_identity_uniforms(ids[trader], seed=seed, salt=salt) + claimant[trader] = uniforms < claimant_rates(profit[trader]) + receipts = np.where( + claimant, + profit + TRADING_ALLOWANCE_CLAIMANT_EXPENSES, + np.where(trader, profit + TRADING_ALLOWANCE_OTHER_EXPENSES, 0.0), + ) + return receipts, claimant + + +@dataclass(frozen=True) +class UKTradingAllowanceReceiptsResult: + """The frame with the stored receipts, and the stage's receipt.""" + + frame: Frame + traders: int + claimants: int + bands: tuple[Mapping[str, object], ...] + + def evidence(self) -> dict[str, object]: + return { + "stage": TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME, + "seed": TRADING_ALLOWANCE_CLAIMANT_SEED, + "draw": TRADING_ALLOWANCE_CLAIMANT_DRAW, + # Record counts are rounded, never exact (UKDS CD137 cl. 8). + "traders": rounded_count(self.traders), + "claimants": rounded_count(self.claimants), + "bands": [dict(band) for band in self.bands], + } + + +@dataclass(frozen=True) +class UKTradingAllowanceReceiptsStageTransform: + """Whole-stage callable storing the self-employed's gross receipts.""" + + stage: SourceStageSpec + last_result: UKTradingAllowanceReceiptsResult | None = field( + default=None, init=False + ) + + def __call__(self, frame: Frame) -> Frame: + _assert_stage_parameters(self.stage) + result = store_trading_allowance_receipts(frame) + object.__setattr__(self, "last_result", result) + return result.frame + + @staticmethod + def output_columns() -> tuple[str, ...]: + return (TRADING_ALLOWANCE_RECEIPTS_OUTPUT,) + + def checkpoint_metadata(self) -> dict[str, object]: + if self.last_result is None: + raise RuntimeError("checkpoint metadata requires a completed stage run.") + return {"evidence": self.last_result.evidence()} + + +def store_trading_allowance_receipts(frame: Frame) -> UKTradingAllowanceReceiptsResult: + """Store each person's gross receipts; nothing else moves.""" + + validate_uk_national_frame(frame) + person = frame.table("person").copy() + household = frame.table("household").copy() + if TRADING_ALLOWANCE_RECEIPTS_OUTPUT in person.columns: + raise ValueError( + f"{TRADING_ALLOWANCE_RECEIPTS_OUTPUT!r} is already stored: this stage " + "is its only writer." + ) + if TRADING_ALLOWANCE_PROFIT not in person.columns: + raise KeyError( + f"person.{TRADING_ALLOWANCE_PROFIT} is missing; the receipts are " + "drawn on the final self-employment profit." + ) + if pd.Series(person["person_id"]).duplicated().any(): + raise ValueError( + "person_id must be unique: the trading allowance draw is keyed on it." + ) + profit = pd.to_numeric(person[TRADING_ALLOWANCE_PROFIT], errors="raise") + receipts, claimant = assign_trading_allowance_receipts( + person["person_id"].to_numpy(), profit.to_numpy(dtype=np.float64) + ) + person[TRADING_ALLOWANCE_RECEIPTS_OUTPUT] = receipts + + household_weights = frame.weights_for("household") + weight_by_household = dict( + zip( + household["household_id"].to_numpy(), + np.asarray(household_weights.values, dtype=float), + strict=True, + ) + ) + source_by_household = dict( + zip( + household["household_id"].to_numpy(), + source_household_ids( + household, stage=TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME + ), + strict=True, + ) + ) + weights = person["person_household_id"].map(weight_by_household).to_numpy(float) + sources = person["person_household_id"].map(source_by_household).to_numpy() + rates = claimant_rates(profit.to_numpy(dtype=np.float64)) + trader = profit.to_numpy(dtype=np.float64) > 0.0 + bands: list[dict[str, object]] = [] + for rate in sorted(set(rates[trader].tolist()), reverse=True): + in_band = trader & (rates == rate) + supported = distinct_count(sources, in_band, weights) + weighted = float(weights[in_band].sum()) + bands.append( + { + "rate": rate, + "support": support_band(supported), + # Weighted totals over the band's traders at the spine's weights. + "weighted_traders": small_cell_share(weighted, supported), + "weighted_claimant_share": small_cell_share( + float(weights[in_band & claimant].sum()) / weighted + if weighted > 0.0 + else 0.0, + supported, + ), + } + ) + mass = MassChangeRecord( + entity="household", + old_total=household_weights.total, + new_total=household_weights.total, + declared_factor=1.0, + reason=TRADING_ALLOWANCE_RECEIPTS_MASS_CHANGE_REASON, + ) + result = uk_national_frame( + person=person, + benunit=frame.table("benunit").copy(), + household=household, + time_period=uk_time_period(frame), + weight_kind=uk_household_weight_kind(frame), + household_weights=household_weights.values, + mass_log=(*frame.mass_log, mass), + ) + validate_uk_national_frame(result) + return UKTradingAllowanceReceiptsResult( + frame=result, + traders=int(trader.sum()), + claimants=int(claimant.sum()), + bands=tuple(bands), + ) + + +def _assert_stage_parameters(stage: SourceStageSpec) -> None: + """Bind the stage's operation closed-world.""" + + if stage.stage != TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME: + raise ValueError( + f"Trading allowance receipts received stage {stage.stage!r}, expected " + f"{TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME!r}." + ) + expected = _expected_operations() + operations = tuple(stage.operations) + if tuple(operation.kind for operation in operations) != tuple( + kind for kind, _ in expected + ): + raise ValueError( + "trading_allowance_receipts operation order drifted: " + f"{[operation.kind for operation in operations]!r}." + ) + for operation, (kind, parameters) in zip(operations, expected, strict=True): + if dict(operation.parameters) != dict(parameters): + raise ValueError( + f"trading_allowance_receipts {kind} parameters drifted: " + f"{dict(operation.parameters)!r} != {dict(parameters)!r}." + ) + if tuple(stage.outputs) != (TRADING_ALLOWANCE_RECEIPTS_OUTPUT,): + raise ValueError( + f"{TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME} must declare exactly the " + f"{TRADING_ALLOWANCE_RECEIPTS_OUTPUT} output." + ) + if stage.grain != "person": + raise ValueError( + f"{TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME} is person grain, got " + f"{stage.grain!r}." + ) diff --git a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py index 38160cb242..1b1086fe83 100644 --- a/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py +++ b/packages/microcosm-build/src/microcosm/build/uk_runtime/uc_take_up.py @@ -121,6 +121,7 @@ "UC_TAKE_UP_ENTITLEMENT_VARIABLES", "UC_TAKE_UP_MINIMUM_POOL_SOURCES", "UC_TAKE_UP_OPERATION_KIND", + "UC_TAKE_UP_POOLING", "UC_TAKE_UP_RECORD_SETS", "UC_TAKE_UP_RESOURCE", "UC_TAKE_UP_STAGE_NAME", @@ -189,9 +190,20 @@ f"£{100 * _BOUND_BANDS}.01 or over", ) UC_TAKE_UP_MINIMUM_POOL_SOURCES = 30 +UC_TAKE_UP_POOLING = ( + "adjacent bands within a family type, lowest first, until the drawn units " + "rest on minimum_pool_sources distinct household_source_id values; a short " + "last pool joins the one before it. Then, lowest first, a pool that cannot " + "meet DWP's count (its undrawn entitled units' expected claims exceed the " + "count, or the count exceeds them plus the weight of every drawn unit) is " + "held at the nearer of those ends and passes its gap to the other pools, " + "nearest first, the one with more room first at equal distance and the " + "lower on a tie, each taking what its room allows; a gap no pool can take " + "leaves the family type unreachable" +) UC_TAKE_UP_RESIDUAL_RATE = ( "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the " - "pool's bands, D the weight of the pool's drawn units and F the expected " + "pool's bands after any gaps passed to or from it, D the weight of the pool's drawn units and F the expected " "claims of its other entitled units, over Great Britain at the stage's " "household weights; realized by the drawn units claiming in the order of " "their uniform until their weight is nearest T - F, and applied at that " @@ -334,6 +346,78 @@ def _pools( return pools +def _pass_unmet_gaps( + sums: Sequence[tuple[float, float, float]], +) -> tuple[list[float], list[float]]: + """Each pool's count after the unmet pools pass their gaps on. + + ``sums`` gives each pool's DWP count ``T``, the expected claims ``F`` of + its undrawn entitled units and the weight ``D`` of its drawn units, lowest + band first. A pool realizes between ``F`` and ``F + D`` claims; one whose + count lies outside is held at the nearer end, and its gap is the claims it + cannot add (a shortfall) or give up (an excess). A shortfall and an excess + offset each other in the family type's total, so they cancel first, nearest + pools first. What remains goes to the other pools, nearest first, the one + with more room first at equal distance and the lower on a tie, each taking + what its room allows (``F + D - T`` for a shortfall, ``T - F`` for an + excess). Joining an unmet pool to its neighbour applied one rate to both, + so the drawn units of an overshooting band started claiming and those of + a short band stopped; held at its clip, each band realizes as near its own + count as it can, and the family type's total is unchanged wherever its + entitled units allow (microcosm#1428 review, finding 7). Returns each + pool's count and the part of its gap no pool could take. + """ + + targets = [float(target) for target, _, _ in sums] + lows = [float(undrawn) for _, undrawn, _ in sums] + highs = [float(undrawn) + float(drawn) for _, undrawn, drawn in sums] + counts = [ + min(max(t, lo), hi) for t, lo, hi in zip(targets, lows, highs, strict=True) + ] + gaps = [t - count for t, count in zip(targets, counts, strict=True)] + for index, target in enumerate(targets): + if abs(gaps[index]) <= 1e-9 * max(1.0, abs(target)): + gaps[index] = 0.0 + + def nearest(index: int) -> list[int]: + return sorted( + (other for other in range(len(sums)) if other != index), + key=lambda other: (abs(other - index), other), + ) + + for index in range(len(sums)): + for other in nearest(index): + if gaps[index] == 0.0: + break + if gaps[index] * gaps[other] < 0.0: + offset = min(abs(gaps[index]), abs(gaps[other])) + gaps[index] -= np.sign(gaps[index]) * offset + gaps[other] -= np.sign(gaps[other]) * offset + for index, gap in enumerate(gaps): + if gap == 0.0: + continue + short = gap > 0.0 + + def room(other: int, *, short: bool = short) -> float: + return max( + highs[other] - counts[other] if short else counts[other] - lows[other], + 0.0, + ) + + remaining = abs(gap) + for other in sorted( + nearest(index), + key=lambda other: (abs(other - index), -room(other), other), + ): + take = min(remaining, room(other)) + counts[other] += take if short else -take + remaining -= take + if remaining <= 0.0: + break + gaps[index] = remaining if short else -remaining + return counts, gaps + + def _realized_rate( residual: float, *, need: float, draws: np.ndarray, weights: np.ndarray ) -> float: @@ -454,39 +538,50 @@ def assign_award_band_take_up( def sources(mask: np.ndarray) -> int: return distinct_count(source_ids, mask, weights) + def balance( + name: str, in_family: np.ndarray, bands: list[int] + ) -> tuple[float, float, float]: + solve = in_family & np.isin(band, bands) & gb + return ( + float(sum(targets[(name, index)] for index in bands)), + float((weights * fixed)[solve & ~drawable].sum()), + float(weights[solve & drawable].sum()), + ) + pools: list[dict[str, object]] = [] for name, _ in UC_FAMILY_TYPES: in_family = family == name - for bands in _pools( + family_pools = _pools( band=band, in_family=in_family, drawable_gb=drawable & gb, source_ids=source_ids, weights=weights, minimum_sources=minimum_pool_sources, + ) + sums = [balance(name, in_family, bands) for bands in family_pools] + counts, unplaced = _pass_unmet_gaps(sums) + feasible = not any(unplaced) + for bands, (target, undrawn, drawn), count in zip( + family_pools, sums, counts, strict=True ): in_pool = in_family & np.isin(band, bands) solve = in_pool & gb - target = float(sum(targets[(name, index)] for index in bands)) - undrawn = float((weights * fixed)[solve & ~drawable].sum()) - drawn = float(weights[solve & drawable].sum()) - # Where the undrawn claims reach DWP's count, or the count exceeds - # every entitled unit, the clipped rate cannot meet it. if drawn > 0.0: - residual = (target - undrawn) / drawn rates[in_pool & drawable] = _realized_rate( - residual, - need=target - undrawn, + (count - undrawn) / drawn, + need=count - undrawn, draws=draws[solve & drawable], weights=weights[solve & drawable], ) - else: - residual = 0.0 if undrawn >= target else 1.0 + # Where the undrawn claims reach DWP's count, or the count exceeds + # every entitled unit, the pool cannot meet it alone: it is held + # at its clip and its gap passed on. unreachable = ( "undrawn_claims_reach_target" - if residual <= 0.0 + if target <= undrawn else "target_exceeds_entitled" - if residual >= 1.0 + if target >= undrawn + drawn else None ) pools.append( @@ -496,6 +591,7 @@ def sources(mask: np.ndarray) -> int: "mask": solve, "target": target, "unreachable": unreachable, + "feasible_family": feasible, } ) would_claim = np.where(drawable, draws < rates, previous | reporter) @@ -530,7 +626,10 @@ def sources(mask: np.ndarray) -> int: ), } ) - if pool["unreachable"] is None: + # A family type whose gaps every pool could take realizes its + # count over all its pools; one whose count exceeds what its + # entitled units can realize has no reachable pool. + if pool["feasible_family"]: reachable |= solve reachable_target += float(pool["target"]) supported = sources(basis) @@ -950,12 +1049,7 @@ def uc_take_up_operation_parameters() -> tuple[tuple[str, dict[str, object]], .. "DWP Stat-Xplore Households on Universal Credit by family type " "and monthly award band, mean of April to December 2025" ), - "pooling": ( - "adjacent bands within a family type, lowest first, until the " - "drawn units rest on minimum_pool_sources distinct " - "household_source_id values; a short last pool joins the one " - "before it" - ), + "pooling": UC_TAKE_UP_POOLING, "minimum_pool_sources": UC_TAKE_UP_MINIMUM_POOL_SOURCES, "drawn_units": ( "entitled, non-reporting units of the population that the " diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/acs_local_take_up.py b/packages/microcosm-build/src/microcosm/build/us_runtime/acs_local_take_up.py new file mode 100644 index 0000000000..82c53c80d9 --- /dev/null +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/acs_local_take_up.py @@ -0,0 +1,442 @@ +"""SNAP and TANF take-up for the ACS rows of the retained ACS local lane. + +The ACS transfer leaves take-up draws to the runtime, and the local lane runs +neither ``snap_take_up`` nor ``snap_state_take_up``. Every ACS SPM unit +therefore reached the engine pass with ``takes_up_snap_if_eligible`` and +``takes_up_tanf_if_eligible`` missing, and the reviewed-null fill gave them +the engine default, ``True``: every eligible ACS unit took both programs up +(microcosm#1019, the take-up counterpart of the #765 hours defect). + +This is a fresh-build repair for that lane. It fills only missing cells on +ACS-spine SPM units; donor-spine values and any stored ACS value are kept. + +- SNAP follows :mod:`~microcosm.build.us_runtime.snap_take_up`: a unit with + (QRF-imputed) ``receives_snap`` always takes up, and non-reporters draw at + the rate that puts the weighted ACS take-up share on the national FNS + participation rate of the ``snap_take_up`` manifest stage. +- TANF uses the take-up contract's seeded Bernoulli draw at its + administrative rate, with no receipt anchor, exactly as the contract seeds + it elsewhere. Because the draw is independent of the transferred + ``receives_tanf``, the receipt cross-tabs the two on ACS units and reports + the weighted share of TANF reporters that drew ``False`` (informational, + never graded). + +Draws come from :func:`~microcosm.build.us_runtime.take_up._stable_unit_draws`, +which keys a unit without complete source identity on its own ids, so the +assignment depends only on ``seed``, the frame and its weights. The +per-state recalibration of the ASEC lane is not applied; the release's state +SNAP household targets reweight instead. Other ``takes_up_*`` flags on ACS +rows still ship at the engine default (microcosm#1022) and the gate here does +not grade them. +""" + +from __future__ import annotations + +import hashlib + +import numpy as np +import pandas as pd + +from microcosm.build.gates import GateResult +from microcosm.build.us_runtime.acs_pums import ACS_2024_1YR_SPINE +from microcosm.build.us_runtime.acs_transfer import ASEC_PUF_DONOR_SPINE +from microcosm.build.us_runtime.base_pool import spine_column +from microcosm.build.us_runtime.snap_take_up import ( + _TAKE_UP_SHARE_BAND as _SNAP_TAKE_UP_SHARE_BAND, +) +from microcosm.build.us_runtime.snap_take_up import ( + US_SNAP_TAKE_UP_OUTPUT_COLUMN, + _take_up_rate, + us_snap_take_up_stage_spec, +) +from microcosm.build.us_runtime.take_up import ( + US_TAKE_UP_SHARE_BAND, + _seed_program, + _stable_unit_draws, + _units_with_source_identity, +) +from microcosm.build.us_runtime.take_up_contract import ( + TakeUpProgram, + seeded_take_up_programs, +) +from microcosm.frame import Frame +from microcosm.frame.units import US_SCHEMA + +__all__ = [ + "ACS_LOCAL_TAKE_UP_COLUMNS", + "ACS_LOCAL_TAKE_UP_GATE_NAME", + "US_TANF_TAKE_UP_OUTPUT_COLUMN", + "acs_local_take_up_signal_gate", + "with_acs_local_take_up_inputs", +] + +US_TANF_TAKE_UP_OUTPUT_COLUMN = "takes_up_tanf_if_eligible" + +#: The SPM-unit take-up flags this stage owns on ACS rows. +ACS_LOCAL_TAKE_UP_COLUMNS: tuple[str, ...] = ( + US_SNAP_TAKE_UP_OUTPUT_COLUMN, + US_TANF_TAKE_UP_OUTPUT_COLUMN, +) +ACS_LOCAL_TAKE_UP_GATE_NAME = "acs_local_take_up_signal" + +_ID_COLUMN = "spm_unit_id" +#: Reported (on ACS rows, QRF-transferred) SNAP receipt: the survey anchor. +_REPORTED_SNAP_COLUMN = "receives_snap" +#: Reported (on ACS rows, QRF-transferred) TANF receipt. It is not an anchor +#: for the TANF draw; the receipt only cross-tabs it against that draw. +_REPORTED_TANF_COLUMN = "receives_tanf" +_SNAP_OPERATION = "derive_snap_take_up" +_SHARE_BANDS: dict[str, tuple[float, float]] = { + US_SNAP_TAKE_UP_OUTPUT_COLUMN: _SNAP_TAKE_UP_SHARE_BAND, + US_TANF_TAKE_UP_OUTPUT_COLUMN: US_TAKE_UP_SHARE_BAND[US_TANF_TAKE_UP_OUTPUT_COLUMN], +} + + +def _flags(values: pd.Series) -> tuple[np.ndarray, np.ndarray]: + """Boolean values with missing cells as ``False``, and the present mask.""" + present = values.notna().to_numpy(dtype=bool) + flags = np.zeros(len(values), dtype=bool) + flags[present] = values[present].astype(bool).to_numpy(dtype=bool) + return flags, present + + +def _snap_rate() -> tuple[float, str]: + """The national rate and citation of the ``snap_take_up`` manifest stage.""" + stage = us_snap_take_up_stage_spec() + operations = [op for op in stage.operations if op.kind == _SNAP_OPERATION] + if len(operations) != 1: + raise ValueError( + f"The {stage.stage!r} stage must declare exactly one {_SNAP_OPERATION!r} " + f"operation; found {len(operations)}." + ) + rate = _take_up_rate(operations[0]) + return rate, str(operations[0].parameters["take_up_rate"]["source"]) + + +def _tanf_program() -> TakeUpProgram: + for program in seeded_take_up_programs(): + if program.variable == US_TANF_TAKE_UP_OUTPUT_COLUMN: + return program + raise ValueError( + f"The take-up contract does not seed {US_TANF_TAKE_UP_OUTPUT_COLUMN!r}." + ) + + +def _filled(values: pd.Series, missing: np.ndarray, assigned: np.ndarray) -> pd.Series: + if not missing.any(): + return values + filled = values.astype(object) + filled.loc[missing] = assigned[missing] + return filled.astype(bool) if filled.notna().all() else filled + + +def _share(weights: np.ndarray, flags: np.ndarray) -> float: + total = float(weights.sum()) + return float(weights[flags].sum()) / total if total > 0 else 0.0 + + +def _tanf_receipt_crosstab( + spm_unit: pd.DataFrame, weights: np.ndarray +) -> dict[str, object]: + """Transferred ``receives_tanf`` by assigned TANF take-up (informational). + + TANF take-up is the contract's Bernoulli draw with no receipt anchor, so + a unit with transferred ``receives_tanf`` can draw ``False``. This + weighted 2x2 table over the given (ACS) units measures that overlap, and + ``receives_tanf_drew_false_share`` is the weighted share of reporters + without take-up. Missing receipt cells read as non-reporters. It is + recorded for review (microcosm#1051), never graded. + """ + if _REPORTED_TANF_COLUMN not in spm_unit: + return { + "available": False, + "graded": False, + "reason": f"spm_unit carries no {_REPORTED_TANF_COLUMN} column", + } + reports, reports_present = _flags(spm_unit[_REPORTED_TANF_COLUMN]) + takes_up = _flags(spm_unit[US_TANF_TAKE_UP_OUTPUT_COLUMN])[0] + total = float(weights.sum()) + cells: dict[str, dict[str, object]] = {} + for report_label, report_mask in ( + ("receives_tanf", reports), + ("no_receives_tanf", ~reports), + ): + for take_label, take_mask in ( + ("takes_up", takes_up), + ("no_take_up", ~takes_up), + ): + cell = report_mask & take_mask + weight = float(weights[cell].sum()) + cells[f"{report_label}__{take_label}"] = { + "units": int(cell.sum()), + "weight": weight, + "weight_share": weight / total if total > 0 else 0.0, + } + reporter_weight = float(weights[reports].sum()) + drew_false = reports & ~takes_up + return { + "available": True, + "graded": False, + "units": int(len(reports)), + "weight": total, + "missing_receipt_rows_as_non_reporters": int((~reports_present).sum()), + "cells": cells, + "receives_tanf_units": int(reports.sum()), + "receives_tanf_weight": reporter_weight, + "receives_tanf_drew_false_units": int(drew_false.sum()), + "receives_tanf_drew_false_share": ( + float(weights[drew_false].sum()) / reporter_weight + if reporter_weight > 0 + else None + ), + "note": ( + "TANF take-up is drawn independently of the transferred " + "receives_tanf (the take-up contract has no TANF receipt anchor); " + "this table measures the overlap and is not graded." + ), + } + + +def _assignment_sha256(spm_unit: pd.DataFrame, rows: np.ndarray) -> str: + """Digest of the ACS rows' ids and flags, to prove two passes agree.""" + selected = pd.DataFrame( + { + _ID_COLUMN: spm_unit.loc[rows, _ID_COLUMN].to_numpy(), + **{ + column: _flags(spm_unit.loc[rows, column])[0] + for column in ACS_LOCAL_TAKE_UP_COLUMNS + }, + } + ) + hashed = pd.util.hash_pandas_object(selected, index=False).to_numpy() + return hashlib.sha256(hashed.tobytes()).hexdigest() + + +def with_acs_local_take_up_inputs( + frame: Frame, *, seed: int +) -> tuple[Frame, dict[str, object]]: + """Fill missing ACS-row SNAP and TANF take-up flags; keep every other cell. + + Args: + frame: The local lane's multispine US frame. Its spm_unit table must + carry complete origin tags, both take-up columns and + ``receives_snap``. + seed: The build seed for the draws. + + Returns: + The frame with filled ACS cells (unchanged if none were missing) and + a JSON-ready receipt, including a digest of the ACS assignment. + + Raises: + ValueError: If the frame is not US-schema, origin tags are missing, + or a required column is absent. + """ + if frame.schema != US_SCHEMA: + raise ValueError("ACS local take-up inputs require the US schema.") + spm_unit = frame.table("spm_unit") + tag = spine_column("spm_unit") + if tag not in spm_unit or spm_unit[tag].isna().any(): + raise ValueError(f"ACS local take-up requires complete origin tags: {tag}.") + absent = [ + column + for column in (*ACS_LOCAL_TAKE_UP_COLUMNS, _REPORTED_SNAP_COLUMN) + if column not in spm_unit + ] + if absent: + raise ValueError( + f"ACS local take-up requires spm_unit column(s) {absent}; a missing " + "donor column would reach the engine as universal take-up." + ) + acs = spm_unit[tag].eq(ACS_2024_1YR_SPINE).to_numpy(dtype=bool) + units = _units_with_source_identity(frame, "spm_unit") + if not np.array_equal(units[_ID_COLUMN].to_numpy(), spm_unit[_ID_COLUMN]): + raise ValueError("SPM-unit source identity does not align with the table.") + weights = units["_weight"].to_numpy(dtype=np.float64) + acs_weight = float(weights[acs].sum()) + + # SNAP: reporters take up; non-reporters draw to the national rate. + snap_flags, snap_present = _flags(spm_unit[US_SNAP_TAKE_UP_OUTPUT_COLUMN]) + snap_missing = acs & ~snap_present + reported, reported_present = _flags(spm_unit[_REPORTED_SNAP_COLUMN]) + anchored = snap_missing & reported + open_units = snap_missing & ~reported + rate, rate_source = _snap_rate() + # Weight the non-reporter draws must add for the ACS share to reach the + # rate; when reporters and stored cells already exceed it, no one draws. + shortfall = ( + rate * acs_weight + - float(weights[acs & snap_present & snap_flags].sum()) + - float(weights[anchored].sum()) + ) + open_weight = float(weights[open_units].sum()) + draw_rate = ( + min(1.0, max(0.0, shortfall) / open_weight) if open_weight > 0.0 else 0.0 + ) + snap_assigned = anchored.copy() + if open_units.any(): + draws = _stable_unit_draws( + units.loc[open_units], + id_column=_ID_COLUMN, + seed=int(seed), + variable=US_SNAP_TAKE_UP_OUTPUT_COLUMN, + ) + snap_assigned[open_units] = draws < draw_rate + + # TANF: the contract's seeded Bernoulli draw, no receipt anchor. + program = _tanf_program() + seeded, _ = _seed_program(frame, program, seed=int(seed)) + if not np.array_equal(seeded[_ID_COLUMN], spm_unit[_ID_COLUMN].to_numpy()): + raise ValueError("Seeded TANF take-up does not align with the spm_unit table.") + tanf_assigned = np.asarray(seeded[US_TANF_TAKE_UP_OUTPUT_COLUMN], dtype=bool) + tanf_missing = acs & ~_flags(spm_unit[US_TANF_TAKE_UP_OUTPUT_COLUMN])[1] + + result = frame + if snap_missing.any() or tanf_missing.any(): + updated = spm_unit.copy() + updated[US_SNAP_TAKE_UP_OUTPUT_COLUMN] = _filled( + spm_unit[US_SNAP_TAKE_UP_OUTPUT_COLUMN], snap_missing, snap_assigned + ) + updated[US_TANF_TAKE_UP_OUTPUT_COLUMN] = _filled( + spm_unit[US_TANF_TAKE_UP_OUTPUT_COLUMN], tanf_missing, tanf_assigned + ) + result = Frame( + { + entity: updated if entity == "spm_unit" else frame.table(entity) + for entity in frame.entities + }, + frame.schema, + {entity: frame.weights_for(entity) for entity in frame.weighted_entities}, + frame.strata, + mass_log=frame.mass_log, + metadata=frame.metadata, + ) + final = result.table("spm_unit") + acs_weights = weights[acs] + receipt: dict[str, object] = { + "issue": "microcosm#1019", + "seed": int(seed), + "spine": ACS_2024_1YR_SPINE, + "acs_spm_units": int(acs.sum()), + "programs": { + US_SNAP_TAKE_UP_OUTPUT_COLUMN: { + "rate": rate, + "rate_source": rate_source, + "filled_rows": int(snap_missing.sum()), + "preserved_rows": int((acs & snap_present).sum()), + "reported_receipt_rows": int(anchored.sum()), + "missing_receipt_rows_as_non_reporters": int( + (snap_missing & ~reported_present).sum() + ), + "non_reporter_draw_rate": draw_rate, + "weighted_take_up_share": _share( + acs_weights, + _flags(final.loc[acs, US_SNAP_TAKE_UP_OUTPUT_COLUMN])[0], + ), + }, + US_TANF_TAKE_UP_OUTPUT_COLUMN: { + "rate": program.rate.get("value"), + "rate_source": program.rate.get("source"), + "filled_rows": int(tanf_missing.sum()), + "preserved_rows": int((acs & ~tanf_missing).sum()), + "weighted_take_up_share": _share( + acs_weights, + _flags(final.loc[acs, US_TANF_TAKE_UP_OUTPUT_COLUMN])[0], + ), + "receipt_crosstab": _tanf_receipt_crosstab(final.loc[acs], acs_weights), + }, + }, + "assigned_sha256": _assignment_sha256(final, acs), + } + return result, receipt + + +def acs_local_take_up_signal_gate(frame: Frame) -> GateResult: + """Require complete, anchored, plausible SNAP and TANF take-up per origin. + + For each spine, fails when a flag is missing, has missing cells, or is + constant (the engine-default universal take-up this lane shipped). On the + ACS spine, whose cells this stage assigns, it also fails when a share + leaves its plausibility band or (SNAP) a ``receives_snap`` reporter does + not take up. Donor-spine shares and anchors are reported but not graded: + those cells come from the donor release, whose own take-up gates graded + them. Other ``takes_up_*`` columns are not graded (microcosm#1022). + """ + spm_unit = frame.table("spm_unit") + tag = spine_column("spm_unit") + failures: list[str] = [] + by_spine: dict[str, object] = {} + if tag not in spm_unit or spm_unit[tag].isna().any(): + failures.append(f"Missing SPM-unit origin tags: {tag}.") + else: + weights = np.asarray(frame.resolve_weights("spm_unit").values, dtype=float) + for spine in (ASEC_PUF_DONOR_SPINE, ACS_2024_1YR_SPINE): + selected = spm_unit[tag].eq(spine).to_numpy(dtype=bool) + # Only the ACS cells are this stage's output; grade their + # plausibility and anchor. Donor cells are graded upstream. + graded = spine == ACS_2024_1YR_SPINE + columns: dict[str, object] = {} + by_spine[spine] = { + "rows": int(selected.sum()), + "graded": graded, + "columns": columns, + } + if not selected.any(): + failures.append(f"{spine}: no spm_unit rows.") + continue + for column, (low, high) in _SHARE_BANDS.items(): + if column not in spm_unit: + failures.append(f"{spine}: missing {column}.") + continue + flags, present = _flags(spm_unit.loc[selected, column]) + share = _share(weights[selected], flags) + unique = len(np.unique(flags[present])) + entry: dict[str, object] = { + "missing_rows": int((~present).sum()), + "unique_values": unique, + "take_up_share": share, + "share_band": [low, high], + } + columns[column] = entry + if not present.all(): + failures.append( + f"{spine}: {column} has missing rows; an engine-default " + "fill is universal take-up." + ) + if unique < 2: + failures.append( + f"{spine}: {column} is constant; universal take-up is the " + "engine-default landmine." + ) + if graded and not (low <= share <= high): + failures.append( + f"{spine}: {column} take-up share {share:.3f} outside " + f"plausibility band [{low}, {high}]." + ) + if column != US_SNAP_TAKE_UP_OUTPUT_COLUMN: + continue + if _REPORTED_SNAP_COLUMN not in spm_unit: + failures.append( + f"{spine}: missing {_REPORTED_SNAP_COLUMN}; the reported-" + "receipt anchor cannot be verified." + ) + continue + reported, _ = _flags(spm_unit.loc[selected, _REPORTED_SNAP_COLUMN]) + not_taking_up = int((reported & present & ~flags).sum()) + entry["reporters_not_taking_up"] = not_taking_up + if graded and not_taking_up: + failures.append( + f"{spine}: {not_taking_up} SPM unit(s) report SNAP receipt " + "but carry no take-up; reported recipients must take up." + ) + unknown = set(spm_unit[tag].unique()) - { + ASEC_PUF_DONOR_SPINE, + ACS_2024_1YR_SPINE, + } + if unknown: + failures.append("Local take-up origin tags contain an unsupported spine.") + return GateResult( + name=ACS_LOCAL_TAKE_UP_GATE_NAME, + passed=not failures, + failures=tuple(failures), + details={"per_spine": by_spine}, + ) diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/housing_inputs.py b/packages/microcosm-build/src/microcosm/build/us_runtime/housing_inputs.py index 1f83bd82c9..f77d0a9f1b 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/housing_inputs.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/housing_inputs.py @@ -895,8 +895,16 @@ def impute_us_pre_subsidy_rent( if not np.isfinite(predicted).all(): raise ValueError("ACS rent QRF produced nonfinite predictions.") predicted = np.maximum(predicted, 0.0) + # ``features`` follows the household table, and the person table need not + # list heads in that order, so match each draw to its head by household id. + rent_by_household = pd.Series(predicted, index=features.index) + head_household_ids = frame.table("person")["person_household_id"].to_numpy()[ + head_mask + ] person_rent = np.zeros(frame.n("person"), dtype=np.float64) - person_rent[head_mask] = predicted + person_rent[head_mask] = rent_by_household.loc[head_household_ids].to_numpy( + dtype=np.float64 + ) return person_rent diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py b/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py index 65006c5c40..07e87eebf6 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/multispine_pool.py @@ -3114,6 +3114,11 @@ def seed_multispine_pool_inputs( defaulted_rows = 0 seeded_rows = 0 else: + # TODO(microcosm#1019): takes_up_snap_if_eligible lands here, so + # its missing (ACS-row) cells get the engine default, universal + # take-up. The legacy local lane seeds them in acs_local_take_up; + # this module must stay spine-blind, so the fix here needs a + # spine-blind receipt-anchored SNAP seed and a contract change. if program.variable not in defaults: raise ValueError( "PolicyEngine exposes no input default for take-up variable " diff --git a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py index 3dfc34b6f5..e4082c9e19 100644 --- a/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py +++ b/packages/microcosm-build/src/microcosm/build/us_runtime/worker_identity.py @@ -28,7 +28,7 @@ PRIMARY_QRF_WORKER_MODULE = "microcosm.build.us_runtime.puf_qrf_worker" PRIMARY_QRF_INTERPRETER_PLACEHOLDER = "{python_interpreter}" APPROVED_UV_LOCK_SHA256 = ( - "e7d00ea479fe479bc76b0b68394d6c80cda23ed648b55a1a48667016ea5035c3" + "9a8d7aa811cc9aaddb45609b3b3d185149b25d887e0c8aabf4c5ad391cc299c2" ) LEGACY_CAMPAIGN_UV_LOCK_SHA256 = ( "27f47e385cfa35e2644a37410d1804b361ad9aee123577551c8421547bda65ee" diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_hmrc_uprating.py b/packages/microcosm-build/tests/engine/uk/test_uk_hmrc_uprating.py index 8092026019..b98f756458 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_hmrc_uprating.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_hmrc_uprating.py @@ -35,10 +35,11 @@ def test_spi_band_targets_move_by_the_engines_dataset_projection() -> None: (microcosm#1418); Table 3.10's amounts move by their count index times the engine's index for self-employment income (the independent review of microcosm#1420); and a measure derived from an input moves by the input's - index. The SPI donors still reach the dataset's year by savings interest's - own history index and run on the projection's from there - (``spi_income.SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION``), so both are - held to the engine's.""" + index. The SPI donors reach the dataset's year with interest and other + income on SPI's 2023-24 bands and the OBR's savings income growth (the + microcosm#1418 savings follow-up) and run on the projection's index from + there (``spi_income.SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION``), so the + projection's index is held to the engine's.""" import json from importlib.resources import files @@ -74,7 +75,8 @@ def test_spi_band_targets_move_by_the_engines_dataset_projection() -> None: } variables = policyengine_uk.CountryTaxBenefitSystem().variables assert SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION == { - "savings_interest_income": UK_SPI_SAVINGS_INTEREST_PROJECTION_PARAMETER + "savings_interest_income": UK_SPI_SAVINGS_INTEREST_PROJECTION_PARAMETER, + "other_investment_income": projection["other_investment_income"], } assert ( UK_SPI_SAVINGS_INTEREST_PROJECTION_PARAMETER @@ -120,11 +122,13 @@ def test_spi_band_targets_move_by_the_engines_dataset_projection() -> None: assert len(checked) > 1 -def test_savings_interest_targets_take_the_donors_path() -> None: - """The SPI donors reach 2025 by the history index to the frame's year, - then the engine's projection. The band targets took the same path until - they moved to the OBR's savings income forecast (microcosm#1418), so the - gap between the two is now the calibration's to close.""" +def test_the_two_leg_savings_interest_factor() -> None: + """Savings interest outside SPI Table 3.7's rows reaches 2025 by the history + index to the frame's year, then the engine's projection (microcosm#1095). + The SPI donors and Table 3.7's rows took the same path until + microcosm#1418, when they moved to the published 2023-24 bands and the + OBR's savings income growth; the earlier start below pins only the + history index's 2022-23 step (the #1428 review, finding 13).""" history = "gov.economic_assumptions.indices.ons.household_interest_income" projection = "gov.economic_assumptions.indices.obr.per_capita.gdp" @@ -135,13 +139,13 @@ def ratio(path: str, start: int, end: int) -> float: ) target_factor = ratio(history, 2023, 2024) * ratio(projection, 2024, 2025) - donor_path = ratio(history, 2022, 2024) * ratio(projection, 2024, 2025) + earlier_start = ratio(history, 2022, 2024) * ratio(projection, 2024, 2025) # 1.1920 until policyengine-uk 2.155.0 took population from the OBR's # March 2026 long-term determinants (PolicyEngine/policyengine-uk#2611), # and 1.1961 until 2.164.1's October 2026 outlook (microcosm#1415). assert target_factor == pytest.approx(1.1932, abs=1e-4) - # The donors start a year earlier and so carry one more year of history. - assert donor_path / target_factor == pytest.approx( + # A path starting a year earlier carries one more year of history. + assert earlier_start / target_factor == pytest.approx( ratio(history, 2022, 2023), rel=1e-12 ) diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_release_input_coverage.py b/packages/microcosm-build/tests/engine/uk/test_uk_release_input_coverage.py index 0960bc3dd6..b6ab8bf7c6 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_release_input_coverage.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_release_input_coverage.py @@ -474,6 +474,7 @@ def test_shipped_manifest_is_current(self) -> None: "was_wealth", "was_lisa", "isa_subscriptions", + "trading_allowance_receipts", "company_cars", "regional_property_uprating", "high_value_home_support", diff --git a/packages/microcosm-build/tests/engine/uk/test_uk_spi_income.py b/packages/microcosm-build/tests/engine/uk/test_uk_spi_income.py index 174e03e7ac..60b8200d33 100644 --- a/packages/microcosm-build/tests/engine/uk/test_uk_spi_income.py +++ b/packages/microcosm-build/tests/engine/uk/test_uk_spi_income.py @@ -1,6 +1,8 @@ """Tests split from packages/microcosm-build/tests/test_uk_spi_income.py.""" # ruff: noqa: F403, F405 +from microcosm.build.uk_runtime.hmrc_uprating import uk_obr_savings_income_level +from microcosm.build.uk_runtime.spi_income import SPI_SAVINGS_REBASE_CONCEPTS from test_support.microcosm_build.uk_spi_income import * @@ -45,7 +47,8 @@ def test_spi_preserves_observed_children_outside_the_donor_age_domain( ) assert result.spi_prediction_rows == int(person[channel].eq("spi").sum()) - 1 adults = person[channel].eq("spi") & person.age.ge(16) - assert result.person.loc[adults, "gift_aid"].eq(10).all() + factor = result.gift_anchor["factors"]["gift_aid"] + assert result.person.loc[adults, "gift_aid"].eq(10.0 * factor).all() def test_spi_rebases_income_before_frs_fill_and_preserves_child_inputs( @@ -66,9 +69,23 @@ def test_spi_rebases_income_before_frs_fill_and_preserves_child_inputs( monkeypatch.setattr( spi_income, "_spi_income_uprating_factors", - lambda year: (factors, {"from_period": 2022, "to_period": year}), + lambda year, *, rebased_columns=None: ( + factors, + {"from_period": 2022, "to_period": year}, + ), raising=False, ) + # The donor savings rebase runs on the prepared tape when the stage rebases + # to the build year, and only then (microcosm#1418 savings follow-up), + # banding the tape on its income moved to 2023-24 (microcosm#1428). + rebased = [] + + def rebase(donor, published, *, income_factors=None): + rebased.append(sorted(published)) + assert income_factors == factors + return donor, {"rebased": True, "columns": {}} + + monkeypatch.setattr(spi_income, "rebase_spi_donor_savings", rebase) options = dict( seed=9, n_estimators=3, @@ -77,6 +94,7 @@ def test_spi_rebases_income_before_frs_fill_and_preserves_child_inputs( allow_in_sample_reference=True, ) reference = impute_uk_spi_income_support(support, donor_path, **options) + assert rebased == [] result = impute_uk_spi_income_support( support, donor_path, @@ -102,7 +120,12 @@ def test_spi_rebases_income_before_frs_fill_and_preserves_child_inputs( result.person.loc[base, "dividend_income"], person.loc[base, "dividend_income"], ) - assert result.income_uprating == {"from_period": 2022, "to_period": 2024} + assert rebased == [sorted(SPI_SAVINGS_REBASE_CONCEPTS)] + assert result.income_uprating == { + "from_period": 2022, + "to_period": 2024, + "savings_rebase": {"rebased": True, "columns": {}}, + } def test_child_exclusion_keeps_the_other_recipients_draws( @@ -394,8 +417,19 @@ def test_spi_qrf_stages_use_typed_weights_and_keep_isa_interest_apart( .all() ) assert result.person.loc[spi_people, "other_investment_income"].eq(25.0).all() - assert result.person.loc[spi_people, "gift_aid"].eq(10.0).all() - assert result.person.loc[spi_people, "charitable_investment_gifts"].eq(2.0).all() + # The gift leaves are the forest's draws scaled to the tape's FACT-weighted + # totals, 300 of Gift Aid and 30 of investment gifts (microcosm#1428). + factors = result.gift_anchor["factors"] + weights = result.person.loc[spi_people, "person_household_id"].map( + support.household.set_index("household_id")["household_weight"] + ) + for column, draw, tape in ( + ("gift_aid", 10.0, 300.0), + ("charitable_investment_gifts", 2.0, 30.0), + ): + gifts = result.person.loc[spi_people, column] + assert gifts.eq(draw * factors[column]).all() + assert (weights * gifts).sum() == pytest.approx(tape) assert ( result.person.loc[ spi_people, @@ -712,6 +746,10 @@ def test_spi_uprating_uses_actual_engine_indices_and_explicit_nominal_holdouts() for column, row in receipt["columns"].items() if row["basis"] == "held_nominal" } == nominal + # Interest and other income are rebased to SPI's 2023-24 bands first and + # grow on the OBR's savings income path from there (microcosm#1418 savings + # follow-up). + obr_level, _ = uk_obr_savings_income_level(2023, 2024) for column, row in receipt["columns"].items(): if column in nominal: assert row == { @@ -720,6 +758,10 @@ def test_spi_uprating_uses_actual_engine_indices_and_explicit_nominal_holdouts() "factor": 1.0, "basis": "held_nominal", } + elif column in SPI_SAVINGS_REBASE_CONCEPTS: + assert row["basis"] == "spi_published_bands_then_obr_savings_income" + assert row["from_period"] == 2023 + assert factors[column] == pytest.approx(obr_level) else: path, ratio = expected[row["variable"]] assert row["index"] == "gov.economic_assumptions.indices." + path @@ -779,13 +821,13 @@ def test_spi_rebasing_index_is_the_projections_except_where_named() -> None: else: assert row["index"] == projection[row["variable"]], column assert "dataset_projection_index" not in row - savings = receipt["columns"]["savings_interest_income"] - assert savings["index"] == ( - "gov.economic_assumptions.indices.ons.household_interest_income" - ) - # 2.2692 until policyengine-uk 2.164.1's October 2026 outlook revised the - # ONS interest history (microcosm#1415). - assert savings["factor"] == pytest.approx(2.2686, abs=1e-4) + # Interest and other income reach the frame's year on SPI's own path, the + # 2023-24 bands then the OBR's savings income growth (+35.0% in 2024-25), + # and run on the projection's GDP per head from there. + for column in SPI_SAVINGS_REBASE_CONCEPTS: + savings = receipt["columns"][column] + assert savings["index"] == "obr.efo_2026_10.savings_income_growth" + assert savings["factor"] == pytest.approx(1.3496108, abs=1e-7) def _zero_taxable_income(person: pd.DataFrame, rows) -> None: @@ -847,7 +889,8 @@ def test_undrawn_twins_keep_their_values_and_are_receipted( result.person.loc[copy[0], kept], person.loc[copy[0], kept], check_names=False ) others = person.index[(person[channel] == "spi") & (person["age"] >= 16)].drop(copy) - assert result.person.loc[others, "gift_aid"].eq(10.0).all() + factor = result.gift_anchor["factors"]["gift_aid"] + assert result.person.loc[others, "gift_aid"].eq(10.0 * factor).all() # The stage flags the rows it drew, and only those, for the later stages # that tell tape-concept rows from FRS-concept ones. flag = result.person["person_is_spi_income_recipient"] diff --git a/packages/microcosm-build/tests/engine_free/shared/test_be_target_references.py b/packages/microcosm-build/tests/engine_free/shared/test_be_target_references.py new file mode 100644 index 0000000000..fe8f5e5f13 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/shared/test_be_target_references.py @@ -0,0 +1,2912 @@ +"""Belgian reference documents: separation, ageing, bands, surfaces and a feed audit. + +The static tests read the committed documents. The feed audit needs the +Chronicle ``be`` consumer artifact, which CI does not hold: set +``BE_CHRONICLE_ARTIFACT`` to its directory to run it, as for NZ. +""" + +from __future__ import annotations + +import copy +import functools +import itertools +import json +import math +import os +import re +from fractions import Fraction +from pathlib import Path +from types import SimpleNamespace +from unittest import mock + +import numpy as np +import pytest +from hypothesis import HealthCheck, example, given, settings +from hypothesis import strategies as st + +from microcosm.build.country_spec import ( + _carried_value_keys, + _typed_geography_vintage_aliases, + load_country_spec, +) +from microcosm.build.ledger_artifact import ( + ChronicleFeedPinMismatchError, + chronicle_feed_identity, + load_ledger_consumer_artifact, +) +from microcosm.build.ledger_targets import ( + compile_ledger_target_references, + fact_matches_selector, + reference_fact_selectors, +) +from microcosm.build.reference_factors import ( + replay_reference_factor, + validate_factor_context, +) +from microcosm.build.reference_intervals import ( + BELOW_FIRST_CUT, + classify_records, + interval_table, + validate_interval_document, +) +from microcosm.build.reference_profiles import ( + REFERENCE_DOCUMENT_KEYS, + reference_document_sha256, + resolve_reference_profiles, + validate_reference_resolution, +) +from microcosm.build.transport.compose import ( + load_transport_spec, + validate_transport_activation, +) +from microcosm.build.transport.population_kernels import _surface_bands +from microcosm.build.transport.target_kernels import ( + decode_target_surface, + encode_target_surface, + parse_reference_document, +) +from microcosm.frame.transport import quantile_map +from test_support.paths import paths_for +from tools import generate_be_target_references as generator + +_SPEC = paths_for("microcosm-build").package / "src/microcosm/build/be" +SETS = { + "calibration": "target_references.json", + "precal": "precal_references.json", + "holdout": "holdout_references.json", +} +# The committed selectors' fields. The shared vocabulary admits more, including +# other fact keys that neither the pin check nor the cell check reads. +_SELECTOR_FIELDS = frozenset( + { + "aggregate_fact_key", + "assertion", + "dimension_values", + "dimensions", + "entity_name", + "geography_id", + "geography_level", + "geography_vintage", + "period_type", + "period_value", + "record_set_id", + "source_concept", + "source_measure_id", + "source_name", + } +) +SURFACES = generator.SURFACE_RESOURCE +GENERATED = ( + *SETS.values(), + "reference_aging.json", + "reference_intervals.json", + "reference_inventory.json", + "reference_profiles.json", + SURFACES, +) +BELGIAN_LEVELS = {"country": {"BE"}, "nuts1": {"BE1", "BE2", "BE3"}} +# B1's schema-2 profile required these; schema 1 can't, so this package test does. +REQUIRED_FAMILIES = { + "demography", + "fiscal_income", + "income_tax", + "social_security", + "caseloads", +} +# Rows whose Eurostat base equals the pair's denominator without being its fact. +BASES_EQUAL_TO_DENOMINATOR = { + "eurostat_household_current_taxes_paid", + "eurostat_household_social_benefits_received", + "eurostat_household_social_contributions_paid", +} +A1_CLASSES = [ + (0, 1000, "class_under_1"), + *( + (1000 * low, 1000 * (low + 1), f"class_{low}_{low + 1}") + for low in range(1, 100) + ), + (100_000, None, "class_100_plus"), +] + + +def _document(name): + return json.loads((_SPEC / name).read_text()) + + +def _documents(): + return {reference_set: _document(name) for reference_set, name in SETS.items()} + + +def _rows(reference_set="calibration"): + return _document(SETS[reference_set])["target_references"] + + +def _parsed(rows, hierarchy): + return parse_reference_document( + { + "country": "be", + "schema_version": 2, + "hierarchy": hierarchy, + "target_references": rows, + }, + country="be", + ) + + +def _selectors(row): + """The base selector (with any geography overlay), then each operand.""" + + base = dict(row["ledger_selector"]) + operands = row.get("value_operands", []) + for operand in operands: + if operand.get("role") == "base": + base.update( + { + key: value + for key, value in operand.items() + if key in {"geography_level", "geography_id"} + } + ) + yield base + for operand in operands: + if operand.get("role") != "base": + yield {key: value for key, value in operand.items() if key != "role"} + + +def _listed(value): + return value if isinstance(value, list) else [value] + + +def _row_cells(row): + """One identity per cell a row reads, whether pinned by key or by roster. + + A pinned selector also names its record set, measure, geography and + dimension values, so pinned and roster cells share one identity and a + holdout pinning a fact that calibration reads through a roster collides. + A selector with several rosters or a record-set list reads every + combination of them, so the cells are their product. The vocabulary can't + pair a record set with a dimension value, so for a wage class the product + holds its 24 cells and 24 that no fact fills: a superset, never a miss. + """ + + cells = set() + for selector in _selectors(row): + pins = selector.get("dimension_values", {}) + names = sorted(pins) + for record_set in _listed(selector["record_set_id"]): + for area in _listed(selector["geography_id"]): + for members in itertools.product(*(_listed(pins[n]) for n in names)): + cells.add( + ( + record_set, + selector["source_measure_id"], + area, + json.dumps( + dict(zip(names, members, strict=True)), + sort_keys=True, + ), + ) + ) + return cells + + +def _separation_violations(documents): + """Every way a row could sit in two sets or a holdout could feed calibration.""" + + violations = [] + names, bases, reads, measures = {}, {}, {}, {} + for reference_set, document in documents.items(): + for row in document["target_references"]: + if row["metadata"]["reference_set"] != reference_set: + violations.append(("misfiled", row["name"])) + names.setdefault(row["name"], set()).add(reference_set) + base = { + cell for cell in _row_cells({"ledger_selector": row["ledger_selector"]}) + } + for cell in base: + bases.setdefault(cell, set()).add(reference_set) + for cell in _row_cells(row): + reads.setdefault(cell, set()).add(reference_set) + measures.setdefault(row["measure"], set()).add(reference_set) + violations += [("name", name) for name, sets in names.items() if len(sets) > 1] + violations += [("base", cell) for cell, sets in bases.items() if len(sets) > 1] + violations += [ + ("holdout_read", cell) + for cell, sets in reads.items() + if "holdout" in sets and len(sets) > 1 + ] + violations += [ + ("holdout_measure", measure) + for measure, sets in measures.items() + if "holdout" in sets and len(sets) > 1 + ] + return violations + + +def _reads(): + return _document("reference_inventory.json")["resolved_reads"] + + +def _keys(facts): + return [key for fact in facts for key in fact.values()] + + +def _distinct_texts(values): + return ( + bool(values) + and all(isinstance(value, str) and value for value in values) + and len(set(values)) == len(values) + ) + + +def _unpinned(row): + """Whether a row's selectors read through a spelling no check here can see. + + The pin check reads aggregate keys and the cell check reads measures and + dimension values literally, but the resolver skips an empty field, admits + other fact keys, checks only the pins a selector names and matches a list + by membership. So each selector keeps to the committed fields, leaves none + empty, pins every dimension it declares, and pins an aggregate key or, for + a base selector, a roster. Only a base selector may hold several rosters + or a list of distinct record sets, and several rosters need a declared + member count; geography_id may be a list too, and no other field. The feed + audit stays the proof: these shapes catch hand edits, and a roster's + members bind to no listed key without the artifact. + """ + + for index, selector in enumerate(_selectors(row)): + pins = selector.get("dimension_values") or {} + rosters = [value for value in pins.values() if isinstance(value, list)] + members = [member for value in pins.values() for member in _listed(value)] + lists = {"geography_id", "record_set_id"} if index == 0 else {"geography_id"} + record_sets = selector.get("record_set_id") + if ( + set(selector) - _SELECTOR_FIELDS + or any(value is None or value == "" for value in selector.values()) + or not isinstance(selector.get("dimensions"), list) + or set(pins) != set(selector["dimensions"]) + or not all(rosters) + or not all(isinstance(item, str | int) and item != "" for item in members) + or any( + isinstance(value, list | dict) and key not in lists + for key, value in selector.items() + if key not in {"dimensions", "dimension_values"} + ) + or (isinstance(record_sets, list) and not _distinct_texts(record_sets)) + or (len(rosters) > 1 and (index > 0 or _declared_members(row) is None)) + or not (selector.get("aggregate_fact_key") or (index == 0 and rosters)) + ): + return True + return False + + +def _declared_members(row): + """The member count a row declares for its base selector, if any.""" + + for operand in row.get("value_operands", []): + if operand.get("role") == "base": + return operand.get("expected_member_count") + return row.get("expected_member_count") + + +def _miscounted(row, entry): + """Whether a roster base disagrees with its own member count or its entry. + + A roster selector reads the product of its rosters, which must equal the + member count it declares and the number of keys its entry lists. The + resolver refuses a short read at compile time; this refuses the + declaration, or an entry that dropped or gained a member, in CI. + """ + + pins = row["ledger_selector"].get("dimension_values") or {} + rosters = [value for value in pins.values() if isinstance(value, list)] + if not rosters: + return False + count = math.prod(len(roster) for roster in rosters) + return _declared_members(row) != count or ( + entry is not None and len(set(_keys(entry["base_facts"]))) != count + ) + + +def _pin_violations(documents, factors, listed): + """Each selector must pin what its resolved-read entry lists, under its set. + + A digest ties an entry to its selectors but not to the keys it lists, so a + selector rewritten with a recomputed digest would keep its old keys. Roster + selectors name no key: their entries must list as many keys as the rosters + name cells, and only the feed audit proves which facts they are. + """ + + violations = [] + for reference_set, document in documents.items(): + for row in document["target_references"]: + entry = listed.get(row["name"]) + if _unpinned(row): + violations.append(("unpinned", row["name"])) + if _miscounted(row, entry): + violations.append(("member_count", row["name"])) + if entry is None: + continue + if entry["reference_set"] != reference_set: + violations.append(("relabelled", row["name"])) + base = row["ledger_selector"].get("aggregate_fact_key") + operands = { + key + for operand in row.get("value_operands", []) + if "aggregate_fact_key" in operand + for key in _listed(operand["aggregate_fact_key"]) + } + if ( + base is not None and _keys(entry["base_facts"]) != [base] + ) or not operands <= set(_keys(entry["operand_facts"])): + violations.append(("pin", row["name"])) + for factor in factors["factors"]: + declaration = factor["declaration"] + name = f"factor:{declaration['id']}" + pins = { + slot["selector"]["aggregate_fact_key"] + for schedule in ("source_schedule", "target_schedule") + for slot in declaration[schedule] + } + if name not in listed: + continue + if pins != set(_keys(listed[name]["operand_facts"])): + violations.append(("pin", name)) + if listed[name]["reference_set"] != "factor_context": + violations.append(("relabelled", name)) + return violations + + +def _read_violations(documents, factors, reads): + """Disjointness on the listed feed keys, for every selector as committed. + + A digest ties each listed entry to its row's exact selectors, so a selector + respelled to dodge the cell check fails here. The pin check ties each pinned + key, each roster's member count and each row's set to its entry and refuses + a spelling these checks can't read, and the feed audit proves every listed + key. Partition totals count as read, because a holdout on a band set's total + shares its information. + """ + + listed = {entry["name"]: entry for entry in reads} + violations = _pin_violations(documents, factors, listed) + expected = { + row["name"]: generator.selector_digest(row) + for document in documents.values() + for row in document["target_references"] + } | { + f"factor:{entry['declaration']['id']}": generator.factor_digest( + entry["declaration"] + ) + for entry in factors["factors"] + } + violations += [("unlisted", name) for name in expected.keys() - listed.keys()] + violations += [("unlisted", name) for name in listed.keys() - expected.keys()] + violations += [ + ("digest", name) + for name in expected.keys() & listed.keys() + if listed[name]["selector_sha256"] != expected[name] + ] + facts, semantic, bases = {}, {}, {} + for entry in reads: + reference_set = entry["reference_set"] + for key in _keys(entry["base_facts"]): + bases.setdefault(key, set()).add(reference_set) + facts.setdefault(key, set()).add(reference_set) + for key in _keys(entry["operand_facts"]): + facts.setdefault(key, set()).add(reference_set) + total = entry.get("partition_total") + for key in _keys([*entry["semantic_facts"], *([total] if total else [])]): + semantic.setdefault(key, set()).add(reference_set) + violations += [("shared_base", key) for key, sets in bases.items() if len(sets) > 1] + violations += [ + (kind, key) + for kind, index in (("holdout_fact", facts), ("holdout_semantic", semantic)) + for key, sets in index.items() + if "holdout" in sets and len(sets) > 1 + ] + return violations + + +def _vintage_violations(rows, layers): + """Each subnational row must map its vintage to its layer's typed authority.""" + + violations = [] + for row in rows: + selector, metadata = row["ledger_selector"], row["metadata"] + level = selector["geography_level"] + if level == "country": + continue + vintage, _ = generator.GEOGRAPHY_VINTAGES.get(level, (None, None)) + if ( + selector["geography_vintage"] != vintage + or metadata.get("geography_vintage") != vintage + or metadata.get("geography_vintage_authority") != layers.get(level) + ): + violations.append(row["name"]) + return violations + + +def _money_context_violations(package): + """One factor context must serve references and money, as #1436 can't check. + + Run entry validates each money node's context on its own, so two contexts + could carry one factor id under different declarations. A non-diagnostic + factor may live only in reference_profiles.factor_context_resource, and + every money.normalize@1 node, in the graph or in entitlement rows, must + select that resource. + """ + + context = json.loads((package / "reference_profiles.json").read_text())[ + "factor_context_resource" + ] + stem = context.removesuffix(".json") + + def nodes(value): + if isinstance(value, dict): + if value.get("kernel") == "money.normalize@1": + yield value + value = list(value.values()) + if isinstance(value, list): + for item in value: + yield from nodes(item) + + violations = [] + for path in sorted(package.glob("*.json")): + document = json.loads(path.read_text()) + factors = document.get("factors") if isinstance(document, dict) else None + if path.name != context and isinstance(factors, list): + violations += [ + ("stray_factor", path.name) + for entry in factors + if entry["declaration"]["purpose"] != "diagnostic" + ] + for node in nodes(document): + selection = node.get("params", {}).get("factor_context") + resource = selection.get("resource") if isinstance(selection, dict) else "" + if str(resource).removesuffix(".json") != stem: + violations.append(("money_context", path.name)) + return violations + + +@functools.cache +def _rolled_rows(): + """Every rolled row across the three sets, as JSON text to copy per example.""" + + return tuple( + json.dumps(row) + for reference_set in SETS + for row in _rows(reference_set) + if row.get("value_operation") == "rolled_forward_by_ratio" + ) + + +def _year_free(record_set_id): + return re.sub(r"\.cy\d{4}\.", ".cy*.", record_set_id) + + +def _pair_violations(row): + """A rolled row's operands must be one FPB row at the declared periods.""" + + if row.get("value_operation") != "rolled_forward_by_ratio": + return [] + base, numerator, denominator = row["value_operands"] + problems = [] + if [base["role"], numerator["role"], denominator["role"]] != [ + "base", + "numerator", + "denominator", + ]: + problems.append("roles") + for key in ( + "source_name", + "source_measure_id", + "source_concept", + "entity_name", + "geography_level", + "geography_id", + "dimensions", + ): + if numerator.get(key) != denominator.get(key): + problems.append(key) + if _year_free(numerator["record_set_id"]) != _year_free( + denominator["record_set_id"] + ): + problems.append("row") + pair = generator.AGEING_PAIRS.get(row["metadata"].get("ageing_pair")) + if pair is None: + problems.append("undeclared_pair") + else: + expected = f"{generator.FPB}cy*.{pair['row']}" + if _year_free(numerator["record_set_id"]) != expected: + problems.append("pair_row") + if set(pair["operands"]) != { + numerator["period_value"], + denominator["period_value"], + }: + problems.append("pair_periods") + if ( + numerator["period_value"] != row["period"] + or numerator["assertion"] != "source_projection" + ): + problems.append("numerator_period") + if ( + denominator["period_value"] != row["ledger_selector"]["period_value"] + or denominator["assertion"] != "observation" + or str(denominator["period_value"]) != row["metadata"]["source_period"] + or str(row["period"]) != row["metadata"]["target_period"] + ): + problems.append("denominator_period") + return problems + + +def _belgian_selector(selector): + level, area = selector["geography_level"], selector["geography_id"] + if level == "commune": + areas = area if isinstance(area, list) else [area] + return all(re.fullmatch(r"[1-9][0-9]{4}", code) for code in areas) + return area in BELGIAN_LEVELS.get(level, set()) + + +def test_documents_are_value_free_uniquely_named_and_registered(): + package = _document("country_package.json") + declared = {row["path"] for row in package["resources"]} + assert {"chronicle_feed.json", *GENERATED} <= declared + spec = load_country_spec(_SPEC) + assert {"chronicle_feed.json", *GENERATED} <= set(spec.resources) + for name in GENERATED: + payload = _document(name) + if name not in {"reference_aging.json", "reference_inventory.json"}: + # Factor receipts and the inventory record evidence; references, + # intervals and profiles carry no observation at any depth. + assert not _carried_value_keys(payload), name + if name in SETS.values(): + rows = payload["target_references"] + assert len({row["name"] for row in rows}) == len(rows) + assert payload["schema_version"] == 2 + assert payload["target_profile"] == { + "schema_version": 1, + "hierarchy_reconciliations": [], + } + for row in rows: + if row["metadata"]["activation_status"] != "active": + assert row["metadata"]["parking_reason"].strip(), row["name"] + assert row["metadata"]["method_card_status"] == ( + "proposed_pending_d1902" + ) + + +def test_counts_by_family_and_reference_set(): + inventory = _document("reference_inventory.json")["reference_counts"] + assert {name: counts["total"] for name, counts in inventory.items()} == { + "target_references.json": 60, + "precal_references.json": 565 + 5 + 26, + "holdout_references.json": 7, + } + assert inventory["precal_references.json"]["by_family"] == { + "geography_support": 565, + "wage_distribution": 5, + "pension_distribution": 26, + } + assert inventory["target_references.json"]["by_family"] == { + "demography": 18, + "fiscal_income": 18, + "income_tax": 19, + "social_security": 1, + "caseloads": 1, + "benefit_expenditure": 2, + "self_employment": 1, + } + for reference_set, name in SETS.items(): + rows = _rows(reference_set) + assert inventory[name]["total"] == len(rows) + active = { + reference_set: sum( + row["metadata"]["activation_status"] == "active" + for row in _rows(reference_set) + ) + for reference_set in SETS + } + assert active == {"calibration": 18, "precal": 565 + 5, "holdout": 0} + + +def test_reference_sets_are_separated(): + assert _separation_violations(_documents()) == [] + holdout = _rows("holdout") + assert {row["metadata"]["target_role"] for row in holdout} == {"validation"} + assert {row["metadata"]["target_role"] for row in _rows("precal")} == { + "pre_calibration" + } + + +@pytest.mark.parametrize( + ("mutant", "kind"), + [ + ("calibration_row_in_holdout", "name"), + ("precal_row_in_calibration", "base"), + ("holdout_reads_calibration_operand", "holdout_read"), + ("holdout_measures_calibration_column", "holdout_measure"), + ("calibration_reuses_holdout_column_on_another_entity", "holdout_measure"), + ("holdout_base_is_calibration_fact", "holdout_read"), + ("holdout_pins_a_class_calibration_reads_by_roster", "holdout_read"), + ], +) +def test_separation_mutants_are_caught(mutant, kind): + documents = copy.deepcopy(_documents()) + calibration = documents["calibration"]["target_references"] + holdout = documents["holdout"]["target_references"] + if mutant == "calibration_row_in_holdout": + row = copy.deepcopy(calibration[0]) + row["metadata"]["reference_set"] = "holdout" + holdout.append(row) + elif mutant == "precal_row_in_calibration": + row = copy.deepcopy(documents["precal"]["target_references"][0]) + row["name"] += "__copy" + row["metadata"]["reference_set"] = "calibration" + calibration.append(row) + elif mutant == "holdout_reads_calibration_operand": + donor = next( + row + for row in calibration + if row["metadata"].get("ageing_pair") == "fpb_t11_total_resources" + ) + holdout[0]["value_operands"][1] = copy.deepcopy(donor["value_operands"][1]) + elif mutant == "holdout_measures_calibration_column": + holdout[0]["entity"], holdout[0]["measure"] = "tax_unit", "tax_units" + elif mutant == "calibration_reuses_holdout_column_on_another_entity": + donor = next( + row for row in calibration if row["entity"] != holdout[0]["entity"] + ) + donor["measure"] = holdout[0]["measure"] + elif mutant == "holdout_pins_a_class_calibration_reads_by_roster": + band = next( + row + for row in calibration + if row["name"] == "statbel_a1_standin_declarations__10k_20k" + ) + selector = copy.deepcopy(band["ledger_selector"]) + selector["dimension_values"] = {generator.A1_CLASS: "class_12_13"} + selector["aggregate_fact_key"] = "ledger.aggregate_fact.v2:pinned-class" + holdout[0]["ledger_selector"] = selector + else: + donor = next( + row + for row in calibration + if row["name"] == "onss_worker_personal_contributions" + ) + holdout[0]["ledger_selector"] = copy.deepcopy(donor["ledger_selector"]) + assert kind in {violation[0] for violation in _separation_violations(documents)} + + +def test_resolved_reads_bind_every_selector_and_stay_disjoint(): + assert ( + _read_violations(_documents(), _document("reference_aging.json"), _reads()) + == [] + ) + + +@pytest.mark.parametrize( + ("mutant", "kind"), + [ + ("respelled_selector", "digest"), + ("recomputed_digest_on_a_rewritten_base", "pin"), + ("recomputed_digest_on_a_rewritten_operand", "pin"), + ("factor_entry_keeps_an_old_key", "pin"), + ("relabelled_entry", "relabelled"), + ("relabelled_factor_entry", "relabelled"), + ("dropped_entry", "unlisted"), + ("holdout_reads_a_band_class", "holdout_fact"), + ("holdout_reads_a_factor_operand", "holdout_fact"), + ("holdout_on_a_partition_total", "holdout_semantic"), + ("calibration_base_in_precal", "shared_base"), + ], +) +def test_read_mutants_are_caught(mutant, kind): + documents, reads = copy.deepcopy(_documents()), copy.deepcopy(_reads()) + entries = {entry["name"]: entry for entry in reads} + holdout = next(entry for entry in reads if entry["reference_set"] == "holdout") + band = entries["statbel_a1_standin_taxable_income__10k_20k"] + row = documents["holdout"]["target_references"][0] + if mutant.startswith(("respelled", "recomputed")): + # A band row's selector with the class named only by its aggregate key: + # the cell check sees a new cell, yet the selector still reads the class. + donor = next( + row + for row in documents["calibration"]["target_references"] + if row["name"] == band["name"] + ) + selector = copy.deepcopy(donor["ledger_selector"]) + del selector["dimension_values"] + selector["aggregate_fact_key"] = _keys(band["base_facts"])[2] + if mutant == "recomputed_digest_on_a_rewritten_operand": + operand = row["value_operands"][1] + row["value_operands"][1] = {"role": operand["role"], **selector} + else: + row["ledger_selector"] = selector + assert _separation_violations(documents) == [] + if mutant != "respelled_selector": + entries[row["name"]]["selector_sha256"] = generator.selector_digest(row) + elif mutant == "factor_entry_keeps_an_old_key": + factor = next( + entry for entry in reads if entry["reference_set"] == "factor_context" + ) + factor["operand_facts"][0] = {"aggregate_fact_key": "stale"} + elif mutant == "relabelled_entry": + entries[row["name"]]["reference_set"] = "calibration" + elif mutant == "relabelled_factor_entry": + factor = next( + entry for entry in reads if entry["reference_set"] == "factor_context" + ) + factor["reference_set"] = "calibration" + elif mutant == "dropped_entry": + reads.remove(holdout) + elif mutant == "holdout_reads_a_band_class": + holdout["base_facts"].append(band["base_facts"][0]) + elif mutant == "holdout_reads_a_factor_operand": + factor = next( + entry for entry in reads if entry["reference_set"] == "factor_context" + ) + holdout["operand_facts"].append(factor["operand_facts"][0]) + elif mutant == "holdout_on_a_partition_total": + holdout["semantic_facts"].append(band["partition_total"]) + else: + precal = next(entry for entry in reads if entry["reference_set"] == "precal") + precal["base_facts"].append(band["base_facts"][0]) + assert kind in { + violation[0] + for violation in _read_violations( + documents, _document("reference_aging.json"), reads + ) + } + + +@pytest.mark.parametrize("target", ["base", "operand"]) +@pytest.mark.parametrize( + "spelling", + [ + {"semantic_fact_key": "key"}, + {"legacy_fact_key": "key"}, + {"source_record_id": "key"}, + {"layout_groupby_value_id": "key"}, + {"dimensions": {generator.A1_CLASS: "class_12_13"}}, + {"aggregate_fact_key": None, "source_measure_id": None}, + {"aggregate_fact_key": ""}, + { + "dimensions": [generator.A1_CLASS], + "dimension_values": {generator.A1_CLASS: ["class_12_13"]}, + "source_measure_id": None, + }, + { + "dimensions": [generator.A1_CLASS], + "dimension_values": {generator.A1_CLASS: ["class_12_13"]}, + "source_measure_id": "", + }, + { + "dimensions": [generator.A1_CLASS], + "dimension_values": {generator.A1_CLASS: ["class_12_13"]}, + "semantic_fact_key": "key", + }, + {}, + {"dimensions": {"a": "x"}, "dimension_values": {"a": ["x"]}}, + {"dimensions": ["a", "b"], "dimension_values": {"a": ["x"]}}, + {"dimensions": ["a", "b"], "dimension_values": {"a": ["x"], "b": ["y"]}}, + {"dimensions": ["a"], "dimension_values": {"a": []}}, + {"dimensions": ["a"], "dimension_values": {"a": [None]}}, + {"dimensions": ["a"], "dimension_values": {"a": [""]}}, + {"dimensions": ["a"], "dimension_values": {"a": [[]]}}, + {"dimensions": ["a"], "dimension_values": {"a": ["x", None]}}, + {"dimensions": ["a", "b"], "dimension_values": {"a": ["x"], "b": None}}, + {"dimensions": ["a", "b"], "dimension_values": {"a": ["x"], "b": ""}}, + {"dimensions": ["a", "b"], "dimension_values": {"a": ["x"], "b": []}}, + ], +) +def test_spellings_the_checks_cannot_read_refuse(spelling, target): + """A selector can name a fact in ways neither the key nor cell check sees.""" + + documents, reads = copy.deepcopy(_documents()), copy.deepcopy(_reads()) + row = documents["holdout"]["target_references"][0] + selector = row["ledger_selector"] + if target == "operand": + selector = row["value_operands"][1] + del selector["aggregate_fact_key"] + selector.update(spelling) + next(entry for entry in reads if entry["name"] == row["name"])[ + "selector_sha256" + ] = generator.selector_digest(row) + violations = _read_violations(documents, _document("reference_aging.json"), reads) + assert ("unpinned", row["name"]) in violations + assert ("digest", row["name"]) not in violations + + +def test_an_operand_needs_a_key_even_with_a_roster(): + """Only a base selector may read a roster; an operand reads one fact.""" + + row = copy.deepcopy(_rows("holdout")[0]) + operand = row["value_operands"][1] + del operand["aggregate_fact_key"] + operand["dimensions"] = [generator.A1_CLASS] + operand["dimension_values"] = {generator.A1_CLASS: ["class_12_13"]} + assert _unpinned(row) + assert not _unpinned(_rows("holdout")[0]) + + +def test_only_a_base_selector_may_hold_several_rosters(): + """A declared member count admits several rosters on the base, never an operand.""" + + row = copy.deepcopy(_rows("holdout")[0]) + row["value_operands"][0]["expected_member_count"] = 2 + operand = row["value_operands"][1] + operand["dimensions"] = ["a", "b"] + operand["dimension_values"] = {"a": ["x"], "b": ["y", "z"]} + assert _unpinned(row) + operand["dimension_values"]["a"] = "x" + assert not _unpinned(row) + + +WAGE = f"{generator.WAGE_CONTRACT}__lt100" +# One real T17 cell of the <100 class, for mutants: men under 20. Record set +# 9ae5b76f27368269 holds the class's Man-Homme cells. A pin, not a value. +WAGE_MEMBER = { + "record_set_id": "rsz.t17.2026Q1.9ae5b76f27368269.employed_workers", + "dimension_values": { + "rsz.age_class": "-20", + generator.WAGE_CLASS: "<100", + "rsz.sex": "Man-Homme", + }, +} + + +def _named(documents, name): + return next( + row + for document in documents.values() + for row in document["target_references"] + if row["name"] == name + ) + + +def _entry(reads, name): + return next(entry for entry in reads if entry["name"] == name) + + +@pytest.mark.parametrize( + ("mutant", "kind"), + [ + ("partial_roster", "unpinned"), + ("partial_roster_without_dimensions", "unpinned"), + ("roster_beside_an_unpinned_dimension", "unpinned"), + ("no_key_and_no_roster", "unpinned"), + ("rosters_without_a_member_count", "unpinned"), + ("repeated_record_set", "unpinned"), + ("record_set_list_on_an_operand", "unpinned"), + ("key_list_on_the_base", "unpinned"), + ("list_valued_measure", "unpinned"), + ("declared_count_disagrees", "member_count"), + ("roster_gains_a_member", "member_count"), + ("entry_loses_a_member", "member_count"), + ("entry_gains_a_member", "member_count"), + ("entry_swaps_a_member_for_a_holdout_fact", "holdout_fact"), + ], +) +def test_summed_row_spellings_and_mutants_are_caught(mutant, kind): + """A summed wage row reads its rosters' product, and its entry lists as many.""" + + documents, reads = copy.deepcopy(_documents()), copy.deepcopy(_reads()) + row = _named(documents, WAGE) + selector = row["ledger_selector"] + pins = selector["dimension_values"] + holdout = documents["holdout"]["target_references"][0] + entry = _entry(reads, row["name"]) + subject = row["name"] + if mutant == "partial_roster": + del pins["rsz.sex"] + elif mutant == "partial_roster_without_dimensions": + del pins["rsz.sex"], selector["dimensions"] + elif mutant == "roster_beside_an_unpinned_dimension": + selector["dimensions"].append("rsz.region") + elif mutant == "no_key_and_no_roster": + selector.update(copy.deepcopy(WAGE_MEMBER)) + elif mutant == "rosters_without_a_member_count": + del row["expected_member_count"] + elif mutant == "repeated_record_set": + selector["record_set_id"][1] = selector["record_set_id"][0] + elif mutant == "record_set_list_on_an_operand": + row = holdout + operand = row["value_operands"][1] + operand["record_set_id"] = [operand["record_set_id"], "other"] + subject = row["name"] + elif mutant == "key_list_on_the_base": + selector["aggregate_fact_key"] = _keys(entry["base_facts"]) + elif mutant == "list_valued_measure": + selector["source_measure_id"] = [generator.WAGE_MEASURE, "jobs"] + elif mutant == "declared_count_disagrees": + row["expected_member_count"] = 23 + elif mutant == "roster_gains_a_member": + pins["rsz.age_class"].append("75+") + elif mutant == "entry_loses_a_member": + entry["base_facts"].pop(0) + elif mutant == "entry_gains_a_member": + entry["base_facts"].append({"aggregate_fact_key": "ledger.aggregate_fact.v2:x"}) + else: + # A regenerated entry lists a holdout's fact in place of a member. + subject = holdout["ledger_selector"]["aggregate_fact_key"] + entry["base_facts"][0] = {"aggregate_fact_key": subject} + _entry(reads, row["name"])["selector_sha256"] = generator.selector_digest(row) + violations = _read_violations(documents, _document("reference_aging.json"), reads) + assert (kind, subject) in violations + assert ("digest", row["name"]) not in violations + + +def test_a_holdout_pinning_one_wage_member_collides(): + """_row_cells gives the exact cell a holdout pinning one member builds.""" + + documents = copy.deepcopy(_documents()) + selector = { + **copy.deepcopy(_named(documents, WAGE)["ledger_selector"]), + **copy.deepcopy(WAGE_MEMBER), + "aggregate_fact_key": "ledger.aggregate_fact.v2:member", + } + documents["holdout"]["target_references"][0]["ledger_selector"] = selector + cell = ( + WAGE_MEMBER["record_set_id"], + generator.WAGE_MEASURE, + "BE", + json.dumps(WAGE_MEMBER["dimension_values"], sort_keys=True), + ) + violations = _separation_violations(documents) + assert ("holdout_read", cell) in violations + assert ("base", cell) in violations + + +@functools.cache +def _all_rows(): + return tuple( + json.dumps(row) for reference_set in SETS for row in _rows(reference_set) + ) + + +@settings(max_examples=200, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given(index=st.integers(min_value=0, max_value=10**4), data=st.data()) +def test_row_cells_hold_every_member_a_selector_can_name(index, data): + """Property: one record set, area and member of each roster is one cell.""" + + rows = _all_rows() + selector = json.loads(rows[index % len(rows)])["ledger_selector"] + single = { + **selector, + **{ + key: data.draw(st.sampled_from(selector[key])) + for key in ("record_set_id", "geography_id") + if isinstance(selector[key], list) + }, + } + if "dimension_values" in selector: + single["dimension_values"] = { + name: data.draw(st.sampled_from(value)) + if isinstance(value, list) + else value + for name, value in selector["dimension_values"].items() + } + (cell,) = _row_cells({"ledger_selector": single}) + assert cell in _row_cells({"ledger_selector": selector}) + + +def test_row_cells_expand_the_full_roster_product(): + rows = {row["name"]: row for row in _rows("precal") + _rows()} + for row in _surface_rows(_documents())["wages"]: + # 2 record sets x 12 ages x 2 sexes: 24 cells hold facts, 24 can't. + assert len(_row_cells(row)) == 48 + for row in _surface_rows(_documents())["legal_pensions"]: + assert len(_row_cells(row)) == 1 + band = rows["statbel_a1_standin_declarations__10k_20k"] + assert len(_row_cells({"ledger_selector": band["ledger_selector"]})) == 10 + + +def _surface_rows(documents): + """Each surface's precal rows, in document order.""" + + return { + surface: [ + row + for row in documents["precal"]["target_references"] + if row["metadata"].get("precal_use") == f"quantile_surface:{surface}" + ] + for surface in ("wages", "legal_pensions") + } + + +def _finite(edge): + return ( + isinstance(edge, int | float) + and not isinstance(edge, bool) + and math.isfinite(edge) + ) + + +def _band_violations(document, references): + """Whether a band document is a bands parameter transport.quantile_map@1 takes. + + The kernel takes the document verbatim, so it holds exactly a nonempty + bands list of lower, upper and reference. Edges strictly increase and stay + contiguous, the first lower bound is finite and nonnegative, only the last + upper bound may be null, and each reference names a distinct precal row. + """ + + if ( + not isinstance(document, dict) + or set(document) != {"bands"} + or not isinstance(document["bands"], list) + or not document["bands"] + or any( + not isinstance(band, dict) or set(band) != {"lower", "upper", "reference"} + for band in document["bands"] + ) + ): + return ["shape"] + bands, problems = document["bands"], set() + if not _finite(bands[0]["lower"]) or bands[0]["lower"] < 0: + problems.add("first_lower") + for band, following in zip(bands, [*bands[1:], None], strict=True): + lower, upper = band["lower"], band["upper"] + if upper is None: + if following is not None: + problems.add("open_interior") + elif not (_finite(lower) and _finite(upper) and lower < upper): + problems.add("order") + elif following is not None and following["lower"] != upper: + problems.add("gap") + names = [band["reference"] for band in bands] + if not all(isinstance(name, str) for name in names): + problems.add("reference") + else: + if len(set(names)) != len(names): + problems.add("duplicate_reference") + if not set(names) <= set(references): + problems.add("reference") + return sorted(problems) + + +def _surface_violations(documents, surfaces): + """The surfaces must read their declared facts through their own rows. + + _surface_bands checks only that each reference is an unfiltered person + count, which T17's jobs measure and SFPD's Totaal row also are. So each + wage row sums T17's 2026-Q1 employed_workers cells and stays active, each + pension row pins one SFPD group 1 recipient band and stays parked, and + each band document maps its surface's rows in order, with the label each + row pins and the edges its provenance records. + """ + + violations = [] + rows = _surface_rows(documents) + precal = {row["name"] for row in documents["precal"]["target_references"]} + quarter = generator.WAGE_PERIOD.replace("-", "") + for row in rows["wages"]: + selector = row["ledger_selector"] + if ( + selector.get("source_measure_id") != generator.WAGE_MEASURE + or selector.get("source_concept") != f"rsz.{generator.WAGE_MEASURE}" + or selector.get("period_value") != generator.WAGE_PERIOD + or not all( + isinstance(name, str) + and name.startswith(f"rsz.t17.{quarter}.") + and name.endswith(f".{generator.WAGE_MEASURE}") + for name in _listed(selector.get("record_set_id")) + ) + ): + violations.append(("wage_cells", row["name"])) + if ( + row.get("value_operation") != "sum" + or row.get("period_match_policy") != "exact" + or row["metadata"]["activation_status"] != "active" + ): + violations.append(("wage_row", row["name"])) + for row in rows["legal_pensions"]: + selector = row["ledger_selector"] + pins = dict(selector.get("dimension_values", {})) + band = pins.pop(generator.PENSION_BAND, None) + if ( + selector.get("record_set_id") != generator.PENSION_RECORD_SET + or selector.get("source_measure_id") != "recipients" + or pins != generator.PENSION_COHORT + or not isinstance(band, str) + or band == generator.PENSION_TOTAL_LABEL + ): + violations.append(("pension_band", row["name"])) + if row["metadata"]["activation_status"] != generator.PENSION_STATUS: + violations.append(("pension_active", row["name"])) + for surface, pin in ( + ("wages", generator.WAGE_CLASS), + ("legal_pensions", generator.PENSION_BAND), + ): + entry = surfaces[surface] + if entry.get("status") != generator.METHOD_CARD_STATUS: + violations.append(("status", surface)) + problems = _band_violations(entry["band_document"], precal) + violations += [(f"band_{problem}", surface) for problem in problems] + if problems == ["shape"]: + continue + bands = entry["band_document"]["bands"] + if [band["reference"] for band in bands] != [ + row["name"] for row in rows[surface] + ]: + violations.append(("band_rows", surface)) + labels = { + row["name"]: row["ledger_selector"].get("dimension_values", {}).get(pin) + for row in rows[surface] + } + if [ + ( + source["reference"], + source["printed_label"], + source["lower"], + source["upper"], + ) + for source in entry["band_provenance"] + ] != [ + ( + band["reference"], + labels.get(band["reference"]), + band["lower"], + band["upper"], + ) + for band in bands + ]: + violations.append(("provenance", surface)) + return violations + + +def test_quantile_surfaces_read_their_declared_rows(): + documents, surfaces = _documents(), _document(SURFACES) + assert _surface_violations(documents, surfaces) == [] + rows = _surface_rows(documents) + assert [len(rows["wages"]), len(rows["legal_pensions"])] == [5, 26] + wages, pensions = surfaces["wages"], surfaces["legal_pensions"] + assert (wages["unit"], pensions["unit"]) == ("eur_per_day", "eur_per_month") + assert (wages["source_period"], pensions["source_period"]) == ("2026-Q1", "2025-01") + assert (wages["donor_column"], pensions["donor_column"]) == ( + "employment_income", + None, + ) + assert [ + (band["lower"], band["upper"]) for band in wages["band_document"]["bands"] + ] == [ + (0, 100), + (100, 150), + (150, 200), + (200, 300), + (300, None), + ] + assert [ + (band["lower"], band["upper"]) for band in pensions["band_document"]["bands"] + ] == [(0.01, 125), *((125 * k, 125 * (k + 1)) for k in range(1, 25)), (3125, None)] + entries = {entry["name"]: entry for entry in _reads()} + for row in rows["wages"]: + assert row["expected_member_count"] == 24 + assert "aggregate_fact_key" not in row["ledger_selector"] + assert len(entries[row["name"]]["base_facts"]) == 24 + # The unknown-pay class has no row and no band. + assert generator.WAGE_UNKNOWN_CLASS not in { + row["ledger_selector"]["dimension_values"][generator.WAGE_CLASS] + for row in rows["wages"] + } + evidence = _document("reference_inventory.json")["quantile_surfaces"] + known = evidence["wages"] + assert [row["reference"] for row in known["classes"]] == [ + row["name"] for row in rows["wages"] + ] + assert ( + math.fsum(row["workers"] for row in known["classes"]) + == (known["known_pay_workers"]) + ) + assert ( + known["known_pay_workers"] + known["unknown_pay"]["workers"] + == (known["table_workers"]) + ) + assert known["known_plus_unknown_equals_table"] is True + assert len(known["unknown_pay"]["facts"]) == 24 + band_counts = evidence["legal_pensions"] + assert ( + math.fsum(row["recipients"] for row in band_counts["bands"]) + == (band_counts["total_fact"]["recipients"]) + ) + assert band_counts["bands_sum_to_total"] is True + + +@pytest.mark.parametrize( + ("mutant", "kind"), + [ + ("wage_row_counts_jobs", "wage_cells"), + ("wage_row_reads_jobs_record_sets", "wage_cells"), + ("wage_row_reads_another_quarter", "wage_cells"), + ("wage_row_parked", "wage_row"), + ("pension_row_reads_the_total", "pension_band"), + ("pension_row_reads_expenditure", "pension_band"), + ("pension_row_reads_another_group", "pension_band"), + ("pension_row_activated", "pension_active"), + ("band_gap", "band_gap"), + ("band_open_interior", "band_open_interior"), + ("band_negative_floor", "band_first_lower"), + ("band_reference_outside_precal", "band_reference"), + ("band_reference_repeated", "band_duplicate_reference"), + ("band_document_carries_metadata", "band_shape"), + ("bands_out_of_row_order", "band_rows"), + ("provenance_label_swapped", "provenance"), + ("surface_status_dropped", "status"), + ], +) +def test_surface_mutants_are_caught(mutant, kind): + documents, surfaces = copy.deepcopy(_documents()), _document(SURFACES) + rows = _surface_rows(documents) + wage, pension = rows["wages"][0]["ledger_selector"], rows["legal_pensions"][0] + bands = surfaces["wages"]["band_document"]["bands"] + if mutant == "wage_row_counts_jobs": + wage["source_measure_id"], wage["source_concept"] = "jobs", "rsz.jobs" + wage["record_set_id"] = [ + name.replace(".employed_workers", ".jobs") for name in wage["record_set_id"] + ] + elif mutant == "wage_row_reads_jobs_record_sets": + wage["record_set_id"][0] = wage["record_set_id"][0].replace( + ".employed_workers", ".jobs" + ) + elif mutant == "wage_row_reads_another_quarter": + wage["period_value"] = "2025-Q4" + wage["record_set_id"] = [ + name.replace("2026Q1", "2025Q4") for name in wage["record_set_id"] + ] + elif mutant == "wage_row_parked": + rows["wages"][0]["metadata"]["activation_status"] = "requires_d1902" + elif mutant == "pension_row_reads_the_total": + pension["ledger_selector"]["dimension_values"][generator.PENSION_BAND] = ( + generator.PENSION_TOTAL_LABEL + ) + elif mutant == "pension_row_reads_expenditure": + pension["ledger_selector"]["source_measure_id"] = "monthly_expenditure_eur" + pension["ledger_selector"]["record_set_id"] = ( + "sfpd.amount_bands.jan2025.group1.monthly_expenditure_eur" + ) + elif mutant == "pension_row_reads_another_group": + pension["ledger_selector"]["record_set_id"] = ( + "sfpd.amount_bands.jan2025.group2.recipients" + ) + pension["ledger_selector"]["dimension_values"]["sfpd.pension_category"] = ( + "Gehuwd: Rust gezinsbedrag" + ) + elif mutant == "pension_row_activated": + pension["metadata"]["activation_status"] = "active" + elif mutant == "band_gap": + bands[1]["lower"] = 101 + elif mutant == "band_open_interior": + bands[1]["upper"] = None + elif mutant == "band_negative_floor": + bands[0]["lower"] = -1 + elif mutant == "band_reference_outside_precal": + bands[0]["reference"] = "statbel_b4_declarations__joint" + elif mutant == "band_reference_repeated": + bands[1]["reference"] = bands[0]["reference"] + elif mutant == "band_document_carries_metadata": + surfaces["wages"]["band_document"]["unit"] = "eur_per_day" + elif mutant == "bands_out_of_row_order": + bands[0]["reference"], bands[1]["reference"] = ( + bands[1]["reference"], + bands[0]["reference"], + ) + elif mutant == "provenance_label_swapped": + surfaces["wages"]["band_provenance"][0]["printed_label"] = "100 - 149" + else: + surfaces["legal_pensions"]["status"] = "active" + assert kind in { + violation[0] for violation in _surface_violations(documents, surfaces) + } + + +@functools.cache +def _precal_names(): + return tuple(row["name"] for row in _rows("precal")) + + +@functools.cache +def _other_names(): + return tuple( + row["name"] + for reference_set in ("calibration", "holdout") + for row in _rows(reference_set) + ) + + +@settings(max_examples=300, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given( + edges=st.lists( + st.integers(min_value=0, max_value=10**6), min_size=3, max_size=30, unique=True + ).map(sorted), + open_top=st.booleans(), + rupture=st.sampled_from( + [ + "overlap", + "hole", + "swap", + "zero_width", + "open_interior", + "negative_floor", + "foreign_reference", + "repeated_reference", + "metadata", + ] + ), + data=st.data(), +) +def test_band_documents_hold_their_properties_and_each_break_refuses( + edges, open_top, rupture, data +): + """Property: contiguous increasing edges over precal rows pass; one break refuses. + + The kernel ranks onto these edges. A gap, an overlap, an open interior + band, a negative floor, or a reference outside precal or used twice would + change the shares it divides or the population it reads. + """ + + names = _precal_names() + bounds = list( + zip(edges, [*edges[1:], None] if open_top else edges[1:], strict=False) + ) + references = data.draw( + st.lists( + st.sampled_from(names), + min_size=len(bounds), + max_size=len(bounds), + unique=True, + ) + ) + document = { + "bands": [ + {"lower": lower, "upper": upper, "reference": name} + for (lower, upper), name in zip(bounds, references, strict=True) + ] + } + assert _band_violations(document, names) == [] + bands = document["bands"] + index = data.draw(st.integers(min_value=0, max_value=len(bands) - 2)) + if rupture == "overlap": + bands[index]["upper"] += data.draw(st.integers(min_value=1, max_value=10)) + expected = "gap" + elif rupture == "hole": + bands[index + 1]["lower"] += data.draw(st.integers(min_value=1, max_value=10)) + expected = "gap" + elif rupture == "swap": + # A swapped open top band becomes an open interior band. + bands[index], bands[index + 1] = bands[index + 1], bands[index] + expected = "open_interior" if bands[index]["upper"] is None else "gap" + elif rupture == "zero_width": + bands[index]["upper"] = bands[index]["lower"] + expected = "order" + elif rupture == "open_interior": + bands[index]["upper"] = None + expected = "open_interior" + elif rupture == "negative_floor": + bands[0]["lower"] = -data.draw(st.integers(min_value=1, max_value=10**6)) + expected = "first_lower" + elif rupture == "foreign_reference": + bands[index]["reference"] = data.draw(st.sampled_from(_other_names())) + expected = "reference" + elif rupture == "repeated_reference": + bands[index + 1]["reference"] = bands[index]["reference"] + expected = "duplicate_reference" + else: + document["unit"] = "eur_per_day" + expected = "shape" + assert expected in _band_violations(document, names) + + +def _member_facts(row, values): + """Synthetic facts filling a row's members: resolver probes, not Belgian values.""" + + selector = row["ledger_selector"] + if "aggregate_fact_key" in selector: + return [_synthetic_fact(selector, values[0])] + pins = selector["dimension_values"] + names = sorted(pins) + record_sets = selector["record_set_id"] + members = itertools.product(*(_listed(pins[name]) for name in names)) + return [ + _synthetic_fact( + { + **selector, + "aggregate_fact_key": f"synthetic:{row['name']}:{index}", + "record_set_id": record_sets[index % len(record_sets)], + "dimension_values": dict(zip(names, member, strict=True)), + }, + values[index], + ) + for index, member in enumerate(members) + ] + + +@settings(max_examples=30, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given(surface=st.sampled_from(["wages", "legal_pensions"]), data=st.data()) +def test_band_shares_do_not_depend_on_compilation_order(surface, data): + """Property: the shares follow the band document, whatever order compiles. + + Differential: each share equals its row's count over the total, computed + exactly. Pension rows compile through _executable, as B3's parked rows do. + """ + + documents = _documents() + rows = [_executable(row) for row in _surface_rows(documents)[surface]] + document = _document(SURFACES)[surface]["band_document"] + facts, counts = [], [] + for row in rows: + size = _declared_members(row) or 1 + values = data.draw( + st.lists( + st.integers(min_value=1, max_value=10**9), min_size=size, max_size=size + ) + ) + facts += _member_facts(row, values) + counts.append(sum(values)) + shares = [] + for _ in range(2): + references = _parsed( + data.draw(st.permutations(rows)), documents["precal"]["hierarchy"] + ) + registry = compile_ledger_target_references( + data.draw(st.permutations(facts)), references, country="be" + ) + shares.append( + _surface_bands(document, SimpleNamespace(registry=registry), unit="person") + ) + total = sum(counts) + assert shares[0] == shares[1] + assert [band["share"] for band in shares[0]] == [ + float(Fraction(count, total)) for count in counts + ] + + +def _printed_cents(cents): + euros, rest = divmod(cents, 100) + return f"{euros:,}".replace(",", ".") + f",{rest:02d}" + + +def _pension_fact(lower, last_cent, label=None): + """A synthetic SFPD band fact with Chronicle's constraint shape (cents).""" + + constraints = [ + { + "operator": ">=", + "unit": "eur", + "value": lower / 100, + "variable": generator.PENSION_AMOUNT, + } + ] + if last_cent is not None: + constraints.append( + { + "operator": "<=", + "unit": "eur", + "value": last_cent / 100, + "variable": generator.PENSION_AMOUNT, + } + ) + if label is None: + label = _printed_cents(lower) + ( + " en >" if last_cent is None else f" - {_printed_cents(last_cent)}" + ) + return { + "dimensions": {generator.PENSION_BAND: label}, + "universe_constraints": {"constraints": constraints}, + } + + +@settings(max_examples=200, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given( + cuts=st.lists(st.integers(min_value=2, max_value=10**7), max_size=30, unique=True), + order=st.randoms(use_true_random=False), +) +def test_pension_bands_tile_any_cent_ladder_from_one_cent(cuts, order): + """Property: bands bounded to the cent below the next band tile half-open.""" + + lowers = [1, *sorted(cuts)] + facts = [ + _pension_fact(lower, None if following is None else following - 1) + for lower, following in zip(lowers, [*lowers[1:], None], strict=True) + ] + order.shuffle(facts) + tiled = generator._pension_bands(facts) + assert [band[0] for band in tiled] == [Fraction(lower, 100) for lower in lowers] + assert [band[1] for band in tiled] == [ + *(Fraction(lower, 100) for lower in lowers[1:]), + None, + ] + + +@pytest.mark.parametrize( + "facts", + [ + # A cent missing between bands, and two bands sharing one. + [_pension_fact(1, 12498), _pension_fact(12500, None)], + [_pension_fact(1, 12500), _pension_fact(12500, None)], + # An open band below the top, a closed top, a floor above one cent. + [_pension_fact(1, None), _pension_fact(12500, None)], + [_pension_fact(1, 12499), _pension_fact(12500, 24999)], + [_pension_fact(100, 12499), _pension_fact(12500, None)], + # A label that disagrees with its constraints. + [_pension_fact(1, 12499, "0,01 - 125,99"), _pension_fact(12500, None)], + # The review's mutant: a band that ends below its floor, with the next + # band starting one cent above that end, so adjacency alone holds. + [ + _pension_fact(1, 24999), + _pension_fact(25000, 24999), + _pension_fact(25000, None), + ], + # The same mutant on the first band, which ends at cent 0. + [_pension_fact(1, 0), _pension_fact(1, None)], + ], +) +def test_pension_band_gaps_and_label_drift_refuse(facts): + with pytest.raises(ValueError, match="SFPD"): + generator._pension_bands(facts) + + +@settings(max_examples=200, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given( + cuts=st.lists( + st.integers(min_value=2, max_value=10**7), min_size=2, max_size=30, unique=True + ), + data=st.data(), +) +def test_pension_bands_accept_only_strictly_rising_floors(cuts, data): + """Property: every ladder the reader accepts has non-empty bands. + + Start from a valid ladder. Sometimes end one closed band some cents below + its floor, and start the next band one cent above that end, so that pair + still looks adjacent. The reader must either refuse, or return bands whose + floors rise strictly, each below its upper edge. + """ + + lowers = [1, *sorted(cuts)] + lasts = [following - 1 for following in lowers[1:]] + [None] + if data.draw(st.booleans()): + index = data.draw(st.integers(min_value=0, max_value=len(lowers) - 2)) + drop = data.draw(st.integers(min_value=0, max_value=lowers[index] - 1)) + lasts[index] = lowers[index] - 1 - drop + lowers[index + 1] = lasts[index] + 1 + facts = [ + _pension_fact(lower, last) for lower, last in zip(lowers, lasts, strict=True) + ] + try: + tiled = generator._pension_bands(facts) + except ValueError as error: + assert "SFPD" in str(error) + return + floors = [band[0] for band in tiled] + assert floors == sorted(set(floors)) + assert all(band[1] is None or band[0] < band[1] for band in tiled) + + +@functools.cache +def _typed_layers(): + resolved = load_country_spec(_SPEC).resolved_spec + assignment = resolved.domain("geography").to_wire()["assignment"] + return json.dumps(assignment["layer_vintages"]) + + +def test_subnational_rows_map_their_vintage_to_the_typed_layer(): + layers = json.loads(_typed_layers()) + for reference_set in SETS: + assert _vintage_violations(_rows(reference_set), layers) == [] + aliases = _typed_geography_vintage_aliases( + load_country_spec(_SPEC).resolved_spec, country="be" + ) + bindings = _document("reference_inventory.json")["geography_vintage_bindings"] + assert {row["layer"] for row in bindings} == set(generator.GEOGRAPHY_VINTAGES) + for binding in bindings: + layer = binding["layer"] + assert binding["typed_authority"] == layers[layer] + assert (binding["chronicle_vintage"], binding["typed_authority"]) == ( + generator.GEOGRAPHY_VINTAGES[layer] + ) + exact = binding["chronicle_vintage"] in aliases[layer] + assert binding["relation"] == ("exact_alias" if exact else "crosswalk") + + +@pytest.mark.parametrize( + ("reference_set", "change"), + [ + ("calibration", {"selector": "NUTS_2021"}), + ("calibration", {"metadata": "NUTS_2021"}), + ("calibration", {"metadata": None}), + ("calibration", {"authority": "vintage:be_province_2025"}), + ("calibration", {"authority": None}), + ("precal", {"selector": "nis_2024"}), + ], +) +def test_vintage_mutants_refuse(reference_set, change): + rows = copy.deepcopy(_rows(reference_set)[:1]) + selector, metadata = rows[0]["ledger_selector"], rows[0]["metadata"] + for field, value in change.items(): + if field == "selector": + selector["geography_vintage"] = value + else: + key = { + "metadata": "geography_vintage", + "authority": "geography_vintage_authority", + }[field] + if value is None: + del metadata[key] + else: + metadata[key] = value + assert _vintage_violations(rows, json.loads(_typed_layers())) == [rows[0]["name"]] + + +def test_an_unreviewed_vintage_label_refuses_generation(): + fact = { + "aggregate_fact_key": "ledger.aggregate_fact.v2:synthetic", + "geography": {"level": "nuts1", "id": "BE1", "vintage": "NUTS_2027"}, + } + with pytest.raises(ValueError, match="reviewed mapping"): + generator._vintage_authority(fact) + + +def test_calibration_keeps_every_family_b1_required(): + assert REQUIRED_FAMILIES <= {row["family"] for row in _rows()} + + +def test_belgian_selectors_never_name_german_or_french_rows(): + for reference_set in SETS: + for row in _rows(reference_set): + for selector in _selectors(row): + assert _belgian_selector(selector), (row["name"], selector) + assert not str(selector.get("geography_id")).startswith(("DE", "FR")) + mutant = copy.deepcopy(_rows("holdout")[0]["ledger_selector"]) + mutant["geography_id"] = "DE" + assert not _belgian_selector(mutant) + for level, area in (("country", "DE"), ("country", "FR"), ("nuts1", "FR1")): + fact = { + "aggregate_fact_key": "ledger.aggregate_fact.v2:synthetic", + "geography": {"level": level, "id": area}, + } + with pytest.raises(ValueError, match="Belgian selectors read Belgian facts"): + generator._belgian(fact) + + +def test_every_rolled_row_uses_one_declared_fpb_row_at_its_periods(): + rolled = [ + row + for reference_set in SETS + for row in _rows(reference_set) + if row.get("value_operation") == "rolled_forward_by_ratio" + ] + assert len(rolled) == 22 + 7 + for row in rolled: + assert _pair_violations(row) == [], row["name"] + assert row["period"] == 2026 + assert row["period_match_policy"] == "latest_not_after" + assert row["assertion_policy"] == "allow_source_projection" + for row in _rows(): + if row.get("value_operation", "identity") == "identity": + assert row["period"] == row["ledger_selector"]["period_value"] + assert row["period_match_policy"] == "exact" + pairs = {row["metadata"]["ageing_pair"] for row in rolled} + assert pairs == set(generator.AGEING_PAIRS) + + +_FPB_ROWS = sorted({pair["row"] for pair in generator.AGEING_PAIRS.values()}) + + +@settings(max_examples=100, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given( + index=st.integers(min_value=0, max_value=30), + other_row=st.sampled_from( + [*_FPB_ROWS, "labour_market.levels.working_age_population"] + ), + other_year=st.sampled_from([2022, 2023, 2024, 2025, 2026, 2027]), + field=st.sampled_from(["row", "numerator_year", "denominator_year", "concept"]), +) +def test_ratio_pairs_share_one_row_and_their_declared_periods( + index, other_row, other_year, field +): + rolled = _rolled_rows() + row = json.loads(rolled[index % len(rolled)]) + assert _pair_violations(row) == [] + numerator, denominator = row["value_operands"][1:] + changed = False + if field == "row": + current = _year_free(denominator["record_set_id"]) + target = f"{generator.FPB}cy*.{other_row}" + changed = current != target + denominator["record_set_id"] = target.replace( + "cy*", f"cy{denominator['period_value']}" + ) + elif field == "numerator_year": + changed = other_year != numerator["period_value"] + numerator["period_value"] = other_year + numerator["record_set_id"] = re.sub( + r"\.cy\d{4}\.", f".cy{other_year}.", numerator["record_set_id"] + ) + elif field == "denominator_year": + changed = other_year != denominator["period_value"] + denominator["period_value"] = other_year + denominator["record_set_id"] = re.sub( + r"\.cy\d{4}\.", f".cy{other_year}.", denominator["record_set_id"] + ) + else: + changed = True + denominator["source_concept"] += ".other" + assert bool(_pair_violations(row)) == changed + + +@functools.cache +def _hierarchy(reference_set): + return json.dumps(_document(SETS[reference_set])["hierarchy"]) + + +def _synthetic_fact(selector, value, member=None): + """A minimal fact matching one selector; a resolver probe, not a Belgian value.""" + + dimensions = dict(selector.get("dimension_values", {})) + key = selector.get("aggregate_fact_key") + if member is not None: + dimensions[member[0]] = member[1] + key = f"synthetic:{selector['record_set_id']}:{member[1]}" + return { + "aggregate_fact_key": key, + "observed_measure": { + name: selector[name] + for name in ("source_name", "source_measure_id", "source_concept") + } + | {"unit": "count"}, + "entity": {"name": selector["entity_name"]}, + "period": {"type": selector["period_type"], "value": selector["period_value"]}, + "geography": { + "level": selector["geography_level"], + "id": selector["geography_id"], + "vintage": selector["geography_vintage"], + "name": "Belgium", + }, + "layout": {"record_set_id": selector["record_set_id"]}, + "dimensions": dimensions, + "dimension_labels": {name: name for name in dimensions}, + "dimension_value_labels": { + name: {str(item): str(item)} for name, item in dimensions.items() + }, + "assertion": selector.get("assertion", "observation"), + "value": value, + "aggregation": {"method": "sum"}, + "label": "Synthetic resolver probe", + } + + +def _synthetic_roll(row, draw): + """Facts for one rolled row and the independently computed exact target.""" + + selector = row["ledger_selector"] + numerator_selector, denominator_selector = ( + {key: value for key, value in operand.items() if key != "role"} + for operand in row["value_operands"][1:] + ) + amount = st.integers(min_value=1, max_value=10**12) + denominator = draw(amount) + # The shared operation refuses ratios outside (0.5, 2]: stay inside. + numerator = draw( + st.integers( + min_value=denominator * 6 // 10 + 1, max_value=denominator * 19 // 10 + ) + ) + rosters = [ + (key, value) + for key, value in selector.get("dimension_values", {}).items() + if isinstance(value, list) + ] + facts = [] + if rosters: + dimension, members = rosters[0] + bases = [draw(amount) for _ in members] + facts += [ + _synthetic_fact(selector, value, (dimension, member)) + for value, member in zip(bases, members, strict=True) + ] + elif selector["aggregate_fact_key"] == denominator_selector["aggregate_fact_key"]: + bases = [denominator] + else: + bases = [draw(amount)] + facts.append(_synthetic_fact(selector, bases[0])) + facts.append(_synthetic_fact(numerator_selector, numerator)) + facts.append(_synthetic_fact(denominator_selector, denominator)) + return facts, Fraction(sum(bases)) * Fraction(numerator, denominator) + + +@settings(max_examples=60, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given(index=st.integers(min_value=0, max_value=60), data=st.data()) +def test_shared_compiler_rolls_each_committed_row_as_declared(index, data): + """Differential: the shared resolver against exact base * num / den, in CI.""" + + rolled = _rolled_rows() + row = _executable(json.loads(rolled[index % len(rolled)])) + facts, expected = _synthetic_roll(row, data.draw) + (reference,) = _parsed( + [row], json.loads(_hierarchy(row["metadata"]["reference_set"])) + ) + (spec,) = compile_ledger_target_references(facts, [reference], country="be").specs + assert spec.value == pytest.approx(float(expected), rel=1e-12) + + +@pytest.mark.parametrize( + "name", + ["statbel_a1_standin_declarations__50k_75k", "statbel_b4_declarations__joint"], +) +def test_a_missing_roster_member_refuses_compilation(name): + row = _executable(next(row for row in _rows() if row["name"] == name)) + facts, _ = _synthetic_roll(row, lambda strategy: 1000) + (reference,) = _parsed([row], _document(SETS["calibration"])["hierarchy"]) + with pytest.raises(ValueError, match="base"): + compile_ledger_target_references(facts[1:], [reference], country="be") + + +def test_rows_equal_to_the_fpb_projection_declare_it(): + flagged = set() + for reference_set in SETS: + for row in _rows(reference_set): + if row.get("value_operation") != "rolled_forward_by_ratio": + continue + own = row["ledger_selector"].get("aggregate_fact_key") == row[ + "value_operands" + ][2].get("aggregate_fact_key") + declared = "ageing_target_equals" in row["metadata"] + assert declared == (own or row["name"] in BASES_EQUAL_TO_DENOMINATOR) + flagged |= {row["name"]} if declared else set() + assert len(flagged) == 7 + + +def test_band_edges_strictly_increase_and_partition_the_positive_range(): + document = _document("reference_intervals.json") + tables = validate_interval_document(document) + assert list(tables) == [generator.STANDIN_TABLE] + table = tables[generator.STANDIN_TABLE] + assert table.entity == "tax_unit" + assert table.closure == "left" and table.nil_present + assert table.cuts[0] == 0 + assert all(a < b for a, b in zip(table.cuts, table.cuts[1:], strict=False)) + bands = [band for band in document["tables"][0]["bands"] if band["kind"] != "nil"] + assert [band["id"] for band in bands] == [ + band for band, _, _ in generator.STANDIN_BANDS + ] + assert [band["upper_cent"] for band in bands] == [ + None if upper is None else upper * 100 + for _, _, upper in generator.STANDIN_BANDS + ] + inventory = _document("reference_inventory.json")["standin_bands"] + members = [code for band in inventory for code in band["a1_classes"]] + assert members == [code for _, _, code in A1_CLASSES] + assert len(inventory) == 8 + filters = { + row["filter"] + for row in _rows() + if row["metadata"].get("interval_table_id") == generator.STANDIN_TABLE + } + assert filters == {band["indicator"] for band in bands} + + +@settings(max_examples=200, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given(st.integers(min_value=-(10**9), max_value=10**9)) +@example(0) +@example(1) +@example(999_999) +@example(1_000_000) +@example(9_999_999) +@example(10_000_000) +def test_every_amount_lands_in_exactly_one_band(cents): + document = _document("reference_intervals.json") + table = interval_table(document["tables"][0]) + (position,) = classify_records(table, [cents], ["included"]) + floored = max(0, cents) + if floored == 0: + assert position == table.nil_index + return + assert position != BELOW_FIRST_CUT + band = document["tables"][0]["bands"][position] + upper = band["upper_cent"] + lower = table.cuts[table.positive_indices.index(position)] + assert lower <= floored and (upper is None or floored < upper) + + +_EDGES = [lower for lower, _, _ in A1_CLASSES] + + +@settings(max_examples=200, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given(st.sets(st.sampled_from(_EDGES[1:]), max_size=20)) +def test_any_band_list_on_class_edges_partitions_a1(cuts): + edges = [0, *sorted(cuts)] + bands = tuple( + (f"b{index}", lower, upper) + for index, (lower, upper) in enumerate( + zip(edges, [*edges[1:], None], strict=True) + ) + ) + with mock.patch.object(generator, "STANDIN_BANDS", bands): + members = generator._band_members(A1_CLASSES) + assert [code for band in members.values() for code in band] == [ + code for _, _, code in A1_CLASSES + ] + for (band, lower, upper), codes in zip(bands, members.values(), strict=True): + spans = [(start, end) for start, end, code in A1_CLASSES if code in codes] + assert spans[0][0] == lower and spans[-1][1] == upper, band + + +@pytest.mark.parametrize( + "bands", + [ + (("a", 0, 10_500), ("b", 10_500, None)), + (("a", 0, 99_999), ("b", 99_999, None)), + # The upper is off an edge, yet the next band restarts on one. + (("a", 0, 10_500), ("b", 10_000, None)), + ], +) +def test_band_edges_off_class_edges_refuse(bands): + with mock.patch.object(generator, "STANDIN_BANDS", bands): + with pytest.raises(ValueError, match="class edge|partition"): + generator._band_members(A1_CLASSES) + + +def test_ageing_factors_are_g8r2_diagnostics_whose_periods_match_declarations(): + context = _document("reference_aging.json") + feed = chronicle_feed_identity(_document("chronicle_feed.json")) + assert context["feed_identity"] == feed + selected = validate_factor_context(context) + assert set(selected) == set(generator.RSZ_FACTORS) + for factor_id, entry in selected.items(): + declaration, receipt = entry["declaration"], entry["receipt"] + assert declaration["purpose"] == "diagnostic" + assert declaration["feed_identity"] == feed + source_year, expected = generator.RSZ_FACTORS[factor_id] + assert declaration["source_period"] == source_year + assert declaration["target_period"] == 2025 + for schedule, period in ( + ("source_schedule", declaration["source_period"]), + ("target_schedule", declaration["target_period"]), + ): + (slot,) = declaration[schedule] + assert slot["selector"]["period_value"] == period + assert slot["validation"]["period_coverage"] == { + "start_date": f"{period}-01-01", + "end_date": f"{period}-12-31", + } + assert receipt["source_period"] == declaration["source_period"] + assert receipt["target_period"] == declaration["target_period"] + assert entry["operational_factor"] == { + "numerator": expected, + "denominator": 1_000_000, + } + + +@settings(max_examples=100, deadline=None, suppress_health_check=[HealthCheck.too_slow]) +@given( + index=st.integers(min_value=0, max_value=40), + shift=st.integers(min_value=-3, max_value=3).filter(bool), + where=st.sampled_from(["source_period", "target_period", "period"]), +) +def test_each_rolled_period_matches_its_declaration(index, shift, where): + rolled = _rolled_rows() + row = json.loads(rolled[index % len(rolled)]) + if where == "period": + row["period"] += shift + else: + row["metadata"][where] = str(int(row["metadata"][where]) + shift) + assert "numerator_period" in _pair_violations(row) or ( + "denominator_period" in _pair_violations(row) + ) + + +def test_every_money_factor_lives_in_the_reference_profile_context(): + assert _money_context_violations(_SPEC) == [] + assert ( + _document("reference_profiles.json")["factor_context_resource"] + == "reference_aging.json" + ) + + +_MONEY_FACTOR = {"factors": [{"declaration": {"purpose": "money_normalization_input"}}]} + + +@pytest.mark.parametrize( + ("files", "expected"), + [ + # A money node on the reference context passes, in either resource. + ( + { + "reference_aging.json": _MONEY_FACTOR, + "transport_graph.json": { + "nodes": [ + { + "kernel": "money.normalize@1", + "params": { + "factor_context": {"resource": "reference_aging.json"} + }, + } + ] + }, + }, + [], + ), + ( + { + "entitlement_graph.json": { + "steps": [ + { + "kernel": "money.normalize@1", + "params": { + "factor_context": {"resource": "reference_aging"} + }, + } + ] + } + }, + [], + ), + # A second context, with or without a node that selects it. + ({"money_factor_context.json": _MONEY_FACTOR}, ["stray_factor"]), + ( + { + "money_factor_context.json": _MONEY_FACTOR, + "transport_graph.json": { + "nodes": [ + { + "kernel": "money.normalize@1", + "params": { + "factor_context": { + "resource": "money_factor_context.json" + } + }, + } + ] + }, + }, + ["stray_factor", "money_context"], + ), + ( + { + "entitlement_graph.json": { + "steps": [ + { + "kernel": "money.normalize@1", + "params": {"factor_context": {"resource": "other.json"}}, + } + ] + } + }, + ["money_context"], + ), + ( + {"transport_graph.json": {"nodes": [{"kernel": "money.normalize@1"}]}}, + ["money_context"], + ), + ], +) +def test_money_context_mutants(tmp_path, files, expected): + (tmp_path / "reference_profiles.json").write_text( + (_SPEC / "reference_profiles.json").read_text() + ) + (tmp_path / "reference_aging.json").write_text( + (_SPEC / "reference_aging.json").read_text() + ) + for name, document in files.items(): + (tmp_path / name).write_text(json.dumps(document)) + assert sorted(kind for kind, _ in _money_context_violations(tmp_path)) == sorted( + expected + ) + + +def test_profiles_name_the_factor_context_and_keep_ageing_deferred(): + profiles = _document("reference_profiles.json") + assert profiles["factor_context_resource"] == "reference_aging.json" + assert profiles["interval_resource"] == "reference_intervals.json" + raw = _document("target_references.json") + effective, intervals, receipt = resolve_reference_profiles( + raw, + profiles, + {}, + _document("reference_intervals.json"), + factor_context=_document("reference_aging.json"), + ) + assert receipt["deferred_dimensions"] == ["aging_index"] + assert receipt["transformed_names"] == [] + assert intervals == _document("reference_intervals.json") + assert set(effective) == set(raw) & REFERENCE_DOCUMENT_KEYS + assert effective["target_references"] == raw["target_references"] + assert ( + validate_reference_resolution( + effective, + receipt, + references_sha256=reference_document_sha256(effective), + interval_document=intervals, + ) + == receipt + ) + references = parse_reference_document(effective, country="be") + a1 = [ + reference + for reference in references + if reference.metadata.get("interval_table_id") == generator.STANDIN_TABLE + ] + assert len(a1) == 16 + for reference in a1: + assert json.loads(reference.metadata["reference_prerequisites"]) == [ + "reference_profile:aging_index", + f"measurement:{generator.STANDIN_MEASUREMENT}", + ] + + +def test_only_demography_commune_support_and_wage_classes_are_active(): + active = { + reference_set: { + row["metadata"]["contract_target_id"] + for row in _rows(reference_set) + if row["metadata"]["activation_status"] == "active" + } + for reference_set in SETS + } + assert active == { + "calibration": {"statbel_population_by_region_sex_age"}, + "precal": {"statbel_population_by_commune", generator.WAGE_CONTRACT}, + "holdout": set(), + } + + +def test_every_parked_row_refuses_direct_compilation(): + for name in SETS.values(): + document = _document(name) + for reference in _parsed(document["target_references"], document["hierarchy"]): + if reference.metadata["activation_status"] != "active": + with pytest.raises( + ValueError, + match="non-executable placeholder|requires reference profile", + ): + compile_ledger_target_references([], [reference], country="be") + + +def test_belgium_still_refuses_to_activate(): + spec = load_transport_spec(_SPEC) + with pytest.raises(ValueError, match="not activated") as error: + validate_transport_activation(spec) + for missing in ("benefit_unit_rule.json", "axiom_rules_bindings.json"): + assert missing in str(error.value) + # The pension surface rows are parked, so each is a named gap. + for row in _rows("precal"): + parked = row["metadata"]["activation_status"] != "active" + assert (f"precal_references.{row['name']}" in str(error.value)) == parked + assert not (_SPEC / "transport_graph.json").exists() + assert not (_SPEC / "receipt_contract.json").exists() + assert not (_SPEC / "currency_bridge.json").exists() + # Only the surface rows' metadata and the inventory name the band resource. + readers = { + path.name + for path in _SPEC.glob("*.json") + if path.name != SURFACES and SURFACES in path.read_text() + } + assert readers == { + "country_package.json", + "precal_references.json", + "reference_inventory.json", + } + + +def test_b1_stays_inactive_with_named_failed_checks(): + checks = _document("reference_inventory.json")["b1_checks"] + assert { + key: checks[key]["result"] + for key in ("tax_definition", "income_ranking", "policy_year") + } == {"tax_definition": "fail", "income_ranking": "fail", "policy_year": "fail"} + for key in ("tax_definition", "income_ranking", "policy_year"): + assert checks[key]["missing"] + # Every "passed" statement is backed by an assertion the generator makes. + assert checks["asserted_evidence"] and all(checks["asserted_evidence"].values()) + assert checks["tax_definition"]["evidence"]["b1_deciles_sum_minus_total_eur"] == ( + pytest.approx(0, abs=0.1) + ) + assert checks["tax_definition"]["evidence"][ + "top_percentiles_sum_minus_decile_10_eur" + ] == pytest.approx(0, abs=0.1) + b1 = [row for row in _rows() if row["family"] == "income_tax"] + assert len(b1) == 19 + assert {row["metadata"]["activation_status"] for row in b1} == { + "inactive_pending_b1_checks" + } + assert all(row.get("value_operation", "identity") == "identity" for row in b1) + assert all(row["period"] == 2023 and row["signed"] is True for row in b1) + evidence = checks["tax_definition"]["evidence"] + assert abs(evidence["difference_eur"]) < 0.1 + assert evidence["negative_deciles"] == ["decile_01", "decile_02"] + + +def test_standin_gaps_publish_the_card_shares(): + gaps = _document("reference_inventory.json")["standin_gaps"] + shares = gaps["national"]["component_shares_of_taxable_income"] + assert {key: round(value * 100, 2) for key, value in shares.items()} == { + "professional_income": 98.05, + "immovable_property_income": 1.49, + "capital_and_movable_property_income": 0.55, + "miscellaneous_income": 0.12, + "deductible_expenditures": 0.21, + } + assert round(gaps["national"]["omitted_share_gross"] * 100, 2) == 2.37 + assert gaps["declarations_with_taxable_but_no_professional_income"] == 42007 + assert gaps["zero_income_declarations_outside_a1"] == 523770 + assert [band["band"] for band in gaps["bands"]] == [ + band for band, _, _ in generator.STANDIN_BANDS + ] + for band in [gaps["national"], *gaps["bands"]]: + assert abs(band["identity_residual_eur"]) < 0.05 + assert math.isclose( + sum(band["declarations_iy2023"] for band in gaps["bands"]), + gaps["national"]["declarations_iy2023"], + ) + + +def test_a1_band_counts_and_b4_types_share_one_ageing_pair(): + counts = { + row["metadata"]["ageing_pair"] + for row in _rows() + if row["metadata"]["contract_target_id"] + in { + "statbel_a1_standin_declarations_by_band", + "statbel_b4_declarations_by_type", + } + } + assert counts == {"fpb_t07_total_population"} + identity = _document("reference_inventory.json")["b4_identity"] + assert identity["closes_exactly"] is True + assert identity["joint"] + identity["individual"] == identity["a1_declarations"] + + +def test_jrc_is_deferred_and_august_gaps_are_named(): + for reference_set in SETS: + for row in _rows(reference_set): + for selector in _selectors(row): + assert "jrc" not in selector["source_name"] + exclusions = { + row["id"] for row in _document("reference_inventory.json")["exclusions"] + } + assert {"jrc_euromod_be_statistics", "ris_amount_and_recipients"} <= exclusions + onem = next( + row for row in _rows() if row["name"] == "onem_complete_unemployment_recipients" + ) + assert onem["metadata"]["activation_status"].startswith("requires_ageing_ruling") + + +def test_unemployment_choice_names_the_larger_line(): + choice = _document("reference_inventory.json")["unemployment_series_choice"] + lines = {key: row["eur"] for key, row in choice["lines_2025"].items()} + assert choice["lines_2025"]["chosen"]["label"] == "a. Chômage" + assert choice["lines_2025"]["alternative"]["label"] == "4. Chômage" + assert lines["alternative"] == pytest.approx( + lines["chosen"] + lines["company_supplement"] + lines["career_breaks"], + abs=2e6, + ) + + +def test_inventory_feed_identity_is_the_pin(): + assert _document("reference_inventory.json")["feed_identity"] == _document( + "chronicle_feed.json" + ) + + +@pytest.fixture(scope="module") +def artifact(): + path = os.environ.get("BE_CHRONICLE_ARTIFACT") + if not path: + pytest.skip("BE_CHRONICLE_ARTIFACT is unset; Belgian feed audit unavailable") + return load_ledger_consumer_artifact( + Path(path), feed_pin=_document("chronicle_feed.json"), lexical_floats=True + ) + + +@pytest.fixture(scope="module") +def by_record_set(artifact): + index = {} + for fact in artifact.facts: + index.setdefault(fact.get("layout", {}).get("record_set_id"), []).append(fact) + return index + + +def _matched(selector, by_record_set): + pool = [ + fact + for record_set in _listed(selector.get("record_set_id")) + for fact in by_record_set.get(record_set, []) + ] + return [fact for fact in pool if fact_matches_selector(fact, selector)] + + +def _executable(row): + row = copy.deepcopy(row) + row["metadata"]["activation_status"] = "active" + for key in ("required_reference_profile", "reference_prerequisites"): + row["metadata"].pop(key, None) + return row + + +def test_generation_reproduces_committed_resources_with_exact_feed_identity(artifact): + generated = generator.build_reference_documents(artifact) + assert set(generated) == set(GENERATED) + for filename, document in generated.items(): + assert generator._encode(document) == (_SPEC / filename).read_text(), filename + assert artifact.fact_row_count == _document("chronicle_feed.json")["fact_row_count"] + + +def test_check_mode_passes_and_refuses_a_stale_copy(artifact, tmp_path, monkeypatch): + monkeypatch.setattr( + generator, "load_ledger_consumer_artifact", lambda *args, **kwargs: artifact + ) + monkeypatch.setattr( + "sys.argv", ["generate", "--artifact", "unused", "--check", "--out", str(_SPEC)] + ) + generator.main() + for name in ("chronicle_feed.json", *GENERATED): + (tmp_path / name).write_text((_SPEC / name).read_text()) + stale = _document("holdout_references.json") + stale["description"] += " (edited)" + (tmp_path / "holdout_references.json").write_text(generator._encode(stale)) + monkeypatch.setattr( + "sys.argv", + ["generate", "--artifact", "unused", "--check", "--out", str(tmp_path)], + ) + with pytest.raises(SystemExit, match="Stale generated resource"): + generator.main() + + +def test_every_selector_resolves_to_one_fact_or_its_declared_set( + artifact, by_record_set +): + for name in SETS.values(): + document = _document(name) + for row in document["target_references"]: + base = _matched(row["ledger_selector"], by_record_set) + pins = row["ledger_selector"].get("dimension_values", {}) + rosters = [value for value in pins.values() if isinstance(value, list)] + expected = math.prod(len(roster) for roster in rosters) + assert len(base) == expected, row["name"] + assert len({fact["aggregate_fact_key"] for fact in base}) == expected + assert _declared_members(row) in {None, expected}, row["name"] + for operand in row.get("value_operands", [])[1:]: + selector = {k: v for k, v in operand.items() if k != "role"} + assert len(_matched(selector, by_record_set)) == 1, row["name"] + assert all(generator._belgian(fact) for fact in base) + (reference,) = _parsed([_executable(row)], document["hierarchy"]) + needed = {} + for selector in reference_fact_selectors(reference): + for fact in _matched(selector, by_record_set): + needed[fact["aggregate_fact_key"]] = fact + (spec,) = compile_ledger_target_references( + needed.values(), [reference], country="be" + ).specs + if row.get("value_operation") == "rolled_forward_by_ratio": + assert spec.metadata["ledger_value_base_cells"] == str(expected) + numerator = _matched( + {k: v for k, v in row["value_operands"][1].items() if k != "role"}, + by_record_set, + )[0] + denominator = _matched( + {k: v for k, v in row["value_operands"][2].items() if k != "role"}, + by_record_set, + )[0] + total = math.fsum(float(fact["value"]) for fact in base) + assert spec.value == pytest.approx( + total * float(numerator["value"]) / float(denominator["value"]), + rel=1e-12, + ) + elif row.get("value_operation") == "sum": + assert spec.metadata["ledger_member_fact_count"] == str(expected) + assert spec.value == math.fsum(float(fact["value"]) for fact in base) + else: + assert spec.value == float(base[0]["value"]) + + +def test_german_and_french_rows_are_refused_and_never_selected(artifact, by_record_set): + foreign = [ + fact + for fact in artifact.facts + if fact["geography"]["level"] == "country" + and fact["geography"]["id"] in {"DE", "FR"} + ] + assert len(foreign) == 72 + for fact in foreign: + with pytest.raises(ValueError, match="Belgian selectors read Belgian facts"): + generator._selector(fact) + keys = {fact["aggregate_fact_key"] for fact in foreign} + for reference_set in SETS: + for row in _rows(reference_set): + for selector in _selectors(row): + assert ( + not { + fact["aggregate_fact_key"] + for fact in _matched(selector, by_record_set) + } + & keys + ) + + +def test_resolved_sets_share_no_fact_and_holdouts_read_none(artifact, by_record_set): + reads = {} + for reference_set in SETS: + for row in _rows(reference_set): + keys = { + fact["aggregate_fact_key"] + for selector in _selectors(row) + for fact in _matched(selector, by_record_set) + } + for key in keys: + reads.setdefault(key, set()).add(reference_set) + assert not [ + key for key, sets in reads.items() if "holdout" in sets and len(sets) > 1 + ] + bases = {} + for reference_set in SETS: + for row in _rows(reference_set): + for fact in _matched(row["ledger_selector"], by_record_set): + bases.setdefault(fact["aggregate_fact_key"], set()).add(reference_set) + assert all(len(sets) == 1 for sets in bases.values()) + + +def test_resolved_reads_list_what_each_selector_resolves_to(artifact, by_record_set): + listed = {entry["name"]: entry for entry in _reads()} + for reference_set in SETS: + for row in _rows(reference_set): + entry = listed[row["name"]] + selectors = list(_selectors(row)) + base = _matched(selectors[0], by_record_set) + operands = [ + fact + for selector in selectors[1:] + for fact in _matched(selector, by_record_set) + ] + assert _keys(entry["base_facts"]) == sorted( + {fact["aggregate_fact_key"] for fact in base} + ) + assert _keys(entry["operand_facts"]) == sorted( + {fact["aggregate_fact_key"] for fact in operands} + ) + assert _keys(entry["semantic_facts"]) == sorted( + {fact["semantic_fact_key"] for fact in [*base, *operands]} + ) + + +def test_a_holdout_on_b1s_income_total_collides_with_a1s_bands(artifact): + """B.1 and A.1 print one semantic total, which the bands add up to.""" + + inventory = generator.Inventory(artifact.facts) + total = inventory.one( + spec=generator.B1_VALUES, + measure="taxable_income_eur", + geography="BE", + dimensions={"tax_return.rank_group": "all"}, + ) + documents = copy.deepcopy(_documents()) + row = documents["holdout"]["target_references"][0] + row["ledger_selector"] = generator._selector(total) + del row["value_operands"] + named = {name: documents[key] for key, name in SETS.items()} + context = _document("reference_aging.json") + reads = generator.resolved_reads( + inventory, {**named, "reference_aging.json": context} + ) + assert ("holdout_semantic", total["semantic_fact_key"]) in _read_violations( + documents, context, reads + ) + + +def test_projection_flags_match_the_feed(artifact, by_record_set): + for reference_set in SETS: + for row in _rows(reference_set): + if row.get("value_operation") != "rolled_forward_by_ratio": + continue + selectors = list(_selectors(row)) + base = _matched(selectors[0], by_record_set) + (denominator,) = _matched(selectors[2], by_record_set) + equal = len(base) == 1 and generator._value(base[0]) == generator._value( + denominator + ) + assert ("ageing_target_equals" in row["metadata"]) == equal, row["name"] + + +def test_a_changed_b1_fact_refuses_generation(artifact): + facts = list(artifact.facts) + index = next( + position + for position, fact in enumerate(facts) + if fact["layout"].get("record_set_spec_id") + == "spf_finances.pit.tax_before_withholding.country.v1" + ) + facts[index] = {**facts[index], "value": 1.0} + with pytest.raises(ValueError, match="Reviewed B.1 evidence changed"): + generator._b1_checks(generator.Inventory(facts)) + + +def test_shared_series_check_accepts_a_mismatched_fpb_row_that_ours_refuses( + artifact, by_record_set +): + """Documents a shared limitation: every T07 row shares one series key.""" + + row = copy.deepcopy( + next(row for row in _rows() if row["name"] == "statbel_b4_declarations__joint") + ) + working_age = next( + fact + for fact in by_record_set[ + f"{generator.FPB}cy2023.labour_market.levels.working_age_population" + ] + ) + row["value_operands"][2] = { + "role": "denominator", + **generator._selector(working_age), + "assertion": "observation", + } + assert "row" in _pair_violations(row) + (reference,) = _parsed( + [_executable(row)], _document("target_references.json")["hierarchy"] + ) + needed = { + fact["aggregate_fact_key"]: fact + for selector in reference_fact_selectors(reference) + for fact in _matched(selector, by_record_set) + } + compile_ledger_target_references(needed.values(), [reference], country="be") + + +def test_factor_receipts_replay_against_the_feed(artifact): + context = _document("reference_aging.json") + for entry in context["factors"]: + replay_reference_factor( + entry["declaration"], + artifact.facts, + context["feed_identity"], + entry["operational_factor"], + entry["receipt"], + ) + + +@pytest.mark.parametrize( + ("field", "altered"), + [ + ("facts_sha256", "0" * 64), + ("manifest_sha256", "0" * 64), + ("fact_row_count", 87111), + ("consumer_fact_schema_versions", ["wrong"]), + ("consumer_fact_schema_sha256", "0" * 64), + ("artifact_schema_version", "wrong"), + ], +) +def test_changed_feed_identity_refuses_authoring(artifact, field, altered, tmp_path): + pin = _document("chronicle_feed.json") + pin[field] = altered + (tmp_path / "chronicle_feed.json").write_text(json.dumps(pin)) + with pytest.raises(ChronicleFeedPinMismatchError): + generator.build_reference_documents(artifact, package_dir=tmp_path) + + +@pytest.mark.parametrize( + ("table", "key", "period"), + [ + ("AGEING_PAIRS", "fpb_t11_total_resources", 2026), + ("AGEING_PAIRS", "fpb_t07_total_population", 2023), + ("RSZ_OPERANDS", None, 2025), + ], +) +def test_a_changed_reviewed_operand_refuses_generation(artifact, table, key, period): + if table == "AGEING_PAIRS": + pairs = copy.deepcopy(generator.AGEING_PAIRS) + pairs[key]["operands"][period] = str( + Fraction(pairs[key]["operands"][period]) + 1 + ) + patch = mock.patch.object(generator, "AGEING_PAIRS", pairs) + message = "Reviewed FPB operand" + else: + operands = {**generator.RSZ_OPERANDS, period: "1"} + patch = mock.patch.object(generator, "RSZ_OPERANDS", operands) + message = "Reviewed RSZ operand" + with patch, pytest.raises(ValueError, match=message): + generator.build_reference_documents(artifact) + + +WAGE_WORKERS = [100_457, 1_218_251, 1_182_699, 1_066_243, 369_203] +PENSION_TOTAL_KEY = "ledger.aggregate_fact.v2:f9dc8ab69a3b6cbcc0db3f68" +# A test fixture for the open top band, never a Belgian method value: the +# tail shape is d1902 choice 24 (wages), and no choice yet names the pension tail. +PARETO_FIXTURE = {"method": "pareto", "alpha": 2.0} + + +def _quarter_cells(by_record_set, spec): + return [ + fact + for facts in by_record_set.values() + for fact in facts + if fact["layout"].get("record_set_spec_id") == spec + and fact["period"]["value"] == generator.WAGE_PERIOD + and fact["observed_measure"]["source_measure_id"] == generator.WAGE_MEASURE + ] + + +def _by_class(facts): + totals = {} + for fact in facts: + label = fact["dimensions"][generator.WAGE_CLASS] + totals[label] = totals.get(label, 0) + fact["value"] + return totals + + +def test_wage_classes_resolve_to_24_disjoint_members(by_record_set): + rows = _surface_rows(_documents())["wages"] + seen, workers = set(), [] + for row in rows: + facts = _matched(row["ledger_selector"], by_record_set) + keys = {fact["aggregate_fact_key"] for fact in facts} + assert len(facts) == len(keys) == 24, row["name"] + assert keys == set(_keys(_entry(_reads(), row["name"])["base_facts"])) + assert not keys & seen + seen |= keys + assert ( + len( + { + (f["dimensions"]["rsz.age_class"], f["dimensions"]["rsz.sex"]) + for f in facts + } + ) + == 24 + ) + assert { + ( + fact["layout"]["record_set_spec_id"], + fact["observed_measure"]["source_measure_id"], + fact["entity"]["name"], + fact["observed_measure"]["unit"], + fact["period"]["value"], + ) + for fact in facts + } == {(generator.WAGE_SPEC, "employed_workers", "person", "count", "2026-Q1")} + workers.append(sum(fact["value"] for fact in facts)) + assert workers == WAGE_WORKERS + assert sum(workers) == 3_936_853 + table = _quarter_cells(by_record_set, generator.WAGE_SPEC) + unknown = [ + fact + for fact in table + if fact["dimensions"][generator.WAGE_CLASS] == generator.WAGE_UNKNOWN_CLASS + ] + assert len(unknown) == 24 and not {f["aggregate_fact_key"] for f in unknown} & seen + assert sum(fact["value"] for fact in unknown) == 191_700 + assert sum(fact["value"] for fact in table) == 4_128_553 == sum(workers) + 191_700 + evidence = _document("reference_inventory.json")["quantile_surfaces"]["wages"] + assert [row["workers"] for row in evidence["classes"]] == WAGE_WORKERS + assert _keys(evidence["unknown_pay"]["facts"]) == sorted( + fact["aggregate_fact_key"] for fact in unknown + ) + assert (evidence["known_pay_workers"], evidence["table_workers"]) == ( + 3_936_853, + 4_128_553, + ) + # Diagnostic: T7 crosses activity and status, and agrees class by class. + t7 = _by_class(_quarter_cells(by_record_set, generator.WAGE_CROSS_CHECK_SPEC)) + assert t7 == _by_class(table) + assert evidence["t7_cross_check"]["workers_by_class"] == { + label: float(value) for label, value in sorted(t7.items()) + } + assert evidence["t7_cross_check"]["equals_t17_by_class"] is True + + +def test_each_wage_member_cell_is_one_of_its_row_cells(by_record_set): + """The cell a holdout pinning a member builds is the row's; the rest hold no fact.""" + + for row in _surface_rows(_documents())["wages"]: + record_sets = row["ledger_selector"]["record_set_id"] + # A cell names its record set, so only that record set's facts can fill it. + filled = { + cell + for record_set in record_sets + for fact in by_record_set[record_set] + for cell in _row_cells({"ledger_selector": generator._selector(fact)}) + } + own = { + cell + for fact in _matched(row["ledger_selector"], by_record_set) + for cell in _row_cells({"ledger_selector": generator._selector(fact)}) + } + assert len(own) == 24 and own <= _row_cells(row) + assert not (_row_cells(row) - own) & filled + + +def test_pension_bands_sum_to_their_published_total(by_record_set): + rows = _surface_rows(_documents())["legal_pensions"] + resolved = [_matched(row["ledger_selector"], by_record_set) for row in rows] + assert all(len(facts) == 1 for facts in resolved) + bands = [facts[0] for facts in resolved] + group = by_record_set[generator.PENSION_RECORD_SET] + (total,) = [ + fact for fact in group if fact["aggregate_fact_key"] == PENSION_TOTAL_KEY + ] + assert total["dimensions"][generator.PENSION_BAND] == generator.PENSION_TOTAL_LABEL + assert sum(fact["value"] for fact in bands) == total["value"] == 2_449_233 + # Every recipient band of group 1 is read once; the total never is. + assert {fact["aggregate_fact_key"] for fact in bands} == { + fact["aggregate_fact_key"] for fact in group if fact is not total + } + expenditure = by_record_set[ + "sfpd.amount_bands.jan2025.group1.monthly_expenditure_eur" + ] + assert expenditure and not {fact["aggregate_fact_key"] for fact in expenditure} & { + fact["aggregate_fact_key"] for fact in bands + } + # The band document's edges are Chronicle's bounds, tiled half-open. + tiled = generator._pension_bands(bands) + surface = _document(SURFACES)["legal_pensions"]["band_document"]["bands"] + assert [ + ( + generator._number(lower), + None if upper is None else generator._number(upper), + ) + for lower, upper, *_ in tiled + ] == [(band["lower"], band["upper"]) for band in surface] + evidence = _document("reference_inventory.json")["quantile_surfaces"] + assert evidence["legal_pensions"]["total_fact"]["aggregate_fact_key"] == ( + PENSION_TOTAL_KEY + ) + assert [row["recipients"] for row in evidence["legal_pensions"]["bands"]] == [ + float(fact["value"]) for fact in bands + ] + entries = {entry["name"]: entry for entry in _reads()} + assert { + entries[row["name"]]["partition_total"]["semantic_fact_key"] for row in rows + } == {total["semantic_fact_key"]} + + +def _compiled_surface(artifact, by_record_set, rows): + """The decoded target surface a quantile-map node would receive for rows.""" + + precal = _document(SETS["precal"]) + document = {key: precal[key] for key in REFERENCE_DOCUMENT_KEYS if key in precal} + document["target_references"] = rows + references = parse_reference_document(document, country="be") + needed = { + fact["aggregate_fact_key"]: fact + for reference in references + for selector in reference_fact_selectors(reference) + for fact in _matched(selector, by_record_set) + } + registry = compile_ledger_target_references( + needed.values(), references, country="be" + ) + payload = encode_target_surface( + registry, + references, + references_sha256=reference_document_sha256(document), + facts={ + "facts_sha256": artifact.facts_sha256, + "manifest_sha256": artifact.manifest_sha256, + "n_facts": len(artifact.facts), + }, + ) + return decode_target_surface(payload) + + +@pytest.mark.parametrize( + ("surface", "counts"), + [("wages", WAGE_WORKERS), ("legal_pensions", None)], +) +def test_surfaces_compile_into_shares_the_quantile_map_takes( + artifact, by_record_set, surface, counts +): + rows = _surface_rows(_documents())[surface] + if surface == "legal_pensions": + rows = [_executable(row) for row in rows] # parked until rank_only lands + compiled = _compiled_surface(artifact, by_record_set, rows) + entry = _document(SURFACES)[surface] + bands = _surface_bands(entry["band_document"], compiled, unit="person") + values = [spec.value for spec in compiled.registry.specs] + if counts is not None: + assert values == counts + shares = [band["share"] for band in bands] + assert all(share > 0 for share in shares) + assert math.isclose(math.fsum(shares), 1, rel_tol=0, abs_tol=1e-12) + assert shares == [value / math.fsum(values) for value in values] + assert [(band["lower"], band["upper"]) for band in bands] == [ + (band["lower"], band["upper"]) for band in entry["band_document"]["bands"] + ] + donors = np.geomspace(1, 10**6, 400) + mapped = quantile_map( + donors, np.ones_like(donors), bands, interpolation=PARETO_FIXTURE + ) + assert np.all(np.diff(mapped) > 0) and mapped[0] >= bands[0]["lower"] + # Documented limit: uniform interpolation refuses the open top band. + with pytest.raises(ValueError, match="Uniform interpolation requires finite"): + quantile_map(donors, np.ones_like(donors), bands, interpolation="uniform") + + +def test_jobs_counts_pass_the_kernel_check_but_not_the_surface_check( + artifact, by_record_set +): + """_surface_bands can't tell T17's jobs from its employed workers; this test can.""" + + documents = copy.deepcopy(_documents()) + rows = _surface_rows(documents)["wages"] + for row in rows: + selector = row["ledger_selector"] + selector["source_measure_id"], selector["source_concept"] = "jobs", "rsz.jobs" + selector["record_set_id"] = [ + name.replace(".employed_workers", ".jobs") + for name in selector["record_set_id"] + ] + assert len(_matched(selector, by_record_set)) == 24 + compiled = _compiled_surface(artifact, by_record_set, rows) + bands = _surface_bands( + _document(SURFACES)["wages"]["band_document"], compiled, unit="person" + ) + assert [spec.value for spec in compiled.registry.specs] != WAGE_WORKERS + assert len(bands) == 5 + assert { + kind for kind, _ in _surface_violations(documents, _document(SURFACES)) + } == {"wage_cells"} + + +@pytest.mark.parametrize( + ("change", "message"), + [ + ("relabel_a_wage_cell", "daily-wage classes changed"), + ("drop_a_wage_cell", "not one cell per age and sex"), + ("move_a_wage_cell_to_the_other_sex_set", "not one cell per age and sex"), + ("drop_a_pension_band", "leaves a gap or overlap"), + ("change_a_pension_band_count", "sum to their published total"), + ("change_a_pension_band_bound", "disagrees with its constraints"), + ], +) +def test_a_changed_surface_fact_refuses_generation(artifact, change, message): + facts = list(artifact.facts) + + def first(record_set, label=None): + return next( + index + for index, fact in enumerate(facts) + if fact["layout"].get("record_set_id") == record_set + and (label is None or label in fact["dimensions"].values()) + ) + + wage = first(WAGE_MEMBER["record_set_id"], "-20") + band = first(generator.PENSION_RECORD_SET, "125,00 - 249,99") + if change == "relabel_a_wage_cell": + facts[wage] = copy.deepcopy(facts[wage]) + facts[wage]["dimensions"][generator.WAGE_CLASS] = "< 100" + elif change == "drop_a_wage_cell": + del facts[wage] + elif change == "move_a_wage_cell_to_the_other_sex_set": + facts[wage] = copy.deepcopy(facts[wage]) + facts[wage]["layout"]["record_set_id"] = ( + "rsz.t17.2026Q1.1188cc8134270812.employed_workers" + ) + elif change == "drop_a_pension_band": + del facts[band] + elif change == "change_a_pension_band_count": + facts[band] = {**facts[band], "value": facts[band]["value"] + 1} + else: + facts[band] = copy.deepcopy(facts[band]) + for row in facts[band]["universe_constraints"]["constraints"]: + if row["variable"] == generator.PENSION_AMOUNT and row["operator"] == "<=": + row["value"] = 249.98 + inventory = generator.Inventory(facts) + with pytest.raises(ValueError, match=message): + generator.wage_surface_references(inventory) + generator.pension_surface_references(inventory) diff --git a/packages/microcosm-build/tests/engine_free/shared/test_calibration_columns.py b/packages/microcosm-build/tests/engine_free/shared/test_calibration_columns.py index 3ad729cfbd..89dce7f540 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_calibration_columns.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_calibration_columns.py @@ -35,7 +35,7 @@ from test_support.paths import paths_for -def _bindings(): +def _packaged_bindings(): return json.loads( ( paths_for("microcosm-build").package @@ -44,6 +44,20 @@ def _bindings(): ) +def _bindings(): + """NZ's packaged bindings without their interval outputs. + + The stand-in income band indicators need the effective interval document + (the ``intervals`` argument), which these tests don't pass. The interval + tests below cover interval outputs on their own fixture. + """ + bindings = _packaged_bindings() + bindings["columns"] = [ + entry for entry in bindings["columns"] if "interval" not in entry + ] + return bindings + + def _tables(): return { "person": pd.DataFrame( @@ -84,6 +98,13 @@ def _replace_people(tables, ages): ) +def test_packaged_interval_outputs_need_the_effective_interval_document(): + bindings = _packaged_bindings() + assert any("interval" in entry for entry in bindings["columns"]) + with pytest.raises(ValueError, match="need the effective interval document"): + prepare_calibration_columns(_tables(), bindings) + + def test_prepared_columns_partition_age_and_canonical_tenure_on_a_real_frame(): tables = _tables() prepared = prepare_calibration_columns(tables, _bindings()) diff --git a/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py b/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py index 079c9da968..710c1b5918 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_country_spec.py @@ -17,6 +17,7 @@ from pathlib import Path import pytest +import yaml from microcosm.build import ( CountryResourceRow, @@ -77,6 +78,18 @@ def _nested_mapping_keys(value: object) -> set[str]: return set() +# B1's schema-2 target document, kept so the schema-2 target-profile contract +# (typed vintage aliases, exact periods) stays exercised on Belgian geography +# after B3 moved the packaged references to a schema-1 profile. +BE_SCHEMA2_TARGETS = _TEST_PATHS.tests / "fixtures/be_schema2_target_references.json" + + +def _be_package_with_schema2_profile(package_dir: Path) -> Path: + shutil.copytree(COUNTRY_PACKAGE_ROOT / "be", package_dir) + shutil.copyfile(BE_SCHEMA2_TARGETS, package_dir / "target_references.json") + return package_dir + + def _armenia_scalar_ledger_fact( reference, ordinal: int, @@ -510,7 +523,15 @@ def test_loads_with_every_declared_resource(self, spec) -> None: "spec/vintages.yaml", "source_stages.json", "geography_spine.json", + "chronicle_feed.json", "target_references.json", + "precal_references.json", + "holdout_references.json", + "quantile_surfaces.json", + "reference_aging.json", + "reference_intervals.json", + "reference_inventory.json", + "reference_profiles.json", "gates.json", "release_contract.json", } @@ -545,7 +566,7 @@ def test_source_stage_pins_the_us_donor_support_contract(self, spec) -> None: assert [(row["kind"], row["role"]) for row in stage.artifacts[1:]] == [ ( "public_aggregate_reference", - "destination_chronicle_consumer_artifact_unpinned", + "destination_chronicle_consumer_artifact", ), ("public_parameter_reference", "rulespec_be_tree_unpinned"), ] @@ -607,160 +628,201 @@ def test_observed_region_geography_compatibility_still_requires_preservation( load_country_spec(package_dir) def test_targets_arrive_by_reference_with_no_values(self, spec) -> None: - names = {reference.name for reference in spec.target_references} - assert { - "statbel_population_by_age_sex_region", - "statbel_fiscal_income_by_commune", - "spf_finances_pit_total", - "onss_employee_contribution_total", - "onem_unemployment_caseload", - "nbb_household_disposable_income", - } <= names - by_name = {reference.name: reference for reference in spec.target_references} - commune = by_name["statbel_fiscal_income_by_commune"] - assert commune.metadata["nis_vintage"] == "2025" - assert commune.metadata["geography_vintage"] == "nis_2025" - assert commune.ledger_selector["geography_vintage"] == "nis_2025" - assert commune.metadata["criticality"] == "diagnostic" assert { - by_name[name].metadata["activation_status"] - for name in { - "statbel_population_by_age_sex_region", - "statbel_fiscal_income_by_commune", - } - } == {"requires_harvested_cell_references"} - - payload = json.loads( - (COUNTRY_PACKAGE_ROOT / "be/target_references.json").read_text( - encoding="utf-8" + reference.metadata["contract_target_id"] + for reference in spec.target_references + } == { + "statbel_population_by_region_sex_age", + "statbel_a1_standin_declarations_by_band", + "statbel_a1_standin_taxable_income_by_band", + "statbel_b4_declarations_by_type", + "statbel_b1_enrolled_tax_by_rank_group", + "onss_worker_personal_contributions", + "onem_complete_unemployment_recipients", + "fpb_unemployment_benefit_expenditure", + "fpb_grapa_expenditure", + "fpb_net_mixed_income", + } + for name in ( + "target_references.json", + "precal_references.json", + "holdout_references.json", + "reference_intervals.json", + "reference_profiles.json", + ): + payload = json.loads( + (COUNTRY_PACKAGE_ROOT / "be" / name).read_text(encoding="utf-8") ) - ) - assert FORBIDDEN_TARGET_VALUE_KEYS.isdisjoint( - _nested_mapping_keys(payload["target_references"]) - ) + assert FORBIDDEN_TARGET_VALUE_KEYS.isdisjoint( + _nested_mapping_keys(payload) + ), name def test_target_selectors_declare_the_intended_chronicle_vocabulary( self, spec ) -> None: - references = {reference.name: reference for reference in spec.target_references} + statbel = "statbel_fiscal_income_distribution" + rolled = "rolled_forward_by_ratio" expected = { - "statbel_population_by_age_sex_region": ( + "statbel_population_by_region_sex_age": ( "statbel_population_structure", "people", "calendar_year", - 2023, + 2026, "nuts1", - "nuts1_2025", + "identity", ), - "statbel_fiscal_income_by_commune": ( - "statbel_fiscal_income", - "taxable_income", + "statbel_a1_standin_declarations_by_band": ( + statbel, + "declarations", "tax_year", - 2022, - "commune", - "nis_2025", + 2023, + "country", + rolled, ), - "spf_finances_pit_total": ( - "spf_finances_pit", - "tax_before_withholding", + "statbel_a1_standin_taxable_income_by_band": ( + statbel, + "taxable_income_eur", "tax_year", - 2022, + 2023, + "country", + rolled, + ), + "statbel_b4_declarations_by_type": ( + statbel, + "declarations", + "tax_year", + 2023, + "country", + rolled, + ), + "statbel_b1_enrolled_tax_by_rank_group": ( + statbel, + "total_tax_eur", + "tax_year", + 2023, "country", - None, + "identity", ), - "onss_employee_contribution_total": ( + "onss_worker_personal_contributions": ( "onss_contributions", "worker_article_17_uncapped_component_contribution", "calendar_year", - 2022, + 2024, "country", - None, + rolled, ), - "onem_unemployment_caseload": ( + "onem_complete_unemployment_recipients": ( "onem_rva_unemployment", "receives_unemployment_benefit", "calendar_year", - 2022, + 2024, "country", - None, - ), - "nbb_household_disposable_income": ( - "nbb_national_accounts", - "household_disposable_income", - "calendar_year", - 2022, - "country", - None, + "identity", ), + **{ + contract: ( + "fpb_economic_outlook", + "amount_meur", + "calendar_year", + 2025, + "country", + rolled, + ) + for contract in ( + "fpb_unemployment_benefit_expenditure", + "fpb_grapa_expenditure", + "fpb_net_mixed_income", + ) + }, } - - for name, ( - source_name, - source_measure_id, - period_type, - period, - geography_level, - geography_vintage, - ) in expected.items(): - reference = references[name] - assert reference.ledger_selector["source_name"] == source_name - assert reference.ledger_selector["source_measure_id"] == source_measure_id - assert reference.ledger_selector["period_type"] == period_type - assert reference.period == period - assert reference.period_match_policy == "exact" - assert reference.assertion_policy == "allow_source_projection" - assert reference.ledger_selector["geography_level"] == geography_level - assert ( - reference.ledger_selector.get("geography_vintage") == geography_vintage + for reference in spec.target_references: + ( + source_name, + source_measure_id, + period_type, + source_period, + geography_level, + operation, + ) = expected[reference.metadata["contract_target_id"]] + selector = reference.ledger_selector + assert selector["source_name"] == source_name + assert selector["source_measure_id"] == source_measure_id + assert selector["period_type"] == period_type + assert selector["period_value"] == source_period + assert selector["geography_level"] == geography_level + assert reference.value_operation == operation + if operation == rolled: + assert reference.period == 2026 + assert reference.period_match_policy == "latest_not_after" + assert reference.assertion_policy == "allow_source_projection" + else: + # Identity rows never relabel a period: the 2026 cells are + # 2026 observations, and parked rows keep source periods. + assert reference.period == source_period + assert reference.period_match_policy == "exact" + assert reference.assertion_policy == "observed_only" + + def test_target_profile_is_schema_one_with_schema_two_hierarchies( + self, spec + ) -> None: + # A schema-2 target profile requires exact period matching, which + # refuses rolled_forward_by_ratio; NZ uses the same schema-1 profile. + assert dict(spec.target_profile) == { + "schema_version": 1, + "hierarchy_reconciliations": (), + } + payload = json.loads( + (COUNTRY_PACKAGE_ROOT / "be/target_references.json").read_text( + encoding="utf-8" ) - - def test_target_profile_declares_tiers_and_income_basis(self, spec) -> None: - profile = spec.target_profile - assert profile["schema_version"] == 2 - assert tuple(profile["required_families"]) == ( - "demography", - "fiscal_income", - "income_tax", - "social_security", - "caseloads", - ) - tiers = profile["criticality_tiers"] - assert tiers["core_fiscal_release"]["relative_tolerance"] == 0.05 - assert tiers["caseload_release"]["relative_tolerance"] == 0.15 - assert tiers["validation_only"]["relative_tolerance"] is None - - income_basis = profile["basis_periods"]["assessment_income_year_2022"] - assert income_basis["period"] == 2022 - assert income_basis["fact_period_type"] == "tax_year" - assert "survey_year" not in income_basis - assert "income_reference_offset_years" not in income_basis - assert income_basis["mismatch_policy"] == "requires_source_projection" - - references = {reference.name: reference for reference in spec.target_references} - assert ( - references["nbb_household_disposable_income"].metadata["target_role"] - == "validation" ) + assert payload["schema_version"] == 2 + assert set(payload["hierarchy"]) == { + "providers", + "categories", + "target_labels", + } + tolerances = { + reference.family: reference.metadata["fit_tolerance"] + for reference in spec.target_references + } + assert tolerances.pop("demography") == "0.02" + assert set(tolerances.values()) == {"0.05"} assert { - reference.family - for reference in references.values() - if reference.metadata["target_role"] == "calibration" - } >= set(profile["required_families"]) + reference.metadata["target_role"] for reference in spec.target_references + } == {"calibration"} + assert { + reference.metadata["method_card_status"] + for reference in spec.target_references + } == {"proposed_pending_d1902"} - def test_target_profile_tiers_and_roles_are_declaration_only(self, spec) -> None: + def test_target_tolerances_and_roles_are_declaration_only(self, spec) -> None: assert all(reference.tolerance is None for reference in spec.target_references) description = json.loads( (COUNTRY_PACKAGE_ROOT / "be/target_references.json").read_text( encoding="utf-8" ) )["description"] - assert "validated declaration metadata only" in description - assert "does not yet wire them into runtime calibration" in description - assert "current Chronicle Belgian catalog does not satisfy" in description - assert "#264" in description + assert "Selectors only" in description + assert "proposed pending d1902" in description + assert "Belgium stays inactive" in description assert "Declaration-only intended Belgian gate posture" in spec.gates.policy assert "not implemented here" in spec.gates.policy + def test_parked_references_refuse_direct_compilation(self, spec) -> None: + parked = [ + reference + for reference in spec.target_references + if reference.metadata["activation_status"] != "active" + ] + assert len(parked) == 42 + for reference in parked: + with pytest.raises( + ValueError, + match="non-executable placeholder|requires reference profile", + ): + compile_ledger_target_references([], [reference], country="be") + @pytest.mark.parametrize( ("reference_name", "aliases"), [ @@ -774,12 +836,13 @@ def test_target_profile_tiers_and_roles_are_declaration_only(self, spec) -> None ), ], ) - def test_subnational_targets_accept_only_declared_typed_vintage_aliases( + def test_schema2_subnational_targets_accept_only_declared_typed_vintage_aliases( self, tmp_path, reference_name, aliases ) -> None: for index, alias in enumerate(aliases): - package_dir = tmp_path / f"case-{index}" / "be" - shutil.copytree(COUNTRY_PACKAGE_ROOT / "be", package_dir) + package_dir = _be_package_with_schema2_profile( + tmp_path / f"case-{index}" / "be" + ) target_path = package_dir / "target_references.json" payload = json.loads(target_path.read_text(encoding="utf-8")) reference = next( @@ -804,11 +867,10 @@ def test_subnational_targets_accept_only_declared_typed_vintage_aliases( ("statbel_fiscal_income_by_commune", "nis_2024"), ], ) - def test_subnational_targets_refuse_vintages_outside_typed_registry( + def test_schema2_subnational_targets_refuse_vintages_outside_typed_registry( self, tmp_path, reference_name, invalid_vintage ) -> None: - package_dir = tmp_path / "be" - shutil.copytree(COUNTRY_PACKAGE_ROOT / "be", package_dir) + package_dir = _be_package_with_schema2_profile(tmp_path / "be") target_path = package_dir / "target_references.json" payload = json.loads(target_path.read_text(encoding="utf-8")) reference = next( @@ -821,11 +883,10 @@ def test_subnational_targets_refuse_vintages_outside_typed_registry( with pytest.raises(ValueError, match="not an exact typed authority alias"): load_country_spec(package_dir) - def test_subnational_target_requires_a_typed_geography_layer( + def test_schema2_subnational_target_requires_a_typed_geography_layer( self, tmp_path ) -> None: - package_dir = tmp_path / "be" - shutil.copytree(COUNTRY_PACKAGE_ROOT / "be", package_dir) + package_dir = _be_package_with_schema2_profile(tmp_path / "be") target_path = package_dir / "target_references.json" payload = json.loads(target_path.read_text(encoding="utf-8")) reference = payload["target_references"][0] @@ -842,11 +903,12 @@ def test_subnational_target_requires_a_typed_geography_layer( "statbel_fiscal_income_by_commune", ], ) - def test_multicell_be_placeholders_cannot_compile_before_fanout( - self, spec, reference_name + def test_schema2_multicell_placeholders_cannot_compile_before_fanout( + self, tmp_path, reference_name ) -> None: + loaded = load_country_spec(_be_package_with_schema2_profile(tmp_path / "be")) reference = next( - row for row in spec.target_references if row.name == reference_name + row for row in loaded.target_references if row.name == reference_name ) with pytest.raises(ValueError, match="non-executable placeholder"): @@ -1023,6 +1085,7 @@ def test_spi_spine_adds_no_country_package_resources(self) -> None: "bonus_sacrifice_anchor.json", "obr_salary_sacrifice_costing_facts.json", "obr_savings_income_growth_facts.json", + "hmrc_spi_table_3_7_savings_rows.json", "slc_liable_stocks.json", "hmrc_income_release_gate_report.json", "hmrc_income_replay_report.json", @@ -1131,10 +1194,10 @@ def test_uk_source_manifest_contains_only_canonical_spine_stages(self) -> None: # uc_capital_coherence; microcosm#1319 carers_allowance_take_up after # child_benefit_take_up; childcare_copy_take_up last, after every copy # stage; microcosm#1334 uc_take_up after uc_capital_coherence and - # frs_annual_income_spells after frs_hmrc_spine_leaves; microcosm#1415 - # isa_subscriptions last; company_cars right after + # frs_annual_income_spells after frs_hmrc_spine_leaves; microcosm#1428 + # trading_allowance_receipts last; company_cars right after # hmrc_spi_income_spine (PolicyEngine/uk-autumn-budget-dashboard-2026#316). - assert len(spec.sources.stages) == 51 + assert len(spec.sources.stages) == 52 assert not {"frs_hmrc_retained_leaves", "hmrc_spi_income"}.intersection( stage.stage for stage in spec.sources.stages ) @@ -1189,6 +1252,7 @@ def test_uk_package_loads(self) -> None: "bonus_sacrifice_anchor.json", "obr_salary_sacrifice_costing_facts.json", "obr_savings_income_growth_facts.json", + "hmrc_spi_table_3_7_savings_rows.json", "slc_liable_stocks.json", "hmrc_income_release_gate_report.json", "hmrc_income_replay_report.json", @@ -2513,8 +2577,7 @@ def test_schema2_period_contract_preserves_valid_aliases_and_opaque_labels( def test_schema2_be_geography_vintage_contract_survives_identifier_resolution( tmp_path, identifier_field, fact_vintage ) -> None: - package_dir = tmp_path / "be" - shutil.copytree(COUNTRY_PACKAGE_ROOT / "be", package_dir) + package_dir = _be_package_with_schema2_profile(tmp_path / "be") target_path = package_dir / "target_references.json" payload = json.loads(target_path.read_text(encoding="utf-8")) raw_reference = next( @@ -2594,12 +2657,20 @@ def units(spec) -> dict[str, str]: shipped = units(load_bundle(country)) changed = units(load_bundle(_package_with_catalog_unit(tmp_path, country, unit))) - - assert unit not in shipped.values() - assert [key for key in shipped if shipped[key] != changed[key]] == [ - key for key in changed if changed[key] == unit - ] - assert list(changed.values()).count(unit) == 1 + # The helper edits the first authored count column; bind the compiled + # change to that source key, so a wrong-row edit cannot pass. + authored = yaml.safe_load( + (COUNTRY_PACKAGE_ROOT / country / "spec/catalogs.yaml").read_text( + encoding="utf-8" + ) + )["columns"] + edited = next(row["key"] for row in authored if row["contract"]["unit"] == "count") + + # Belgium ships euro money columns (B3); New Zealand ships none yet. + assert list(shipped.values()).count(unit) == {"be": 2, "nz": 0}[country] + assert [key for key in shipped if shipped[key] != changed[key]] == [edited] + assert (shipped[edited], changed[edited]) == ("count", unit) + assert list(changed.values()).count(unit) == list(shipped.values()).count(unit) + 1 @pytest.mark.parametrize("unit", ["EUR", "NZD", "euro", "eur_cents"]) diff --git a/packages/microcosm-build/tests/engine_free/shared/test_emitter_adapter.py b/packages/microcosm-build/tests/engine_free/shared/test_emitter_adapter.py index ab5c70fd8f..2ed49c09bc 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_emitter_adapter.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_emitter_adapter.py @@ -1,53 +1,56 @@ -"""Test Microcosm's adapter with emitter APIs replaced, not hosted services.""" +"""Microcosm's adapter over ``microcosm-emitter-interface``, without an emitter. -from types import SimpleNamespace +The adapter starts the separately installed ``microcosm-emitter`` command +through the interface's ``EmitterClient``; these tests replace that client +with an in-memory one, or let the interface fail to find the command. A +stand-in command answers ``microcosm-emitter version`` where a test needs an +installed release; no test runs a real emitter. +""" + +import json import pytest +from microcosm_emitter_interface import ( + EmitterClient, + HuggingFaceSettings, + OrrerySettings, + TelemetrySettings, +) +from microcosm_emitter_interface import client as interface_client +from microcosm_emitter_interface import launcher as interface_launcher from microcosm.build import telemetry_emitter as adapter +from test_support.microcosm_build.emitter import FakeEmitterClient START = adapter.LocalTelemetryEmitter.start.__func__ +#: The interface's own startup, captured before the shared fixture forbids it. +INTERFACE_START_EMITTER = interface_launcher.start_emitter -def test_selects_both_workers_once_with_shared_path_and_build_identity( - monkeypatch, tmp_path -): - calls, messages, queries, closed = [], [], [], [] - transport = SimpleNamespace(send=messages.append) - inventory = { - "version": 1, - "publication_id": "independent", - "files": [], - } +@pytest.fixture(autouse=True) +def no_installed_emitter_command(monkeypatch, tmp_path_factory): + """Name a missing command, so no test finds an emitter installed on PATH.""" + missing = tmp_path_factory.mktemp("no-emitter") / "microcosm-emitter" + monkeypatch.setenv("MICROCOSM_EMITTER_COMMAND", str(missing)) - def request(message, **options): - queries.append((message, options)) - if message["command"] == "inventory": - return {"inventory": inventory} - return { - "receipt": { - "version": 1, - "publication_id": "independent", - "status": "pending", - "error_code": None, - "attempts": 1, - } - } - - graph_transport = SimpleNamespace(request=request) - - def for_module(name): - return {"telemetry": transport, "orrery": graph_transport}[name] - - handle = SimpleNamespace( - client=SimpleNamespace(for_module=for_module), close=lambda: closed.append(True) - ) - def start(modules, **options): - calls.append((modules, options)) - return handle +def _record_starts(monkeypatch, client=None): + """Replace ``EmitterClient.start``; return the options of every call.""" + starts = [] - monkeypatch.setattr(adapter, "start_services", start) + def start(cls, **options): + starts.append(options) + return client if client is not None else FakeEmitterClient() + + monkeypatch.setattr(adapter.EmitterClient, "start", classmethod(start)) + return starts + + +def test_starts_one_emitter_with_telemetry_graph_and_hugging_face_modules( + monkeypatch, tmp_path +): + client = FakeEmitterClient() + starts = _record_starts(monkeypatch, client) monkeypatch.setattr(adapter, "runtime_identity", lambda: {"commit": "synthetic"}) path = tmp_path / "jobs.sqlite3" emitter = START( @@ -58,250 +61,323 @@ def start(modules, **options): spool_path=path, heartbeat_seconds=123, ) - assert len(calls) == 1 - modules, options = calls[0] - assert set(modules) == {"telemetry", "orrery"} - assert all(m["spool_path"] == str(path) for m in modules.values()) - assert "registration" not in modules["orrery"] - assert modules["telemetry"]["registration"]["run_id"] == "run-one" - assert modules["telemetry"]["heartbeat_seconds"] == 123 - assert modules["telemetry"]["identity"] == {"commit": "synthetic"} + + assert len(starts) == 1 + options = starts[0] + assert adapter.EmitterClient is EmitterClient + assert options["spool_path"] == path assert options["startup_timeout"] == 15 - # The service emits one run-start event from its startup configuration. - # The build adapter must not send a second run-start request. - assert messages == [] - emitter.stage("stage-that-is-not-in-a-fixed-list") - assert messages[0]["stage_id"] == "stage-that-is-not-in-a-fixed-list" - assert emitter.publication_inventory(tmp_path, {}) == inventory - receipt = emitter.publish_graph(tmp_path, inventory, wait_seconds=0) - assert receipt["status"] == "pending" - assert [query[0]["command"] for query in queries] == ["inventory", "enqueue"] + telemetry = options["telemetry"] + assert isinstance(telemetry, TelemetrySettings) + assert telemetry.run.run_id == "run-one" + assert telemetry.run.country_code == "uk" + assert telemetry.run.pipeline == "full" + assert telemetry.identity == {"commit": "synthetic"} + assert telemetry.heartbeat_seconds == 123 + assert telemetry.development_collector_url is None + assert isinstance(options["orrery"], OrrerySettings) + assert options["orrery"].development_collector_url is None + hugging_face = options["hugging_face"] + assert isinstance(hugging_face, HuggingFaceSettings) + # The hand-over tables stay in their own SQLite file beside the spool. + assert hugging_face.configuration(path) == { + "handover_database_path": str(tmp_path / "jobs.handovers.sqlite3") + } + assert emitter.client is client + assert emitter.run is telemetry.run + # The emitter records the run start from its configuration; the adapter + # sends no second start request, and opens no database itself. + assert client.telemetry_messages == [] assert not path.exists() - emitter.complete() - emitter.close() - assert closed == [True] - assert messages[-1]["command"] == "complete" -def test_disabled_startup_cannot_claim_persistence_or_start_a_replacement_service( - monkeypatch, tmp_path +def test_telemetry_requests_reach_the_interface_with_their_fields(): + client = FakeEmitterClient() + emitter = adapter.LocalTelemetryEmitter( + run=adapter.TelemetryRun("run-one", "uk", "full"), + client=client, + close_service_on_finish=False, + ) + + emitter.stage("stage-that-is-not-in-a-fixed-list", rows=3) + emitter.transition_stage("solve", message="Solving.", rows=4) + emitter.progress("solve", done=1, total=2, unit="chunks", elapsed_seconds=0.5) + emitter.calibration_progress({"kind": "calibration_epoch", "epoch": 1}) + emitter.transition_calibration_progress({"kind": "calibration_epoch", "epoch": 2}) + emitter.emit(event_type="progress", status="completed", stage_id="node") + emitter.block( + phase="post_calibration", + blocking_gate_ids=("uk.local.fit",), + blocking_failure_count=3, + gate_statuses={"uk.local.fit": "FAIL"}, + ) + emitter.fail( + ValueError("synthetic refusal"), + failed_during="solve", + failure_class="refused", + error_code="BUILD_REFUSED", + ) + emitter.complete() + + assert client.telemetry_messages == [ + { + "command": "stage", + "stage_id": "stage-that-is-not-in-a-fixed-list", + "status": "started", + "message": None, + "details": {"rows": 3}, + }, + { + "command": "transition_stage", + "stage_id": "solve", + "status": "running", + "message": "Solving.", + "details": {"rows": 4}, + }, + { + "command": "progress", + "stage_id": "solve", + "done": 1, + "total": 2, + "unit": "chunks", + "details": {"elapsed_seconds": 0.5}, + }, + { + "command": "calibration_progress", + "event": {"kind": "calibration_epoch", "epoch": 1}, + }, + { + "command": "transition_calibration_progress", + "event": {"kind": "calibration_epoch", "epoch": 2}, + }, + { + "command": "emit", + "event_type": "progress", + "stage_id": "node", + "status": "completed", + "message": None, + "details": {}, + }, + { + "command": "block", + "phase": "post_calibration", + "blocking_gate_ids": ["uk.local.fit"], + "blocking_failure_count": 3, + "gate_statuses": {"uk.local.fit": "FAIL"}, + }, + { + "command": "fail", + "message": "synthetic refusal", + "error_type": "ValueError", + "failed_during": "solve", + "failure_class": "refused", + "error_code": "BUILD_REFUSED", + }, + {"command": "complete"}, + ] + + +def test_a_missing_emitter_command_leaves_the_build_running( + monkeypatch, capsys, tmp_path ): + # Let the interface itself look for the command, and fail to find it. + monkeypatch.setattr(interface_client, "start_emitter", INTERFACE_START_EMITTER) + # An adapter that still started an in-process host must not start one here. monkeypatch.setattr( - adapter.GraphPublicationClient, - "start", - lambda **options: pytest.fail("started a replacement graph service"), + adapter, + "start_services", + lambda *args, **options: pytest.fail("started an in-process emitter host"), + raising=False, ) - emitter = adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("run-one", "uk", "full"), - transport=None, + monkeypatch.setenv( + "MICROCOSM_EMITTER_COMMAND", str(tmp_path / "missing" / "microcosm-emitter") ) - value = {"version": 1, "publication_id": "independent", "files": []} + monkeypatch.setattr(adapter, "runtime_identity", lambda: {"commit": "synthetic"}) + emitter = START( + adapter.LocalTelemetryEmitter, + run_id="run-one", + country_code="uk", + pipeline="full", + spool_path=tmp_path / "jobs.sqlite3", + ) + + assert not emitter.available + assert "command_not_found" in capsys.readouterr().err + emitter.transition_stage("solve") assert emitter.publication_inventory(tmp_path, {}) is None - receipt = emitter.publish_graph(tmp_path, value, wait_seconds=0) - assert receipt == { + assert emitter.publish_graph( + tmp_path, + {"version": 1, "publication_id": "independent", "files": []}, + wait_seconds=0, + ) == { "version": 1, "publication_id": "independent", "status": "failed", "error_code": "local_service_unavailable", } + emitter.complete() + emitter.close() assert list(tmp_path.iterdir()) == [] -def test_unavailable_graph_socket_returns_failure_without_writing_a_queue(tmp_path): - from microcosm_emitter.host.errors import LocalServiceError - - def unavailable(*args, **options): - raise LocalServiceError("socket unavailable") - - emitter = adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("run-one", "uk", "full"), - transport=SimpleNamespace(send=lambda message: None), - graph_client=adapter.GraphPublicationClient( - SimpleNamespace(request=unavailable) - ), - ) - assert emitter.publication_inventory(tmp_path, {}) is None - receipt = emitter.publish_graph( - tmp_path, - {"version": 1, "publication_id": "independent", "files": []}, - wait_seconds=0, +def _version_answer(emitter_version): + """What ``microcosm-emitter version`` prints, for one installed release.""" + description = {"protocol_versions": [1]} + if emitter_version is not None: + description["emitter_version"] = emitter_version + return json.dumps(description) + + +def _install_emitter_command(monkeypatch, directory, version_answer): + """Name a stand-in ``microcosm-emitter`` command in MICROCOSM_EMITTER_COMMAND. + + It prints ``version_answer`` for ``microcosm-emitter version``. Started + any other way, as the emitter itself would be, it creates the returned + file and exits. + """ + directory.mkdir() + answer = directory / "version-answer" + answer.write_text(version_answer) + started = directory / "emitter-started" + command = directory / "microcosm-emitter" + command.write_text( + "#!/bin/sh\n" + 'if [ "$1" = version ]; then\n' + f" cat '{answer}'\n" + " exit 0\n" + "fi\n" + f"touch '{started}'\n" + "exit 1\n" ) - assert receipt["status"] == "failed" - assert receipt["error_code"] == "local_service_unavailable" - assert list(tmp_path.iterdir()) == [] + command.chmod(0o755) + monkeypatch.setenv("MICROCOSM_EMITTER_COMMAND", str(command)) + return command, started -def test_start_failure_is_nonfatal_and_does_not_log_exception_payload( - monkeypatch, capsys, tmp_path -): - def fail(*args, **kwargs): - raise RuntimeError("private credential should not be logged") - - monkeypatch.setattr(adapter, "start_services", fail) - emitter = START( +def _start_build_emitter(monkeypatch, tmp_path): + monkeypatch.setattr(adapter, "runtime_identity", lambda: {"commit": "synthetic"}) + return START( adapter.LocalTelemetryEmitter, run_id="run-one", country_code="uk", pipeline="full", - spool_path=tmp_path / "jobs.sqlite3", + spool_path=tmp_path / "events.sqlite3", ) - assert not emitter.available - warning = capsys.readouterr().err - assert "RuntimeError" in warning - assert "private credential" not in warning -@pytest.mark.parametrize("operation", ["complete", "close"]) -def test_default_test_emitter_uses_emitter_lifecycle_in_memory( - fake_telemetry_emitters, operation +@pytest.mark.parametrize( + ("version_answer", "reported"), + [ + # 0.4.0 to 0.5.1 accept protocol 1 but have no Hugging Face module. + (_version_answer("0.5.1"), "reports version 0.5.1"), + (_version_answer("0.4.0"), "reports version 0.4.0"), + (_version_answer(None), "reports no version"), + (_version_answer("not-a-version"), "reports version not-a-version"), + ("not JSON", "reports no version"), + ], + ids=["0.5.1", "0.4.0", "no-version", "not-a-version", "not-json"], +) +def test_an_emitter_older_than_0_6_0_is_never_started_and_the_build_continues( + monkeypatch, capsys, tmp_path, version_answer, reported ): - emitter = adapter.LocalTelemetryEmitter.start( - run_id="run-one", country_code="uk", pipeline="full" - ) - emitter.stage("one") - getattr(emitter, operation)() + # The emitter's telemetry module records the run's start as soon as the + # emitter starts, before it can answer ``hello``. An emitter started only + # to be stopped again would leave the collector a run that started and + # never finished, so the version is read before anything starts. + client = FakeEmitterClient() + starts = _record_starts(monkeypatch, client) + _, started = _install_emitter_command(monkeypatch, tmp_path / "bin", version_answer) + emitter = _start_build_emitter(monkeypatch, tmp_path) + + assert starts == [] + assert not started.exists() assert not emitter.available - assert emitter.events[0]["stage_id"] == "one" + warning = capsys.readouterr().err + assert f"The installed microcosm-emitter {reported};" in warning + assert "this build needs 0.6.0 or later" in warning + assert "uv tool install --upgrade 'microcosm-emitter>=0.6.0'" in warning + # Nothing reaches an emitter, and nothing raises. + emitter.transition_stage("solve") + emitter.complete() + emitter.close() + assert client.calls == [] -def test_fixture_intercepts_preimported_build_entrypoint( - monkeypatch, fake_telemetry_emitters +@pytest.mark.parametrize("installed_version", ["0.6.0", "0.7.0", "0.10.0", "1.0.0"]) +def test_an_emitter_from_0_6_0_on_starts( + monkeypatch, capsys, tmp_path, installed_version ): - from microcosm.build.uk_runtime import rowwise_staging - from test_support.microcosm_build.telemetry import FakeTelemetryEmitter - - def fail(*args, **kwargs): - pytest.fail("test started a real emitter") + client = FakeEmitterClient() + starts = _record_starts(monkeypatch, client) + command, started = _install_emitter_command( + monkeypatch, tmp_path / "bin", _version_answer(installed_version) + ) + emitter = _start_build_emitter(monkeypatch, tmp_path) - monkeypatch.setattr(adapter, "start_services", fail) - for start in ( - rowwise_staging.start_local_telemetry_emitter_service, - adapter.LocalTelemetryEmitter.start, - ): - emitter = start(run_id="fake", country_code="GB", pipeline="test") - assert isinstance(emitter, FakeTelemetryEmitter) - assert emitter in fake_telemetry_emitters + # The command whose version was read is the one started. + assert [options["command"] for options in starts] == [str(command)] + assert not started.exists() + assert emitter.available + assert "microcosm-emitter" not in capsys.readouterr().err -def test_fixture_isolates_cached_huggingface_credentials(tmp_path): - from pathlib import Path +@pytest.mark.parametrize("operation", ["inventory", "publish"]) +def test_a_short_lived_graph_emitter_older_than_0_6_0_is_never_started( + monkeypatch, capsys, tmp_path, operation +): + client = FakeEmitterClient(modules={"orrery"}) + starts = _record_starts(monkeypatch, client) + _, started = _install_emitter_command( + monkeypatch, tmp_path / "bin", _version_answer("0.5.1") + ) + inventory = {"version": 1, "publication_id": "independent", "files": []} - from huggingface_hub import constants, get_token + if operation == "inventory": + assert adapter.publication_inventory(tmp_path, {}) is None + else: + receipt = adapter.publish_graph(tmp_path, inventory, wait_seconds=0) + assert receipt["status"] == "failed" - assert Path(constants.HF_TOKEN_PATH).is_relative_to(tmp_path) - assert get_token() is None + assert starts == [] + assert not started.exists() + assert client.calls == [] + assert "this build needs 0.6.0 or later" in capsys.readouterr().err @pytest.mark.parametrize("failure", ["default_spool_path", "runtime_identity"]) -def test_metadata_or_cache_failure_never_starts_a_service(monkeypatch, failure): +def test_metadata_or_cache_failure_never_starts_an_emitter( + monkeypatch, capsys, failure +): def fail(): raise OSError("private setup detail") + starts = _record_starts(monkeypatch) monkeypatch.setattr(adapter, failure, fail) - monkeypatch.setattr( - adapter, "start_services", lambda *a, **kw: pytest.fail("started after failure") - ) emitter = START( adapter.LocalTelemetryEmitter, run_id="failed", country_code="uk", pipeline="full", ) - assert not emitter.available - -def test_graph_receipt_poll_uses_the_existing_module_client(monkeypatch, tmp_path): - from microcosm_emitter.orrery import client - - calls = [] - - def request(message, **options): - calls.append(message["command"]) - return { - "receipt": { - "version": 1, - "publication_id": "independent", - "status": ( - "pending" if message["command"] == "enqueue" else "published" - ), - "error_code": None, - "attempts": 0 if message["command"] == "enqueue" else 1, - } - } - - monkeypatch.setattr(client.time, "sleep", lambda duration: None) - emitter = adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("run-one", "uk", "full"), - transport=SimpleNamespace(send=lambda message: None), - graph_client=adapter.GraphPublicationClient(SimpleNamespace(request=request)), - ) - receipt = emitter.publish_graph( - tmp_path, - {"version": 1, "publication_id": "independent", "files": []}, - wait_seconds=1, - ) - assert receipt["status"] == "published" - assert calls == ["enqueue", "receipt"] - - -def test_adapter_assigns_host_cleanup_to_the_build_finally(monkeypatch): - configured = [] - - def initialize(self, **options): - configured.append(options) - - monkeypatch.setattr(adapter.EmitterTelemetryClient, "__init__", initialize) - adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("synthetic", "uk", "full"), - transport=None, - close_service_on_finish=False, - ) - assert configured[0]["close_service_on_finish"] is False + assert starts == [] + assert not emitter.available + assert emitter.client is None + warning = capsys.readouterr().err + assert "OSError" in warning + assert "private setup detail" not in warning + emitter.fail(ValueError("refused"), error_code="BUILD_REFUSED") + emitter.close() @pytest.mark.parametrize("outcome", ["blocked", "failed", "completed"]) -def test_graph_publication_precedes_host_cleanup_after_recording_an_outcome( - monkeypatch, tmp_path, outcome +def test_graph_publication_precedes_emitter_shutdown_after_an_outcome( + tmp_path, outcome ): - from test_support.microcosm_build.telemetry import FakeTelemetryEmitter - - operations, queries = [], [] - telemetry = FakeTelemetryEmitter(adapter.TelemetryRun("synthetic", "uk", "full")) - inventory = {"version": 1, "publication_id": "synthetic", "files": []} - - def request(message, **options): - operations.append(message["command"]) - queries.append(message) - if message["command"] == "inventory": - return {"inventory": inventory} - return { - "receipt": { - "version": 1, - "publication_id": "synthetic", - "status": "pending", - "attempts": 1, - "error_code": None, - } - } - - def for_module(name): - return { - "telemetry": telemetry, - "orrery": SimpleNamespace(request=request), - }[name] - - handle = SimpleNamespace( - client=SimpleNamespace(for_module=for_module), - close=lambda: operations.append("close"), - ) - monkeypatch.setattr(adapter, "start_services", lambda *a, **k: handle) - monkeypatch.setattr(adapter, "runtime_identity", lambda: {"commit": "synthetic"}) - emitter = START( - adapter.LocalTelemetryEmitter, - run_id="synthetic", - country_code="uk", - pipeline="full", - spool_path=tmp_path / "queue.sqlite3", + client = FakeEmitterClient() + emitter = adapter.LocalTelemetryEmitter( + run=adapter.TelemetryRun("synthetic", "uk", "full"), + client=client, close_service_on_finish=False, ) emitter.transition_stage("solve") @@ -310,85 +386,140 @@ def for_module(name): phase="post_calibration", blocking_gate_ids=["uk.local.fit"], blocking_failure_count=3, - gate_statuses={"uk.local.fit": "FAIL"}, ) elif outcome == "failed": - emitter.fail( - ValueError("synthetic validation refusal"), - error_code="BUILD_REFUSED", - failure_class="refused", - failed_during="solve", - ) + emitter.fail(ValueError("synthetic refusal"), error_code="BUILD_REFUSED") else: emitter.complete() - assert operations == [] + + # Recording the outcome leaves the emitter running for later hand-overs. + assert "close" not in client.calls assert emitter.available - final_events = [event for event in telemetry.events if event["event_type"] == "run"] - assert [event["status"] for event in final_events] == [outcome] - if outcome == "blocked": - assert final_events[0]["details"] == { - "phase": "post_calibration", - "blocking_gate_ids": ["uk.local.fit"], - "blocking_failure_count": 3, - "gate_statuses": {"uk.local.fit": "FAIL"}, - } - assert telemetry.events[-2]["event_type"] == "stage" - assert telemetry.events[-2]["status"] == "completed" - elif outcome == "failed": - assert final_events[0]["details"]["error_code"] == "BUILD_REFUSED" - assert final_events[0]["details"]["failure_class"] == "refused" - assert final_events[0]["details"]["failed_during"] == "solve" - # A completed telemetry lifecycle must not prevent requests on the other - # module; the existing build finally owns physical service shutdown. - try: - assert emitter.publication_inventory(tmp_path, {}) == inventory - assert emitter.publish_graph(tmp_path, inventory, wait_seconds=0)["status"] == ( - "pending" - ) - finally: - emitter.close() + (tmp_path / "graph.orrery.json").write_text("{}") + inventory = emitter.publication_inventory(tmp_path, {"graph.orrery.json": "graph"}) + assert inventory is not None + assert inventory["files"][0]["name"] == "graph.orrery.json" + assert emitter.publish_graph(tmp_path, inventory, wait_seconds=0)["status"] == ( + "pending" + ) + emitter.close() emitter.close() - assert [query["command"] for query in queries] == ["inventory", "enqueue"] - assert operations == ["inventory", "enqueue", "close"] + assert client.calls[-3:] == [ + "orrery_inventory", + "hand_over_orrery_inputs", + "close", + ] + assert client.calls.count("close") == 1 assert not emitter.available - assert ( - len([event for event in telemetry.events if event["event_type"] == "run"]) == 1 - ) -@pytest.mark.parametrize("outcome", ["complete", "fail"]) -def test_default_finish_releases_host_without_an_outer_build_cleanup(outcome): - closed = [] +@pytest.mark.parametrize("outcome", ["complete", "fail", "block"]) +def test_by_default_an_outcome_shuts_the_emitter_down(outcome): + client = FakeEmitterClient() emitter = adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("synthetic", "us", "release"), - transport=SimpleNamespace(send=lambda message: None), - handle=SimpleNamespace(close=lambda: closed.append(True)), + run=adapter.TelemetryRun("synthetic", "us", "release"), client=client ) if outcome == "complete": emitter.complete() - else: + elif outcome == "fail": emitter.fail(ValueError("synthetic failure"), error_code="BUILD_FAILED") - assert closed == [True] + else: + emitter.block(phase="preflight", blocking_gate_ids=[], blocking_failure_count=1) + + assert client.closed assert not emitter.available emitter.close() - assert closed == [True] + assert client.calls.count("close") == 1 -@pytest.mark.parametrize("outcome", ["block", "fail"]) -def test_outcome_on_disabled_transport_is_safe_and_cannot_restart_service( - monkeypatch, outcome -): - monkeypatch.setattr( - adapter, - "start_services", - lambda *a, **k: pytest.fail("outcome started a replacement service"), - ) +def test_an_unavailable_emitter_answers_without_raising(tmp_path): emitter = adapter.LocalTelemetryEmitter( - run=adapter.TelemetryRun("synthetic", "uk", "full"), transport=None + run=adapter.TelemetryRun("run-one", "uk", "full"), client=None ) - if outcome == "block": - emitter.block(phase="preflight", blocking_gate_ids=[], blocking_failure_count=1) - else: - emitter.fail(ValueError("refused"), error_code="BUILD_REFUSED") + value = {"version": 1, "publication_id": "independent", "files": []} + assert not emitter.available + emitter.stage("one") + assert emitter.publication_inventory(tmp_path, {}) is None + assert emitter.publish_graph(tmp_path, value, wait_seconds=0) == { + "version": 1, + "publication_id": "independent", + "status": "failed", + "error_code": "local_service_unavailable", + } + emitter.block(phase="preflight", blocking_gate_ids=[], blocking_failure_count=1) emitter.close() + assert list(tmp_path.iterdir()) == [] + + +@pytest.mark.parametrize("operation", ["inventory", "publish"]) +def test_graph_requests_without_a_build_emitter_use_a_short_lived_one( + monkeypatch, tmp_path, operation +): + client = FakeEmitterClient(modules={"orrery"}) + starts = _record_starts(monkeypatch, client) + (tmp_path / "graph.orrery.json").write_text("{}") + roles = {"graph.orrery.json": "graph"} + + if operation == "inventory": + inventory = adapter.publication_inventory(tmp_path, roles) + assert inventory is not None + assert inventory["files"][0]["role"] == "graph" + else: + inventory = {"version": 1, "publication_id": "independent", "files": []} + receipt = adapter.publish_graph(tmp_path, inventory, wait_seconds=0) + assert receipt["status"] == "pending" + + assert len(starts) == 1 + assert set(starts[0]) >= {"orrery"} + assert starts[0].get("telemetry") is None + assert starts[0].get("hugging_face") is None + assert isinstance(starts[0]["orrery"], OrrerySettings) + assert client.calls[-1] == "close" + + +def test_default_test_emitter_records_requests_in_memory(fake_telemetry_emitters): + emitter = adapter.LocalTelemetryEmitter.start( + run_id="run-one", country_code="uk", pipeline="full" + ) + emitter.stage("one") + emitter.complete() + assert not emitter.available + assert emitter.events[0]["stage_id"] == "one" + assert emitter.events[-1]["event_type"] == "run" + assert emitter.events[-1]["status"] == "completed" + + +def test_fixture_intercepts_preimported_build_entrypoint( + monkeypatch, fake_telemetry_emitters +): + from microcosm.build.uk_runtime import rowwise_staging + from test_support.microcosm_build.telemetry import FakeTelemetryEmitter + + def fail(*args, **kwargs): + pytest.fail("test started a real emitter") + + monkeypatch.setattr(adapter.EmitterClient, "start", classmethod(fail)) + for start in ( + rowwise_staging.start_local_telemetry_emitter_service, + adapter.LocalTelemetryEmitter.start, + ): + emitter = start(run_id="fake", country_code="GB", pipeline="test") + assert isinstance(emitter, FakeTelemetryEmitter) + assert emitter in fake_telemetry_emitters + + +def test_fixture_forbids_starting_the_installed_emitter(tmp_path): + with pytest.raises(pytest.fail.Exception, match="real emitter"): + EmitterClient.start( + orrery=OrrerySettings(), spool_path=tmp_path / "events.sqlite3" + ) + + +def test_fixture_isolates_cached_huggingface_credentials(tmp_path): + from pathlib import Path + + from huggingface_hub import constants, get_token + + assert Path(constants.HF_TOKEN_PATH).is_relative_to(tmp_path) + assert get_token() is None diff --git a/packages/microcosm-build/tests/engine_free/shared/test_ledger_artifact.py b/packages/microcosm-build/tests/engine_free/shared/test_ledger_artifact.py index 2c59d73e20..79a1caafb4 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_ledger_artifact.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_ledger_artifact.py @@ -150,6 +150,7 @@ def test_lexical_float_opt_in_is_limited_to_factor_consumers(): assert opt_ins == { "packages/microcosm-build/src/microcosm/build/transport/money_kernels.py", "packages/microcosm-build/src/microcosm/build/transport/target_kernels.py", + "tools/generate_be_target_references.py", "tools/generate_nz_reference_aging.py", } diff --git a/packages/microcosm-build/tests/engine_free/shared/test_nz_target_references.py b/packages/microcosm-build/tests/engine_free/shared/test_nz_target_references.py index 7714b2c888..3fb7e1d243 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_nz_target_references.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_nz_target_references.py @@ -1345,3 +1345,43 @@ def test_each_coarse_band_lists_exactly_its_native_rows_labels(artifact): labels[measure, member] for member in members ] } + + +def test_each_coarse_row_selects_its_native_rows_committed_labels(): + """R2C-16 without the feed: membership checked against committed rows. + + Each coarse row's label list equals, in order, the committed labels of the + native rows its ``metadata.native_rows`` names, and its selector otherwise + equals theirs. For each measure the 12 bands' native rows tile rows 50 to + 244 once, in order. The feed audit above checks the same labels against the + feed, which CI doesn't load. + """ + native = { + row["name"]: row + for row in _document("income_diagnostic_references.json")[ + "diagnostic_references" + ] + } + prefixes = { + "count": "ird_taxable_income_people_by_band", + "money": "ird_taxable_income_total_by_band", + } + tiled = {kind: [] for kind in prefixes} + for row in (row for row in _rows() if row["family"] == "income"): + kind = row["metadata"]["reference_value_kind"] + members = row["metadata"]["native_rows"].split(",") + tiled[kind] += members + selector = dict(row["ledger_selector"]) + (labels,) = selector.pop("dimension_values").values() + expected = [] + for member in members: + member_selector = dict( + native[f"{prefixes[kind]}__{member}"]["ledger_selector"] + ) + del member_selector["aggregate_fact_key"] + (label,) = member_selector.pop("dimension_values").values() + assert selector == member_selector, (row["name"], member) + expected.append(label) + assert labels == expected, row["name"] + for kind, members in tiled.items(): + assert members == [f"row_{n}" for n in range(50, 245)], kind diff --git a/packages/microcosm-build/tests/engine_free/shared/test_nz_transport_declarations.py b/packages/microcosm-build/tests/engine_free/shared/test_nz_transport_declarations.py index 3cf8c8acfe..1d6f3123dc 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_nz_transport_declarations.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_nz_transport_declarations.py @@ -5,6 +5,7 @@ import copy import json import os +import re import subprocess import sys from functools import cache @@ -1152,6 +1153,46 @@ def test_wage_table_has_235_right_closed_bands_and_no_companions(): assert not any("count_reference" in band for band in table["bands"]) +# The rows whose label repeats the previous row's upper endpoint ($20,000, +# $50,000 and $80,000). Right closure gives each shared endpoint to the lower band. +_WAGE_SHARED_ENDPOINT_ROWS = ["row_27", "row_57", "row_87"] + + +def _label_dollars(text): + return 1_000_000 if text == "1 million" else int(text.replace(",", "")) + + +def test_each_wage_cut_follows_from_its_committed_label(): + """Each band's cents follow from its own label, with no feed. + + "$a - $b" is the right-closed band (a - 1, b] in dollars, so the cut below + it is 100(a - 1) cents and its ``upper_cent`` is 100b. A label whose lower + endpoint repeats the previous band's upper one starts at that cut instead, + and only the three pinned rows do. "Over $1 million" is the open tail. The + edges test above scales these cuts, and the feed audit checks the labels + against the feed, which CI doesn't load. + """ + _, table, _ = _earnings_sources() + bands = table["bands"] + cuts = [table["first_lower_cut_cents"]] + [band["upper_cent"] for band in bands] + shared, previous = [], None + for index, band in enumerate(bands[:-1]): + label = " ".join(band["source_label"].split()) + match = re.fullmatch(r"\$([\d,]+) - \$([\d,]+|1 million)", label) + assert match, (band["id"], label) + lower, upper = (_label_dollars(text) for text in match.groups()) + if lower == previous: + shared.append(band["id"]) + assert cuts[index] == 100 * lower, band["id"] + else: + assert cuts[index] == 100 * (lower - 1), band["id"] + assert cuts[index + 1] == 100 * upper, band["id"] + previous = upper + assert shared == _WAGE_SHARED_ENDPOINT_ROWS + assert bands[-1]["source_label"] == "Over $1 million" + assert previous == 1_000_000 and cuts[-2:] == [100 * previous, None] + + @pytest.mark.parametrize( "mutate", ["hand_edited_edge", "stale_factor_receipt", "stale_interval_table", "tail"], diff --git a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_country_bundles.py b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_country_bundles.py index a6e0917e94..282f10ec1b 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_country_bundles.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_country_bundles.py @@ -36,6 +36,8 @@ "person.commune_nis", "person.community_code", "person.donor_country_code", + "person.employment_income", + "person.nonfarm_self_employment_income", "person.person_household_id", "person.person_id", "person.province_nis", @@ -217,8 +219,16 @@ def test_be_generation_zero_views_still_come_from_the_country_spec_seam() -> Non assert not spec.release_contract.licence_restricted assert spec.release_contract.public_artifacts == () assert {row.path for row in spec.resource_rows if row.kind == "legacy_json"} == { + "chronicle_feed.json", "gates.json", "geography_spine.json", + "holdout_references.json", + "precal_references.json", + "quantile_surfaces.json", + "reference_aging.json", + "reference_intervals.json", + "reference_inventory.json", + "reference_profiles.json", "release_contract.json", "source_stages.json", "target_references.json", diff --git a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py index de2cf00847..5837c69a8c 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_spec_engine_loader.py @@ -18,7 +18,7 @@ def test_semantic_hash_has_golden_vector_and_surface_separation(tmp_path) -> Non # self-employment feature in the imputation schema moves the schema-set # receipt, and its post-transfer step moves acs_transfer's attested bytes. assert first.spec_sha256 == ( - "8654884dc7dde724af39b78d07cffb151c61680d388c05576cd34dee83fb79fb" + 'e8ef234504dfaed9b5cc7d04355d1996ad0a2f965c06b34679ce216c4f899abe' ) second_root = _rich_minimal(tmp_path / "xy", note="second", store="local:b") diff --git a/packages/microcosm-build/tests/engine_free/shared/test_staging.py b/packages/microcosm-build/tests/engine_free/shared/test_staging.py index 3d6b62c03d..3d10001dac 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_staging.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_staging.py @@ -1,34 +1,37 @@ import inspect import json +import pytest + import microcosm.build.staging as staging_module from microcosm.build.staging import StagingRunBundleWriter -from microcosm.build.staging_storage import BestEffortUploadSession +from test_support.microcosm_build.emitter import FakeEmitterClient from test_support.paths import paths_for _TEST_PATHS = paths_for("microcosm-build") V1_FIXTURE = _TEST_PATHS.tests / "fixtures" / "staging" / "v1" +US_STAGING = "policyengine/populace-us-staging" -def test_staging_run_bundle_writer_has_no_emitter_dependency() -> None: +def test_staging_run_bundle_writer_sends_no_telemetry_events(tmp_path) -> None: + """The writer hands over its files; hosted telemetry stays the build's.""" assert "emitter" not in inspect.signature(StagingRunBundleWriter).parameters + emitter = FakeEmitterClient() + telemetry = StagingRunBundleWriter( + run_id="run-a", + candidate_release_id="run-a", + run_dir=tmp_path / "run-a", + repo_id=US_STAGING, + emitter_client=emitter, + upload_interval_seconds=0, + ) + telemetry.stage("calibrating", force_upload=True) + telemetry.fail(RuntimeError("synthetic")) - -class FakeApi: - def __init__(self) -> None: - self.uploads: list[tuple[str, str, str, str]] = [] - - def upload_file( - self, - *, - path_or_fileobj, - path_in_repo, - repo_id, - repo_type, - ): - self.uploads.append((str(path_or_fileobj), path_in_repo, repo_id, repo_type)) - return None + assert emitter.run_file_requests + assert set(emitter.calls) <= {"stage_run_files", "run_files_receipt"} + assert emitter.telemetry_messages == [] def test_staging_run_bundle_writer_writes_local_progress(tmp_path) -> None: @@ -56,111 +59,182 @@ def test_staging_run_bundle_writer_writes_local_progress(tmp_path) -> None: assert len(events) >= 3 -def test_staging_run_bundle_writer_uploads_repo_paths(tmp_path) -> None: - api = FakeApi() +def test_staging_run_bundle_writer_hands_repo_paths_to_the_emitter(tmp_path) -> None: + emitter = FakeEmitterClient() + run_dir = tmp_path / "run-b" telemetry = StagingRunBundleWriter( run_id="run-b", candidate_release_id="populace-us-2024-def-20260618T000000Z", - run_dir=tmp_path / "run-b", - repo_id="policyengine/populace-us-staging", - api=api, + run_dir=run_dir, + repo_id=US_STAGING, + emitter_client=emitter, upload_interval_seconds=0, ) telemetry.stage("target_compilation", force_upload=True) - assert isinstance(telemetry._upload_session, BestEffortUploadSession) - uploaded_paths = {upload[1] for upload in api.uploads} - assert "runs/run-b/progress.json" in uploaded_paths - assert "runs/run-b/run_manifest.json" in uploaded_paths - assert "latest_staging.json" in uploaded_paths - assert "runs.json" in uploaded_paths + request = emitter.run_file_requests[-1] + assert request.repository == US_STAGING + assert request.run_id == "run-b" + assert request.prefix == "runs" + assert request.flush is True + assert request.commit_interval_seconds == 0 + assert {item.relative_path: item.local_path for item in request.files} == { + "run_manifest.json": run_dir / "run_manifest.json", + "progress.json": run_dir / "progress.json", + "events.ndjson": run_dir / "events.ndjson", + } + assert request.latest_pointer == run_dir / "latest_staging.json" + assert request.run_index_entry == telemetry.run_summary() + assert { + "runs/run-b/progress.json", + "runs/run-b/run_manifest.json", + "latest_staging.json", + "runs.json", + } <= set(emitter.paths(US_STAGING)) + # Unforced changes wait for the writer's own interval, then go as one + # hand-over the emitter commits after its interval. + assert all(not item.flush for item in emitter.run_file_requests[:-1]) -def test_runs_index_keeps_existing_runs(tmp_path) -> None: +def test_the_emitter_merges_this_run_into_the_existing_runs_index(tmp_path) -> None: + emitter = FakeEmitterClient() # An older run is already recorded in the repo's index. - existing = tmp_path / "existing.json" - existing.write_text( - json.dumps( - { - "schema_version": 1, - "updated_at": "2026-06-19T00:00:00+00:00", - "runs": [ - { - "run_id": "older", - "candidate_release_id": "populace-us-2024-old-20260619T000000Z", - "status": "running", - "stage": "write_calibration_npz", - "updated_at": "2026-06-19T00:00:00+00:00", - } - ], - } - ) - ) - - class FakeApiWithDownload(FakeApi): - def hf_hub_download(self, *, repo_id, filename, repo_type, **kwargs): - return str(existing) + emitter.hub_files[(US_STAGING, "runs.json")] = json.dumps( + { + "schema_version": 1, + "updated_at": "2026-06-19T00:00:00+00:00", + "runs": [ + { + "run_id": "older", + "candidate_release_id": "populace-us-2024-old-20260619T000000Z", + "status": "running", + "stage": "write_calibration_npz", + "updated_at": "2026-06-19T00:00:00+00:00", + } + ], + } + ).encode() telemetry = StagingRunBundleWriter( run_id="newer", candidate_release_id="populace-us-2024-new-20260620T000000Z", run_dir=tmp_path / "newer", - repo_id="policyengine/populace-us-staging", - api=FakeApiWithDownload(), + repo_id=US_STAGING, + emitter_client=emitter, upload_interval_seconds=0, ) telemetry.complete() - index = json.loads((tmp_path / "newer" / "runs.json").read_text()) - run_ids = [run["run_id"] for run in index["runs"]] - # Both the pre-existing run and this run survive (no overwrite). - assert run_ids == ["newer", "older"] - + # The writer sends only this run's entry; the emitter merges it at commit + # time, so both the pre-existing run and this run survive. + remote = emitter.hub_json(US_STAGING, "runs.json") + assert [run["run_id"] for run in remote["runs"]] == ["newer", "older"] + assert emitter.run_file_requests[-1].run_index_entry["status"] == "passed" + local = json.loads((tmp_path / "newer" / "runs.json").read_text()) + assert [run["run_id"] for run in local["runs"]] == ["newer"] -def test_upload_failures_never_raise_and_disable_after_three(tmp_path, capsys): - class FailingApi: - def upload_file(self, **kwargs): - raise RuntimeError("401 Unauthorized") - - def hf_hub_download(self, **kwargs): - raise RuntimeError("401 Unauthorized") +def test_hand_over_failures_never_raise_and_disable_after_three(tmp_path, capsys): + emitter = FakeEmitterClient(accept_run_files=False) telemetry = StagingRunBundleWriter( run_id="run-1", candidate_release_id="run-1", run_dir=tmp_path / "run", repo_id="org/staging", - api=FailingApi(), + emitter_client=emitter, upload_interval_seconds=0.0, ) - # Staging telemetry is best-effort: failing uploads must never raise, and - # after three consecutive failures uploads are disabled for the run. + # Staging telemetry is best-effort: hand-overs the emitter does not accept + # never raise, and after three in a row the run stops handing files over. + # The writer's own "created" stage was the first. telemetry.stage("one", force_upload=True) telemetry.stage("two", force_upload=True) assert telemetry.repo_id is None + requests = len(emitter.run_file_requests) + telemetry.stage("three", force_upload=True) + assert len(emitter.run_file_requests) == requests == 3 err = capsys.readouterr().err - assert "staging upload" in err - assert "disabling staging uploads" in err + assert "staging hand-over failed" in err + assert "disabling staging hand-overs" in err # Nothing reached the repo, and the run says so. A configured destination # is not evidence of delivery. assert telemetry.uploads_succeeded == 0 -def test_uploads_succeeded_counts_files_that_reached_the_repo(tmp_path): - api = FakeApi() +def test_a_build_without_an_emitter_keeps_its_staging_files_local( + tmp_path, capsys, monkeypatch +): + from microcosm.build import staging_storage + + monkeypatch.setattr( + staging_storage.HuggingFaceDatasetStorage, + "_api", + lambda storage: pytest.fail("the writer contacted the Hub itself"), + ) + telemetry = StagingRunBundleWriter( + run_id="run-1", + candidate_release_id="run-1", + run_dir=tmp_path / "run", + repo_id="org/staging", + upload_interval_seconds=0.0, + ) + telemetry.complete() + + assert telemetry.uploads_succeeded == 0 + assert json.loads((tmp_path / "run" / "progress.json").read_text())["status"] == ( + "passed" + ) + assert "staging hand-over failed" in capsys.readouterr().err + + +def test_uploads_succeeded_counts_files_the_emitter_committed(tmp_path): + emitter = FakeEmitterClient() telemetry = StagingRunBundleWriter( run_id="run-c", candidate_release_id="run-c", run_dir=tmp_path / "run-c", repo_id="org/staging", - api=api, + emitter_client=emitter, upload_interval_seconds=0.0, ) telemetry.stage("target_compilation", force_upload=True) - assert telemetry.uploads_succeeded == len(api.uploads) + receipt = emitter.run_files_receipt("org/staging", "run-c") + assert telemetry.uploads_succeeded == receipt["files_committed"] assert telemetry.uploads_succeeded > 0 + # The count stays what the emitter last reported once it has shut down. + emitter.close() + assert telemetry.uploads_succeeded == receipt["files_committed"] + + +def test_an_attached_artifact_is_handed_over_once_beside_the_run(tmp_path): + emitter = FakeEmitterClient() + telemetry = StagingRunBundleWriter( + run_id="run-g", + candidate_release_id="run-g", + run_dir=tmp_path / "run-g", + repo_id="org/staging", + emitter_client=emitter, + upload_interval_seconds=0.0, + ) + artifact = tmp_path / "diagnostics.json" + artifact.write_text(json.dumps({"targets": 3})) + + telemetry.attach_artifact("calibration_diagnostics", artifact) + telemetry.stage("validation", force_upload=True) + + carrying = [ + request + for request in emitter.run_file_requests + if any(item.relative_path == "diagnostics.json" for item in request.files) + ] + assert len(carrying) == 1 + assert [item.local_path for item in carrying[0].files] == [artifact] + assert carrying[0].flush is True + assert emitter.hub_files[("org/staging", "runs/run-g/diagnostics.json")] == ( + artifact.read_bytes() + ) def test_blank_path_prefix_falls_back_to_the_default(tmp_path): @@ -215,17 +289,14 @@ def test_us_version_1_bundle_matches_fixed_fixture(tmp_path, monkeypatch): ) monkeypatch.setattr(staging_module, "_now", lambda: next(timestamps)) - class FixtureApi(FakeApi): - def hf_hub_download(self, **kwargs): - raise FileNotFoundError - + emitter = FakeEmitterClient() run_dir = tmp_path / "v1-us-fixture" telemetry = StagingRunBundleWriter( run_id="v1-us-fixture", candidate_release_id="populace-us-2024-v1-fixture", run_dir=run_dir, - repo_id="policyengine/populace-us-staging", - api=FixtureApi(), + repo_id=US_STAGING, + emitter_client=emitter, upload_interval_seconds=float("inf"), started_at="2026-01-01T00:00:00+00:00", ) @@ -248,3 +319,9 @@ def hf_hub_download(self, **kwargs): assert (run_dir / "events.ndjson").read_text().splitlines() == ( V1_FIXTURE / "events.ndjson" ).read_text().splitlines() + # An infinite interval hands over only the forced final state. + assert len(emitter.run_file_requests) == 1 + assert ( + emitter.hub_files[(US_STAGING, "latest_staging.json")] + == (run_dir / "latest_staging.json").read_bytes() + ) diff --git a/packages/microcosm-build/tests/engine_free/shared/test_staging_v2.py b/packages/microcosm-build/tests/engine_free/shared/test_staging_v2.py index 69001080be..e3abc88412 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_staging_v2.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_staging_v2.py @@ -15,7 +15,6 @@ validate_staging_arguments, ) from microcosm.build.staging_storage import ( - BestEffortUploadSession, HuggingFaceDatasetStorage, StagingRepositoryConfig, ) @@ -36,9 +35,11 @@ validate_v2_bundle, validate_v2_document, ) +from test_support.microcosm_build.emitter import FakeEmitterClient from test_support.paths import paths_for _TEST_PATHS = paths_for("microcosm-build") +UK_STAGING = "policyengine/populace-uk-staging" ROOT = _TEST_PATHS.repository FIXTURE_ROOT = _TEST_PATHS.tests / "fixtures" / "staging" @@ -103,8 +104,58 @@ def _recorder(tmp_path, **kwargs) -> StagingRunBundleWriterV2: return StagingRunBundleWriterV2(**defaults) -def test_staging_run_bundle_writer_has_no_emitter_dependency() -> None: +def _remote_recorder(tmp_path, emitter=None, **kwargs): + """A remote-mode recorder whose run files go to an in-memory emitter.""" + emitter = emitter if emitter is not None else FakeEmitterClient() + options = { + "delivery_mode": "local_and_remote", + "repo_id": UK_STAGING, + "emitter_client": emitter, + "upload_interval_seconds": 0, + **kwargs, + } + return _recorder(tmp_path, **options), emitter + + +def _remote_files(emitter, repository=UK_STAGING) -> dict[str, bytes]: + return { + path: content + for (repo, path), content in emitter.hub_files.items() + if repo == repository + } + + +class _AlteringEmitter(FakeEmitterClient): + """An emitter whose Hub copy of one path differs once it reads back.""" + + def __init__(self, path, alter) -> None: + super().__init__() + self.altered_path = path + self.alter = alter + + def read_back_run_files(self, repository, run_id, *, wait_seconds=30.0): + key = (repository, self.altered_path) + self.hub_files[key] = self.alter(self.hub_files[key]) + return super().read_back_run_files( + repository, run_id, wait_seconds=wait_seconds + ) + + +def test_staging_run_bundle_writer_sends_no_telemetry_events(tmp_path) -> None: + """The writer hands over its files; hosted telemetry stays the build's.""" assert "emitter" not in inspect.signature(StagingRunBundleWriterV2).parameters + telemetry, emitter = _remote_recorder(tmp_path) + telemetry.stage("input_verification", force_upload=True) + telemetry.complete() + telemetry.verify_remote() + + assert emitter.run_file_requests + assert set(emitter.calls) <= { + "stage_run_files", + "run_files_receipt", + "read_back_run_files", + } + assert emitter.telemetry_messages == [] def test_version_2_local_bundle_has_explicit_schemas_and_ordered_events(tmp_path): @@ -304,14 +355,7 @@ def test_unknown_schema_version_is_incompatible(): def test_running_document_cannot_report_completed_remote_read_back(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + telemetry, _ = _remote_recorder(tmp_path) telemetry.complete() telemetry.verify_remote() manifest = telemetry.validate_local_bundle()["run_manifest"] @@ -351,68 +395,66 @@ def test_identifiers_and_paths_cannot_escape_contract_root(tmp_path): def test_remote_failures_are_best_effort_and_preserve_repository(tmp_path, capsys): - class FailingApi: - def upload_file(self, **kwargs): - raise RuntimeError("401 token=do-not-record") - - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=FailingApi(), - upload_interval_seconds=0, + telemetry, emitter = _remote_recorder( + tmp_path, FakeEmitterClient(accept_run_files=False) ) telemetry.stage("input_verification", force_upload=True) delivery = telemetry.delivery_summary - assert delivery["configured_repository"] == "policyengine/populace-uk-staging" + assert delivery["configured_repository"] == UK_STAGING + # The three files the emitter did not accept count as attempts. + assert len(emitter.run_file_requests[-1].files) == 3 assert delivery["upload_attempts"] == 3 assert delivery["upload_successes"] == 0 assert delivery["last_error_code"] == "UPLOAD_FAILED" assert telemetry.validate_local_bundle()["progress"]["status"] == "running" - assert "do-not-record" not in capsys.readouterr().err + assert "staging hand-over failed" in capsys.readouterr().err + + +def test_a_build_without_an_emitter_records_the_failed_hand_over(tmp_path): + telemetry, _ = _remote_recorder(tmp_path, emitter_client=None) + telemetry.complete() + + delivery = telemetry.delivery_summary + assert delivery["mode"] == "local_and_remote" + assert delivery["upload_successes"] == 0 + assert delivery["last_error_code"] == "UPLOAD_FAILED" + assert telemetry.validate_local_bundle()["progress"]["status"] == "completed" def test_remote_read_back_validates_the_written_run(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + telemetry, emitter = _remote_recorder(tmp_path) telemetry.set_sample(_sample()) telemetry.complete() telemetry.verify_remote() - assert isinstance(telemetry._upload_session, BestEffortUploadSession) + assert "read_back_run_files" in emitter.calls + assert { + (request.repository, request.run_id, request.prefix) + for request in emitter.run_file_requests + } == {(UK_STAGING, "uk-smoke-5-42", "runs")} + assert all(request.latest_pointer is None for request in emitter.run_file_requests) + assert all(request.run_index_entry is None for request in emitter.run_file_requests) assert telemetry.delivery_summary["read_back"] == "passed" assert telemetry.uploads_succeeded > 0 - assert "runs/uk-smoke-5-42/run_manifest.json" in api.files - assert all(path.startswith("runs/uk-smoke-5-42/") for path in api.files) - remote_manifest = json.loads(api.files["runs/uk-smoke-5-42/run_manifest.json"]) + remote = _remote_files(emitter) + assert "runs/uk-smoke-5-42/run_manifest.json" in remote + assert all(path.startswith("runs/uk-smoke-5-42/") for path in remote) + remote_manifest = json.loads(remote["runs/uk-smoke-5-42/run_manifest.json"]) assert remote_manifest["delivery"]["read_back"] == "passed" def test_remote_read_back_requires_a_final_run_status(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + telemetry, emitter = _remote_recorder(tmp_path) with pytest.raises(StagingContractError, match="completed, blocked or failed"): telemetry.verify_remote() assert telemetry.delivery_summary["read_back"] == "not_requested" - assert api.files == {} - assert api.downloaded == [] + assert emitter.hub_files == {} + assert emitter.calls == [] @pytest.mark.parametrize("final_status", ["completed", "failed"]) @@ -467,52 +509,28 @@ def test_remote_read_back_rejects_schema_valid_content_changes( path, mutate, ): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) - telemetry.complete() - download = telemetry._transport.download + def altered(data): + document = json.loads(data) + mutate(document) + return json.dumps(document).encode() - def altered_download(path_in_repo, **kwargs): - data = download(path_in_repo, **kwargs) - if path_in_repo == path: - document = json.loads(data) - mutate(document) - return json.dumps(document).encode() - return data - - telemetry._transport.download = altered_download + telemetry, _ = _remote_recorder(tmp_path, _AlteringEmitter(path, altered)) + telemetry.complete() - with pytest.raises(StagingReadBackError, match="does not match local"): + with pytest.raises(StagingReadBackError, match=f"differ.*{path}"): telemetry.verify_remote() assert telemetry.delivery_summary["read_back"] == "failed" + assert telemetry.delivery_summary["last_error_code"] == "READ_BACK_FAILED" def test_remote_producers_have_disjoint_run_scoped_upload_paths(tmp_path): - api = MemoryApi(tmp_path) - first = _recorder( - tmp_path / "first", - run_id="first", - candidate_id="first", - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, + emitter = FakeEmitterClient() + first, _ = _remote_recorder( + tmp_path / "first", emitter, run_id="first", candidate_id="first" ) - second = _recorder( - tmp_path / "second", - run_id="second", - candidate_id="second", - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, + second, _ = _remote_recorder( + tmp_path / "second", emitter, run_id="second", candidate_id="second" ) first_paths = {remote for _, remote in first._upload_paths()} @@ -524,59 +542,108 @@ def test_remote_producers_have_disjoint_run_scoped_upload_paths(tmp_path): def test_remote_delivery_matches_local_delivery_after_completion(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + telemetry, emitter = _remote_recorder(tmp_path) telemetry.complete() + # The documents carry the emitter's counts after the hand-over that + # delivered them; this emitter commits at once. expected = telemetry.delivery_summary assert expected["upload_attempts"] == len(telemetry._upload_paths()) assert expected["upload_successes"] == expected["upload_attempts"] + remote = _remote_files(emitter) for filename in ("run_manifest.json", "progress.json"): - remote = json.loads(api.files[f"runs/uk-smoke-5-42/{filename}"]) - assert remote["delivery"] == expected + document = json.loads(remote[f"runs/uk-smoke-5-42/{filename}"]) + assert document["delivery"] == expected + + +def test_delivery_counts_are_what_the_emitter_reported(tmp_path): + """Files the emitter has not committed yet do not count as delivered.""" + + class NotYetCommitted(FakeEmitterClient): + def _receipt(self, repository, run_id): + return { + **super()._receipt(repository, run_id), + "pending_files": 3, + "files_attempted": 0, + "files_committed": 0, + "commit_attempts": 0, + "commits": 0, + } + + telemetry, emitter = _remote_recorder(tmp_path, NotYetCommitted()) + telemetry.stage("input_verification", force_upload=True) + telemetry.complete() + + delivery = telemetry.delivery_summary + assert len(emitter.run_file_requests) >= 2 + assert delivery["upload_attempts"] == delivery["upload_successes"] == 0 + assert delivery["last_error_code"] is None + telemetry.validate_local_bundle() def test_remote_delivery_matches_local_delivery_after_read_back(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + telemetry, emitter = _remote_recorder(tmp_path) telemetry.complete() - counted_paths = len(telemetry._upload_paths()) telemetry.verify_remote() expected = telemetry.delivery_summary - assert expected["upload_attempts"] == 3 * counted_paths - assert expected["upload_successes"] == expected["upload_attempts"] + assert expected["read_back"] == "passed" + assert expected["upload_successes"] == expected["upload_attempts"] > 0 + remote = _remote_files(emitter) for filename in ("run_manifest.json", "progress.json"): - remote = json.loads(api.files[f"runs/uk-smoke-5-42/{filename}"]) - assert remote["delivery"] == expected + document = json.loads(remote[f"runs/uk-smoke-5-42/{filename}"]) + assert document["delivery"] == expected -def test_remote_read_back_failure_is_explicit(tmp_path): - class UploadOnlyApi(MemoryApi): - def hf_hub_download(self, **kwargs): - raise RuntimeError("unavailable") +@pytest.mark.parametrize( + "answer", + [ + { + "status": "failed", + "files": 3, + "mismatched_paths": [], + "error_code": "REPOSITORY_UNAVAILABLE", + }, + {"status": "pending", "files": 0, "mismatched_paths": [], "error_code": None}, + { + "status": "unavailable", + "files": 0, + "mismatched_paths": [], + "error_code": None, + }, + ], +) +def test_remote_read_back_failure_is_explicit(tmp_path, answer): + emitter = FakeEmitterClient() + emitter.read_back_answer = answer + telemetry, _ = _remote_recorder(tmp_path, emitter) + telemetry.complete() - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=UploadOnlyApi(tmp_path), - upload_interval_seconds=0, - ) + with pytest.raises(StagingReadBackError, match="read-back failed"): + telemetry.verify_remote() + assert telemetry.delivery_summary["read_back"] == "failed" + assert telemetry.delivery_summary["last_error_code"] == "READ_BACK_FAILED" + + +def test_read_back_fails_when_the_final_state_was_not_handed_over(tmp_path): + """The Hub can match what the emitter committed and still be stale.""" + + telemetry, emitter = _remote_recorder(tmp_path) + telemetry.stage("input_verification", force_upload=True) + emitter.accept_run_files = False + telemetry.complete() + + with pytest.raises(StagingReadBackError, match="not handed over"): + telemetry.verify_remote() + assert telemetry.delivery_summary["read_back"] == "failed" + assert telemetry.delivery_summary["last_error_code"] == "READ_BACK_FAILED" + assert "read_back_run_files" not in emitter.calls + + +def test_remote_read_back_without_an_emitter_fails(tmp_path): + telemetry, _ = _remote_recorder(tmp_path, emitter_client=None) telemetry.complete() with pytest.raises(StagingReadBackError, match="read-back failed"): @@ -595,20 +662,15 @@ def test_a_failed_refresh_after_a_passed_read_back_keeps_the_verified_delivery( delivery as it was before read-back; the run is not failed. """ - class RefreshFailsApi(MemoryApi): - def upload_file(self, **kwargs): - if self.downloaded: - raise RuntimeError("503 token=do-not-record") - super().upload_file(**kwargs) - - api = RefreshFailsApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) + class RefreshFails(FakeEmitterClient): + def read_back_run_files(self, repository, run_id, *, wait_seconds=30.0): + answer = super().read_back_run_files( + repository, run_id, wait_seconds=wait_seconds + ) + self.accept_run_files = False + return answer + + telemetry, emitter = _remote_recorder(tmp_path, RefreshFails()) telemetry.set_sample(_sample()) telemetry.complete() @@ -620,25 +682,22 @@ def upload_file(self, **kwargs): assert delivery["upload_attempts"] > delivery["upload_successes"] > 0 bundle = telemetry.validate_local_bundle() assert bundle["run_manifest"]["delivery"] == delivery - remote_manifest = json.loads(api.files["runs/uk-smoke-5-42/run_manifest.json"]) + remote_manifest = json.loads( + _remote_files(emitter)["runs/uk-smoke-5-42/run_manifest.json"] + ) assert remote_manifest["delivery"]["read_back"] == "not_requested" - err = capsys.readouterr().err - assert "staging upload failed" in err - assert "do-not-record" not in err + assert "staging hand-over failed" in capsys.readouterr().err def test_a_failed_read_back_keeps_its_error_code_through_later_uploads(tmp_path): - class UploadOnlyApi(MemoryApi): - def hf_hub_download(self, **kwargs): - raise RuntimeError("unavailable") - - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=UploadOnlyApi(tmp_path), - upload_interval_seconds=0, - ) + emitter = FakeEmitterClient() + emitter.read_back_answer = { + "status": "failed", + "files": 3, + "mismatched_paths": [], + "error_code": "REPOSITORY_UNAVAILABLE", + } + telemetry, _ = _remote_recorder(tmp_path, emitter) telemetry.complete() with pytest.raises(StagingReadBackError): telemetry.verify_remote() @@ -870,15 +929,8 @@ def test_canonical_version_3_fixtures_are_reproducible(): ) -def test_remote_read_back_downloads_every_run_scoped_file(tmp_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - ) +def test_remote_read_back_covers_every_run_scoped_file(tmp_path): + telemetry, emitter = _remote_recorder(tmp_path) diagnostic = tmp_path / "aggregate.json" diagnostic.write_text(json.dumps({"target_count": 3})) telemetry.add_artifact( @@ -901,8 +953,11 @@ def test_remote_read_back_downloads_every_run_scoped_file(tmp_path): telemetry.verify_remote() + # The emitter compares each file it committed for the run with the Hub. expected = {remote for _, remote in telemetry._upload_paths()} - assert set(api.downloaded) == expected + assert set(_remote_files(emitter)) == expected + assert emitter.committed_paths(UK_STAGING, "uk-smoke-5-42") == expected + assert telemetry.delivery_summary["read_back"] == "passed" @pytest.mark.parametrize( @@ -914,13 +969,8 @@ def test_remote_read_back_downloads_every_run_scoped_file(tmp_path): ], ) def test_remote_read_back_rejects_changed_declared_file(tmp_path, corrupt_path): - api = MemoryApi(tmp_path) - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, + telemetry, _ = _remote_recorder( + tmp_path, _AlteringEmitter(corrupt_path, lambda data: b"{}\n") ) diagnostic = tmp_path / "aggregate.json" diagnostic.write_text(json.dumps({"target_count": 3})) @@ -941,15 +991,8 @@ def test_remote_read_back_rejects_changed_declared_file(tmp_path, corrupt_path): } ) telemetry.complete() - download = telemetry._transport.download - - def altered_download(path_in_repo): - data = download(path_in_repo) - return b"{}\n" if path_in_repo == corrupt_path else data - - telemetry._transport.download = altered_download - with pytest.raises(StagingReadBackError, match="does not match local"): + with pytest.raises(StagingReadBackError, match=f"differ.*{corrupt_path}"): telemetry.verify_remote() assert telemetry.delivery_summary["read_back"] == "failed" @@ -968,22 +1011,14 @@ def test_version_2_storage_prefix_is_fixed_to_runs(tmp_path): def test_version_2_accepts_explicit_configuration_for_another_country(tmp_path): repo_id = "example/populace-ca-staging" - api = MemoryApi(tmp_path, repo_id=repo_id) - telemetry = _recorder( - tmp_path, - country_code="CA", - delivery_mode="local_and_remote", - repo_id=repo_id, - api=api, - upload_interval_seconds=0, - ) + telemetry, emitter = _remote_recorder(tmp_path, country_code="CA", repo_id=repo_id) telemetry.complete() manifest = telemetry.validate_local_bundle()["run_manifest"] assert manifest["country_code"] == "CA" assert manifest["delivery"]["configured_repository"] == repo_id - assert api.files + assert _remote_files(emitter, repo_id) def test_version_2_cli_uses_country_owned_repository_configuration(monkeypatch): @@ -1257,81 +1292,57 @@ def whoami(self): ) -class _RateLimitedApi(MemoryApi): - """Fail the next ``failures_left`` writes, as a rate-limited Hub does.""" - - def __init__(self, root: Path) -> None: - super().__init__(root) - self.failures_left = 0 - self.calls = 0 - - def upload_file(self, **kwargs): - self.calls += 1 - if self.failures_left > 0: - self.failures_left -= 1 - raise RuntimeError("429 rate limited token=do-not-record") - super().upload_file(**kwargs) - - def _paused_remote_recorder(tmp_path): - api = _RateLimitedApi(tmp_path) - sleeps: list[float] = [] - telemetry = _recorder( - tmp_path, - delivery_mode="local_and_remote", - repo_id="policyengine/populace-uk-staging", - api=api, - upload_interval_seconds=0, - sleep=sleeps.append, - ) + emitter = FakeEmitterClient(accept_run_files=False) + telemetry, _ = _remote_recorder(tmp_path, emitter) telemetry.set_sample(_sample()) - # Three consecutive failures pause remote writes for the rest of the run. - api.failures_left = 3 - telemetry.stage("calibrating", force_upload=True) + # Three consecutive hand-overs the emitter does not accept pause the + # run's hand-overs until its final state. + for stage in ("input_verification", "sampling", "calibrating"): + telemetry.stage(stage, force_upload=True) assert telemetry.delivery_summary["last_error_code"] == "UPLOAD_FAILED" - calls_paused = api.calls + requests_paused = len(emitter.run_file_requests) telemetry.stage("diagnostics", force_upload=True) - assert api.calls == calls_paused - return telemetry, api, sleeps + assert len(emitter.run_file_requests) == requests_paused == 3 + return telemetry, emitter -def test_completion_flushes_the_terminal_state_after_paused_uploads(tmp_path): +def test_completion_hands_over_the_final_state_after_paused_hand_overs(tmp_path): """The v20 last-mile gap: a paused run left its remote copy 'running'.""" - telemetry, api, sleeps = _paused_remote_recorder(tmp_path) - # The first terminal attempt meets the limit again; the second, after a - # backed-off wait, lands. - api.failures_left = 3 + telemetry, emitter = _paused_remote_recorder(tmp_path) + emitter.accept_run_files = True telemetry.complete() - assert sleeps == [15.0] + + remote = _remote_files(emitter) prefix = telemetry.repo_run_prefix - assert json.loads(api.files[f"{prefix}/progress.json"])["status"] == "completed" - assert {f"{prefix}/run_manifest.json", f"{prefix}/events.ndjson"} <= set(api.files) + assert json.loads(remote[f"{prefix}/progress.json"])["status"] == "completed" + assert {f"{prefix}/run_manifest.json", f"{prefix}/events.ndjson"} <= set(remote) + assert emitter.run_file_requests[-2].flush is True delivery = telemetry.delivery_summary assert delivery["last_error_code"] is None assert delivery["upload_successes"] >= 3 assert delivery["upload_attempts"] > delivery["upload_successes"] -def test_failure_flushes_the_terminal_state_after_paused_uploads(tmp_path): - telemetry, api, sleeps = _paused_remote_recorder(tmp_path) +def test_failure_hands_over_the_final_state_after_paused_hand_overs(tmp_path): + telemetry, emitter = _paused_remote_recorder(tmp_path) + emitter.accept_run_files = True telemetry.fail(RuntimeError("solver exploded")) - assert sleeps == [] prefix = telemetry.repo_run_prefix - assert json.loads(api.files[f"{prefix}/progress.json"])["status"] == "failed" + remote = _remote_files(emitter) + assert json.loads(remote[f"{prefix}/progress.json"])["status"] == "failed" assert telemetry.delivery_summary["last_error_code"] is None -def test_terminal_flush_gives_up_after_bounded_attempts(tmp_path, capsys): - telemetry, api, sleeps = _paused_remote_recorder(tmp_path) - api.failures_left = 100 +def test_a_final_state_the_emitter_does_not_accept_stays_local(tmp_path, capsys): + telemetry, emitter = _paused_remote_recorder(tmp_path) telemetry.complete() - assert sleeps == [15.0, 60.0] - assert telemetry.repo_run_prefix + "/progress.json" not in api.files + assert len(emitter.run_file_requests) == 4 + assert telemetry.repo_run_prefix + "/progress.json" not in _remote_files(emitter) delivery = telemetry.delivery_summary assert delivery["last_error_code"] == "UPLOAD_FAILED" err = capsys.readouterr().err - assert "terminal state did not reach" in err - assert "do-not-record" not in err - # The local bundle is complete whatever the Hub did. + assert "final state was not handed over" in err + # The local bundle is complete whatever the emitter did. assert telemetry.validate_local_bundle()["progress"]["status"] == "completed" diff --git a/packages/microcosm-build/tests/engine_free/shared/test_transport_composed_graph.py b/packages/microcosm-build/tests/engine_free/shared/test_transport_composed_graph.py index 41a8df7c16..e69a0f83c4 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_transport_composed_graph.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_transport_composed_graph.py @@ -2408,7 +2408,7 @@ def test_composition_refuses_a_supplied_interval_document_from_another_profile() _prepare_node(spec, row, {"index": "low"}, interval_knobs=None) -def test_declared_scenarios_scale_national_cuts_with_their_own_factor(): +def test_declared_scenarios_scale_the_standin_cuts_with_their_own_factor(): from fractions import Fraction spec = load_transport_spec("nz") @@ -2799,7 +2799,9 @@ def test_packaged_spec_refuses_with_every_activation_gap_named(): compose_transport_graph(spec, config) -def test_packaged_spec_refuses_before_reading_any_source(tmp_path): +def test_packaged_spec_refuses_before_reading_any_source(tmp_path, monkeypatch): + # Inside the packaged factors' validity, so activation decides the refusal. + monkeypatch.setattr(cli_module, "_today", lambda: date(2026, 10, 24)) missing = tmp_path / "absent" with pytest.raises(ValueError, match="not activated"): prepare_transport_build( @@ -3527,7 +3529,11 @@ def counted(context): assert calls == ["nz.create", "nz.create"] -def test_prepare_does_not_create_inventory_store_before_activation(tmp_path): +def test_prepare_does_not_create_inventory_store_before_activation( + tmp_path, monkeypatch +): + # Inside the packaged factors' validity, so activation decides the refusal. + monkeypatch.setattr(cli_module, "_today", lambda: date(2026, 10, 24)) inventory = tmp_path / "inventory" with pytest.raises(ValueError, match="not activated"): prepare_transport_build( diff --git a/packages/microcosm-build/tests/engine_free/shared/test_transport_evidence_kernels.py b/packages/microcosm-build/tests/engine_free/shared/test_transport_evidence_kernels.py index f553ed2894..07b9afe281 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_transport_evidence_kernels.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_transport_evidence_kernels.py @@ -1309,6 +1309,22 @@ def test_a_valid_relation_input_is_no_check_problem(self) -> None: assert absent["check"] == [] assert absent["modules"][0]["gap"] == ["Family.toy_member_income"] + def test_relation_columns_on_another_entitys_slice_are_a_gap(self) -> None: + # S1: the partition reads a relation's columns from the person slice + # only; the same columns on the household or family slice do not count. + relation = {**_TOY_RELATION, "role_column": "role", "roles": ["head"]} + for entity in ("household", "family"): + row = self._partition( + {"person": frozenset(), entity: frozenset({"member_income", "role"})}, + relations=[relation], + ) + assert row["relation"] == [] + assert row["gap"] == ["Family.toy_member_income"] + assert row["relation_missing"] == [ + "Family.toy_member_income: person.member_income", + "Family.toy_member_income: person.role", + ] + # --------------------------------------------------------------------------- # Relation inputs on a real AxiomEngine (S1, S3, S4) @@ -1458,6 +1474,19 @@ def test_the_engine_partition_adds_each_declared_relation_input( "Family": ("toy_member_income",) } + def test_a_relation_on_an_unmapped_root_entity_is_refused(self, tmp_path) -> None: + # S1: entity_names maps no engine entity for the manifest's + # root_entity (family), so engine_root_inputs refuses the binding. + engine = _fake_axiom(tmp_path / "m.yaml") + row = {"id": "b", "relations": [_TOY_RELATION]} + names = {"person": "Person", "household": "Household"} + with pytest.raises( + ValueError, + match=r"rules binding 'b' relates 'toy_member_income' on 'family', " + r"which entity_names does not map\.", + ): + evidence_kernels.engine_root_inputs(engine, row, names) + def test_a_present_column_is_one_relation_row(self, tmp_path) -> None: document = self._run(tmp_path, _TOY_RELATION, {"member_income": np.ones(3)}) (row,) = document["modules"] @@ -2872,6 +2901,30 @@ def test_the_rulespec_tree_is_no_external_source(self) -> None: assert row["class"] == "derived" assert [s["column"] for s in row["sources"]] == ["age"] + def test_a_rulespec_name_with_another_codec_is_uncovered(self) -> None: + # C1: the RuleSpec tree is matched on its codec. A source named like + # the tree but carrying another codec is an external source. + spec = _impute_spec(inputs=["age"], sources=("rulespec_nz",)) + spec["resources"]["transport_graph"]["sources"].append( + {"name": "rulespec_nz", "codec": "toy-wage-table-v1"} + ) + roster = compose._support_roster(spec) + (row,) = [r for r in roster["columns"] if r["column"] == "imputed_wage"] + assert row["class"] == "derived" + (external,) = [s for s in row["sources"] if s["column"] == "rulespec_nz"] + assert external["class"] == "uncovered" + assert "toy-wage-table-v1" in external["reason"] + donor, _ = _donor_and_terminal() + terminal = _support_frame({("person", "imputed_wage"): [1e9] * 6}) + ranges, bounds, rn, bn = _run_support(roster, donor, terminal) + outcome = _support_outcome(ranges, bounds, rn, bn, terminal) + assert outcome.status is GateStatus.FAILED + assert any( + "person.imputed_wage (derived): sources without coverage: " + "source.rulespec_nz (uncovered)" in line + for line in outcome.result.failures + ), outcome.result.failures + class TestDeclaredStructuralRows: def test_a_row_no_node_writes_is_refused(self, nz_composed) -> None: @@ -3239,6 +3292,35 @@ def test_derived_pending_and_uncovered_rows_fail_with_their_reasons(self) -> Non ) assert any(line.startswith("family.family_flag (uncovered)") for line in lines) + def test_a_forged_derived_row_without_sources_fails(self) -> None: + # C1: the roster classes a sourceless row uncovered, so only a forged + # artifact carries a derived row with no sources; the gate fails it. + donor, terminal = _donor_and_terminal() + more = [ + { + "entity": "person", + "column": "flag", + "class": "derived", + "sources": [{"entity": "person", "column": "age", "class": "copied"}], + "reason": "Sources are walked per node.", + } + ] + ranges, bounds, rn, bn = _run_support(_toy_roster(more=more), donor, terminal) + structural = [("household", "source_household_id")] + honest = _support_outcome(ranges, bounds, rn, bn, terminal, structural) + assert not any("person.flag" in line for line in honest.result.failures) + + def empty_sources(document) -> None: + (row,) = [r for r in document["columns"] if r["column"] == "flag"] + row["sources"] = [] + + forged = _forged(bounds, empty_sources) + outcome = _support_outcome(ranges, forged, rn, bn, terminal, structural) + assert outcome.status is GateStatus.FAILED + assert ( + "person.flag (derived): the walk reached no source, so nothing covers it." + ) in outcome.result.failures + def test_a_rank_only_row_is_refused_with_the_reserved_message(self) -> None: donor, terminal = _donor_and_terminal() more = [{"entity": "person", "column": "pension_rank", "class": "rank_only"}] @@ -3580,6 +3662,19 @@ def test_a_missing_component_column_is_refused_by_name(self) -> None: with pytest.raises(ValueError, match=r"component column person\.None"): self._run((5.0,) * 6, ["a"] * 6, roster=self._roster(None)) + def test_an_aggregate_total_is_checked_against_its_own_component(self) -> None: + # E2: household totals (members 0-2, 3-4, 5) are checked against the + # household's component. A total of 150 in a lies inside b's bands, + # so each of the household's three member rows counts as outside. + roster = self._roster() + params = roster["columns"][0]["producer_params"] + params["aggregate_entity"] = "household" + codes = ["a", "a", "a", "b", "b", "b"] + row = self._run((50.0, 50.0, 50.0, 60.0, 60.0, 150.0), codes, roster=roster) + assert row["records_outside"] == 3 + inside = self._run((3.0, 3.0, 3.0, 60.0, 60.0, 150.0), codes, roster=roster) + assert inside["records_outside"] == 0 + class TestNormalizedSupport: def test_differential_bounds_equal_money_normalize_outputs(self, tmp_path) -> None: diff --git a/packages/microcosm-build/tests/engine_free/shared/test_transport_holdout_separation.py b/packages/microcosm-build/tests/engine_free/shared/test_transport_holdout_separation.py new file mode 100644 index 0000000000..b50237395a --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/shared/test_transport_holdout_separation.py @@ -0,0 +1,602 @@ +"""Declared holdout facts stay out of calibration, for every country. + +A ``holdout_references`` row tests the calibrated model against a fact it +never saw. Composition (``validate_transport_activation`` in +``microcosm.build.transport.compose``) refuses any row of another reference +document, mass included, whose ``measure`` equals a holdout row's measure on +any entity, and ``_precalibration_stages`` refuses a pre-calibration stage +output with a holdout's measure on any entity. + +Invariants: + +- Examples: a calibration row on the holdout's column, the same measure on + another entity, a pre-calibration row, a mass row and a pre-calibration + stage output on another entity each refuse with both rows named. +- No packaged spec (AM, BE, NZ, UK, US) trips the guard, over every packaged + reference document. Every packaged spec refuses activation today on missing + bindings; that refusal holds no guard line, and the guard leaves it + unchanged. A separate test runs the stage guard on each country's real + pre-calibration stages. +- Branches: the guard reads the mass document when no node selects it, + counts a parked holdout as a holdout, and reads profile-selected views. +- A non-text ``measure`` on any row raises no ``TypeError``; activation's + outcome equals its outcome without the guard. +- Row-level holdouts stay: a spec that declares no ``holdout_references`` + rows composes whatever its rows measure. +- Property: on random reference documents drawn from a small pool of + measures and entities, activation refuses for holdout separation exactly + when a non-holdout row shares a measure with a holdout row. +- Differential: Belgium's package-test helper ``_separation_violations`` + (``test_be_target_references.py``) and the guard agree, on BE's packaged + documents and on generated documents. +""" + +from __future__ import annotations + +import copy +import importlib.util +import re +import sys +from importlib.resources import files + +import pytest +from hypothesis import HealthCheck, example, given, settings +from hypothesis import strategies as st + +from microcosm.build.holdout import rotated_folds +from microcosm.build.transport import compose as compose_module +from microcosm.build.transport.compose import ( + compose_transport_graph, + load_transport_spec, + validate_transport_activation, +) +from test_support.microcosm_build.transport_composed import ( + PROGRAMS, + make_composed_fixture, +) +from test_support.microcosm_build.transport_graph import reference_row +from test_support.paths import paths_for + +PACKAGED_COUNTRIES = ("am", "be", "nz", "uk", "us") +SEPARATION = "holdout separation" +#: Belgium's three reference sets and the documents that hold them. +BE_SETS = { + "calibration": "target_references", + "precal": "precal_references", + "holdout": "holdout_references", +} +_BE_TEST = ( + paths_for("microcosm-build").package + / "tests/engine_free/shared/test_be_target_references.py" +) + + +def _be_test_module(): + """Belgium's package test, imported by path so its helper is the original.""" + + name = "_holdout_separation_be_reference" + if name not in sys.modules: + spec = importlib.util.spec_from_file_location(name, _BE_TEST) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return sys.modules[name] + + +# Belgium's module defines its own ``@given`` tests. Importing it inside a +# running ``@given`` makes Hypothesis refuse the nesting, so import it before +# any test runs, whatever order pytest picks. +_be_test_module() + + +@pytest.fixture(scope="module") +def toy(tmp_path_factory): + """The composed toy package, without unrelated gate binding identities.""" + from microcosm.build.transport import registry as registry_module + + with pytest.MonkeyPatch.context() as patch: + patch.setattr(registry_module, "register_gate_kernel", lambda *args: None) + return make_composed_fixture(tmp_path_factory.mktemp("holdout-separation")) + + +def _rows(spec, resource): + return spec["resources"][resource]["target_references"] + + +def _activation_error(spec): + try: + validate_transport_activation(spec) + except ValueError as error: + return str(error) + return None + + +def _separation_gaps(message): + if message is None: + return [] + return [ + gap.strip() + for gap in message.removeprefix("Transport spec is not activated: ") + .removesuffix(".") + .split("; ") + if gap.strip().startswith(SEPARATION) + ] + + +def test_toy_composes_with_its_holdout(toy): + holdout = _rows(toy.spec, "holdout_references") + assert [(row["entity"], row["measure"]) for row in holdout] == [ + ("person", "receives_main") + ] + assert len(compose_transport_graph(toy.spec, toy.config).nodes) == 27 + + +@pytest.mark.parametrize( + ("resource", "entity"), + [ + ("target_references", "person"), + ("target_references", "household"), + ("precal_references", "person"), + ("precal_references", "household"), + ("mass_references", "person"), + ("mass_references", "household"), + ], +) +def test_row_measuring_a_holdout_refuses_naming_both_rows(toy, resource, entity): + """The triage's reproductions, plus pre-calibration and mass variants.""" + + spec = copy.deepcopy(toy.spec) + _rows(spec, resource).append( + reference_row("toy_leak", entity=entity, measure="receives_main") + ) + with pytest.raises(ValueError) as refused: + compose_transport_graph(spec, toy.config) + assert _separation_gaps(str(refused.value)) == [ + f"{SEPARATION}: {resource}.toy_leak ({entity}, receives_main) measures " + "the concept of holdout_references.toy_holdout_receipts " + "(person, receives_main)" + ] + + +def _family_stage(spec): + binding = next( + row + for row in spec["resources"]["axiom_rules_bindings"]["bindings"] + if row["id"] == "family_housing" + ) + assert binding["entity"] == "family" + assert "toy_family_weekly_amount" in PROGRAMS["family_housing"]["outputs"] + spec["resources"]["precalibration_stages"] = { + "schema_version": 1, + "stages": [ + { + "id": "toy.precal.family_housing", + "rules_binding": "family_housing", + "rulespec_path": binding["rulespec_path"], + "outputs": [ + { + "entity": "family", + "column": "toy_family_weekly_amount", + "purpose": "calibration_measure", + } + ], + "citation": "Synthetic pre-calibration method card.", + } + ], + } + return spec + + +@pytest.mark.parametrize("holdout_entity", ["family", "person", "household"]) +def test_stage_output_measuring_a_holdout_refuses_on_any_entity(toy, holdout_entity): + spec = _family_stage(copy.deepcopy(toy.spec)) + assert set(compose_module._precalibration_stages(spec)) == {"family_housing"} + holdout = _rows(spec, "holdout_references")[0] + holdout.update(entity=holdout_entity, measure="toy_family_weekly_amount") + with pytest.raises(ValueError) as refused: + compose_module._precalibration_stages(spec) + assert str(refused.value) == ( + "precalibration_stages output is a holdout measure: stage " + "'toy.precal.family_housing' output (family, toy_family_weekly_amount) " + "measures the concept of holdout_references.toy_holdout_receipts " + f"({holdout_entity}, toy_family_weekly_amount)." + ) + + +def _packaged_reference_documents(country): + spec = load_transport_spec(country) + return spec, [ + (name, document) + for name, document in sorted(spec["resources"].items()) + if isinstance(document, dict) and "target_references" in document + ] + + +def test_packaged_country_list_is_complete(): + root = files("microcosm.build") + packaged = sorted( + entry.name + for entry in root.iterdir() + if entry.is_dir() + and any(child.name.endswith("references.json") for child in entry.iterdir()) + ) + assert packaged == list(PACKAGED_COUNTRIES) + + +@pytest.mark.parametrize("country", PACKAGED_COUNTRIES) +def test_packaged_reference_documents_pass_the_guard(country): + """The triage's scan, over every packaged reference document.""" + + spec, documents = _packaged_reference_documents(country) + assert documents + assert list(compose_module._holdout_separation_gaps(documents)) == [] + assert SEPARATION not in (_activation_error(spec) or "") + declares = "holdout_references" in spec["resources"] + assert declares == (country in {"be", "nz"}) + if declares: + holdout = {row["measure"] for row in _rows(spec, "holdout_references")} + others = { + row["measure"] + for name, document in documents + if name != "holdout_references" + for row in document["target_references"] + } + assert holdout and not holdout & others + + +@pytest.mark.parametrize("country", PACKAGED_COUNTRIES) +def test_packaged_activation_outcome_is_unchanged(country, monkeypatch): + """The guard adds no line to any packaged spec's activation refusal. + + Every packaged spec refuses activation today on missing bindings, and + ``validate_transport_activation`` joins the guard's gaps into that same + refusal, so the refusal holds no guard line and equals the refusal with + the guard patched out. ``test_packaged_precalibration_stages_pass_the_stage_guard`` + covers the stage guard, which activation's refusal never reaches. + """ + + spec, _ = _packaged_reference_documents(country) + guarded = _activation_error(spec) + monkeypatch.setattr( + compose_module, "_holdout_separation_gaps", lambda documents: iter(()) + ) + assert _activation_error(spec) == guarded + assert _separation_gaps(guarded) == [] + + +@pytest.mark.parametrize("country", PACKAGED_COUNTRIES) +def test_packaged_precalibration_stages_pass_the_stage_guard(country): + """Each country's real stages pass the measure-keyed stage guard. + + Activation refuses every packaged spec today, so composition never + reaches ``_precalibration_stages`` with real stages; this calls it + directly. NZ is the one packaged spec with both stages and holdouts. + """ + + stages = compose_module._precalibration_stages(load_transport_spec(country)) + expected = {"income_tax_schedule_1", "main_benefits_rates", "nz_super"} + assert set(stages) == (expected if country == "nz" else set()) + + +def test_nz_stage_output_on_a_holdout_measure_refuses_across_entities(): + """The control: an NZ ``person`` stage output against a ``family`` holdout. + + An entity-keyed stage guard lets this input through. + """ + + spec = copy.deepcopy(load_transport_spec("nz")) + holdout = _rows(spec, "holdout_references")[0] + assert holdout["entity"] == "family" + holdout["measure"] = "jobseeker_support_annual_gross" + with pytest.raises(ValueError) as refused: + compose_module._precalibration_stages(spec) + assert str(refused.value).startswith( + "precalibration_stages output is a holdout measure: " + ) + assert "(person, jobseeker_support_annual_gross)" in str(refused.value) + assert f"holdout_references.{holdout['name']} (family, " in str(refused.value) + + +@pytest.mark.parametrize("measure", [["receives_main"], {"a": 1}], ids=["list", "dict"]) +@pytest.mark.parametrize( + "resource", ["target_references", "precal_references", "holdout_references"] +) +def test_non_text_measure_keeps_activation_outcome(toy, monkeypatch, resource, measure): + """A list or dict ``measure`` raises no ``TypeError`` from the guard. + + On a non-holdout row the guard skips the row, as it skips a non-text + holdout measure; activation's outcome equals its outcome without the + guard. ``_activation_error`` catches only ``ValueError``, so a + ``TypeError`` fails the test. + """ + + spec = copy.deepcopy(toy.spec) + row = reference_row("toy_odd", entity="household", measure="receives_main") + row["measure"] = copy.deepcopy(measure) + _rows(spec, resource).append(row) + guarded = _activation_error(spec) + monkeypatch.setattr( + compose_module, "_holdout_separation_gaps", lambda documents: iter(()) + ) + assert _activation_error(spec) == guarded + assert _separation_gaps(guarded) == [] + + +def _leak_gap(resource, name="toy_leak", entity="household"): + return [ + f"{SEPARATION}: {resource}.{name} ({entity}, receives_main) measures " + "the concept of holdout_references.toy_holdout_receipts " + "(person, receives_main)" + ] + + +def test_unselected_mass_document_joins_the_guard(toy): + """With no node selecting ``mass_references``, its rows still count.""" + + spec = copy.deepcopy(toy.spec) + params = spec["resources"]["transport_graph"]["nodes"][0]["params"] + del params["mass_reference"], params["mass_reference_sha256"] + _rows(spec, "mass_references").append( + reference_row("toy_leak", entity="household", measure="receives_main") + ) + assert _separation_gaps(_activation_error(spec)) == _leak_gap("mass_references") + + +def test_parked_holdout_still_guards(toy): + """A ``pending`` holdout, exempted as activation asks, still holds out.""" + + spec = copy.deepcopy(toy.spec) + holdout = _rows(spec, "holdout_references")[0] + holdout["metadata"]["activation_status"] = "pending" + spec["resources"]["reference_selection"] = { + "schema_version": 1, + "resources": { + "holdout_references": { + "exempt": [ + { + "name": holdout["name"], + "activation_status": "pending", + "reason": "Awaiting producer.", + } + ] + } + }, + } + assert _activation_error(spec) is None + _rows(spec, "target_references").append( + reference_row("toy_leak", entity="household", measure="receives_main") + ) + assert _separation_gaps(_activation_error(spec)) == _leak_gap("target_references") + + +def test_profile_selected_views_reach_the_guard(toy, monkeypatch): + """A selected view's rows reach the guard. + + No real reference profile can do this today: ``resolve_reference_profiles`` + keeps the base rows by name and its transformations never write + ``measure``, so every measure a view holds already sits in the default + view. This test pins one thing: views selected with a scenario's knobs + reach the guard. It patches ``transport_resource`` so a selected view + carries a row on the holdout's measure. + """ + + spec = copy.deepcopy(toy.spec) + reader = { + "id": "reader-case", + "kernel": "targets.compile@1", + "population": "open", + "params": { + "country": "xx", + "references": {"resource": "target_references", "encoding": "json"}, + "references_sha256": { + "resource": "target_references", + "encoding": "sha256", + }, + }, + } + spec["resources"]["scenarios"]["scenarios"] = [ + {"id": "case", "tier": "calibration", "knobs": {}, "nodes": [reader]} + ] + spec["resources"]["entitlement_graph"] = { + "schema_version": 1, + "nodes": [], + "variant_nodes": [], + "scenario_gap": "gap-{scenario}", + "variant_gap": "gap-{variant}", + } + assert _activation_error(spec) is None + original = compose_module.transport_resource + selected = [] + + def with_view_leak(spec, name, *, profile_selection=None): + document = original(spec, name, profile_selection=profile_selection) + if profile_selection is None or compose_module._stem(name) != ( + "target_references" + ): + return document + selected.append(name) + leak = reference_row( + "toy_view_leak", entity="household", measure="receives_main" + ) + return { + **document, + "target_references": [*document["target_references"], leak], + } + + monkeypatch.setattr(compose_module, "transport_resource", with_view_leak) + assert _separation_gaps(_activation_error(spec)) == _leak_gap( + "target_references", "toy_view_leak" + ) + assert selected + + +def test_specs_without_holdout_references_keep_row_level_holdouts(toy): + """The UK's rotated folds and the US's district blocks stay allowed. + + Neither country declares ``holdout_references``; each holds out rows of + measures it calibrates elsewhere. A fold document under any other name, + and an empty ``holdout_references``, leave every row free. + """ + + spec = copy.deepcopy(toy.spec) + calibration = _rows(spec, "target_references") + calibration.append( + reference_row("toy_main_calibrated", entity="person", measure="receives_main") + ) + rows = [ + reference_row(f"toy_fold_{index}", entity="person", measure="receives_main") + for index in range(5) + ] + folds = rotated_folds(len(rows), n_folds=2) + held = [rows[int(index)] for index in folds[0]] + spec["resources"]["holdout_fold_references"] = { + **spec["resources"]["holdout_references"], + "target_references": held, + } + spec["resources"]["holdout_references"]["target_references"] = [] + assert _separation_gaps(_activation_error(spec)) == [] + assert len(compose_transport_graph(spec, toy.config).nodes) == 27 + # The same rows under the declared name refuse. + spec["resources"]["holdout_references"]["target_references"] = held + assert len(_separation_gaps(_activation_error(spec))) == len(held) + + +_MEASURES = ("receives_main", "age", "person_count", "rent") +_ENTITIES = ("person", "household", "family") +_RESOURCES = ( + "target_references", + "precal_references", + "mass_references", + "holdout_references", +) + + +@st.composite +def _documents(draw, resources=_RESOURCES): + documents = {} + index = 0 + for resource in resources: + rows = [] + for _ in range(draw(st.integers(0, 3))): + rows.append( + reference_row( + f"toy_row_{index}", + entity=draw(st.sampled_from(_ENTITIES)), + measure=draw(st.sampled_from(_MEASURES)), + ) + ) + index += 1 + documents[resource] = rows + return documents + + +def _expected_gaps(documents): + """An independent oracle: every (other row, holdout row) measure pair.""" + + return sorted( + (resource, row["name"], holdout["name"]) + for resource, rows in documents.items() + if resource != "holdout_references" + for row in rows + for holdout in documents["holdout_references"] + if row["measure"] == holdout["measure"] + ) + + +_GAP = re.compile( + rf"{SEPARATION}: (\w+)\.(\w+) \(\w+, \w+\) measures the concept of " + r"holdout_references\.(\w+) \(\w+, \w+\)" +) + + +@settings( + max_examples=40, + deadline=None, + suppress_health_check=[HealthCheck.function_scoped_fixture], +) +@example( + documents={ + "target_references": [ + reference_row("toy_row_0", entity="household", measure="receives_main") + ], + "precal_references": [], + "mass_references": [], + "holdout_references": [ + reference_row("toy_row_1", entity="person", measure="receives_main") + ], + } +) +@given(documents=_documents()) +def test_activation_refuses_exactly_on_a_shared_measure(toy, documents): + spec = copy.deepcopy(toy.spec) + for resource, rows in documents.items(): + spec["resources"][resource]["target_references"] = rows + gaps = _separation_gaps(_activation_error(spec)) + found = sorted(_GAP.fullmatch(gap).groups() for gap in gaps) + assert found == _expected_gaps(documents) + + +def _be_documents(): + spec = load_transport_spec("be") + return { + reference_set: copy.deepcopy(spec["resources"][resource]) + for reference_set, resource in BE_SETS.items() + } + + +def _belgian_measures(documents): + return sorted( + { + measure + for kind, measure in _be_test_module()._separation_violations(documents) + if kind == "holdout_measure" + } + ) + + +_GAP_MEASURE = re.compile(rf"{SEPARATION}: \S+ \(\w+, (\w+)\) measures ") + + +def _guard_measures(documents): + views = [(BE_SETS[name], document) for name, document in documents.items()] + return sorted( + { + _GAP_MEASURE.match(gap).group(1) + for gap in compose_module._holdout_separation_gaps(views) + } + ) + + +def test_belgium_helper_and_guard_agree_on_packaged_documents(): + documents = _be_documents() + assert _belgian_measures(documents) == _guard_measures(documents) == [] + assert _be_test_module()._separation_violations(documents) == [] + + +@settings(max_examples=60, deadline=None) +@given(documents=_documents(tuple(BE_SETS.values()))) +def test_belgium_helper_and_guard_agree_on_generated_documents(documents): + """Generated rows reuse one packaged BE row for every field but the key.""" + + packaged = _be_documents() + template = packaged["calibration"]["target_references"][0] + generated = {} + for reference_set, resource in BE_SETS.items(): + rows = [] + for row in documents[resource]: + built = copy.deepcopy(template) + built.update(name=row["name"], entity=row["entity"], measure=row["measure"]) + built["metadata"]["reference_set"] = reference_set + rows.append(built) + generated[reference_set] = { + **packaged[reference_set], + "target_references": rows, + } + assert _belgian_measures(generated) == _guard_measures(generated) + + +def test_belgium_helper_is_measure_keyed(): + """Pin the premise: Belgium's helper keys holdout separation on the measure.""" + + source = _BE_TEST.read_text() + assert 'measures.setdefault(row["measure"], set()).add(reference_set)' in source diff --git a/packages/microcosm-build/tests/engine_free/shared/test_transport_population_kernels.py b/packages/microcosm-build/tests/engine_free/shared/test_transport_population_kernels.py index e2249440bb..56fa0f1544 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_transport_population_kernels.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_transport_population_kernels.py @@ -587,6 +587,82 @@ def test_quantile_map_refuses_absent_facts_and_mismatched_component_coverage( run_population(tmp_path / "run", sources, graph=graph) +def _one_sex_per_household(tables): + """Give each household one sex flag, with both flags across the donor.""" + person = tables["person"] + person["is_female"] = person.groupby("person_household_id").ngroup() % 2 == 0 + + +def _one_mixed_household(tables): + """Give the first household one sex flag and leave the others as drawn.""" + person = tables["person"] + first = person["person_household_id"] == person["person_household_id"].iloc[0] + person.loc[first, "is_female"] = False + + +@pytest.mark.parametrize("shape", ["bare", "component"]) +@pytest.mark.parametrize("mixed", [True, "one_household", False]) +def test_aggregate_map_refuses_members_with_two_component_codes(tmp_path, mixed, shape): + """An aggregate maps as one unit only when its members share one code. + + Under component bands this check is the only guard: each component's map + would see a split household as a partial aggregate. The support kernel + judges each member's aggregate total by that member's own code, so it + relies on this refusal too. + """ + sources = write_population_sources( + tmp_path / "sources", + band_entity="household", + edit_tables={ + True: None, + "one_household": _one_mixed_household, + False: _one_sex_per_household, + }[mixed], + ) + direct, _ = direct_population(sources) + person = direct.table("person") + codes = person.groupby("person_household_id")["sex"].nunique() + assert bool((codes > 1).any()) == bool(mixed) + assert bool((codes > 1).all()) == (mixed is True) + assert person["sex"].nunique() == 2 + graph = population_graph( + sources, qmap_column="liquid_financial_assets", aggregate_entity="household" + ) + quantile = graph.node("nz.quantile") + params = {**quantile.params, "component_column": "sex"} + if shape == "component": + bands = json.loads(quantile.params["bands"])["bands"] + document = { + "components": [ + {"value": code, "bands": bands} + for code in sorted(person["sex"].unique().tolist()) + ] + } + params = { + **params, + "bands": canonical_text(document), + "bands_sha256": digest(document), + } + quantile = replace( + quantile, + inputs=(Slice("person", ("liquid_financial_assets", "sex")),), + params=params, + ) + graph = replace( + graph, + nodes=tuple( + quantile if node.id == quantile.id else node for node in graph.nodes + ), + ) + if mixed: + with pytest.raises( + NodeRejectedError, match="Aggregate members must repeat one component code" + ): + run_population(tmp_path / "run", sources, graph=graph) + else: + run_population(tmp_path / "run", sources, graph=graph) + + def test_create_runtime_rejects_a_missing_declared_column(tmp_path): sources = write_population_sources(tmp_path / "sources") graph = population_graph(sources, through="boundary") diff --git a/packages/microcosm-build/tests/engine_free/shared/test_transport_reference_selection.py b/packages/microcosm-build/tests/engine_free/shared/test_transport_reference_selection.py index 6f97aa9c78..847deb9946 100644 --- a/packages/microcosm-build/tests/engine_free/shared/test_transport_reference_selection.py +++ b/packages/microcosm-build/tests/engine_free/shared/test_transport_reference_selection.py @@ -48,13 +48,17 @@ CONFIG = compose.TransportGraphConfig({}, (Owned("person", "person_id", "int64"),)) -def _document(names=("used", "parked")): +#: A holdout measures its own concept, which no other reference document shares. +HOLDOUT_MEASURE = "holdout_indicator" + + +def _document(names=("used", "parked"), measure="person_count"): return reference_document( [ reference_row( name, entity="person", - measure="person_count", + measure=measure, activation_status="pending" if name == "parked" else "active", ) for name in names @@ -97,7 +101,7 @@ def _spec(*nodes): "scenarios": {"scenarios": []}, "precal_references": _document(("precal",)), "target_references": _document(), - "holdout_references": _document(("holdout",)), + "holdout_references": _document(("holdout",), HOLDOUT_MEASURE), "receipt_contract": { "receipts": { "seed_column": "seed", @@ -364,7 +368,7 @@ def test_nonexempt_placeholder_keeps_legacy_gap_message(): def test_absent_selection_preserves_complete_legacy_activation_gap_order(): spec = _spec() spec["resources"].pop("reference_selection") - spec["resources"]["holdout_references"] = _document(("parked",)) + spec["resources"]["holdout_references"] = _document(("parked",), HOLDOUT_MEASURE) spec["resources"]["precal_references"] = _document(("parked",)) # The assigned baseline already visits the reference-resource set in # sorted order, including mandatory resources selected by multiple params. @@ -577,17 +581,31 @@ def test_legacy_selection_path_changed_mutant_frozen_surface_params_and_keys( reference = next( row for row in document["target_references"] - if row["name"] == "spf_finances_pit_total" + if row["name"] == "statbel_population_by_region_sex_age__be1__male__a0_17" ) document["target_references"] = [reference] + selector = reference["ledger_selector"] fact = toy_fact(reference["name"], 3, entity=reference["entity"]) - fact["period"] = {"type": "tax_year", "value": reference["period"]} - fact["geography"]["id"] = country.upper() + fact["aggregate_fact_key"] = selector["aggregate_fact_key"] + fact["period"] = { + "type": selector["period_type"], + "value": selector["period_value"], + } + fact["geography"].update( + level=selector["geography_level"], + id=selector["geography_id"], + vintage=selector["geography_vintage"], + ) for section in ("source", "observed_measure"): - fact[section]["source_name"] = reference["ledger_selector"]["source_name"] - fact["observed_measure"]["source_measure_id"] = reference["ledger_selector"][ - "source_measure_id" - ] + fact[section]["source_name"] = selector["source_name"] + fact["observed_measure"]["source_measure_id"] = selector["source_measure_id"] + fact["observed_measure"]["source_concept"] = selector["source_concept"] + fact["layout"] = {"record_set_id": selector["record_set_id"]} + fact["dimensions"] = dict(selector["dimension_values"]) + fact["dimension_labels"] = {name: name for name in fact["dimensions"]} + fact["dimension_value_labels"] = { + name: {value: value} for name, value in fact["dimensions"].items() + } spec["resources"]["target_references"] = document facts = write_facts(tmp_path / "facts.jsonl", [fact]) legacy_targets = _legacy( diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_fit_weight_records_roster.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_fit_weight_records_roster.py new file mode 100644 index 0000000000..2fc979ec50 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_fit_weight_records_roster.py @@ -0,0 +1,69 @@ +"""Which UK stage transforms declare fit-weight records (microcosm#1428). + +The release-cut weights audit reads an empty list of fit-weight records as a +fitting stage that recorded nothing, and fails (``uk_weights_audit``). The ISA +subscriptions stage declared an empty tuple although it fits no model, and +every national certified after #1421 failed. This roster pins the stage +transforms that declare the hook, read from the source so it runs without +the engine: a new one must be reviewed, and either record each fit it makes +or declare nothing (the #1428 review, finding 3). +""" + +from __future__ import annotations + +import ast +from pathlib import Path + +from microcosm.build import uk_runtime + +#: The stage transforms that fit a model and record its weights. +FITTING_STAGE_TRANSFORMS = frozenset( + { + "etb_services.UKETBServicesStageTransform", + "etb_vat.UKETBVATStageTransform", + "lcfs_consumption.UKLCFSConsumptionStageTransform", + "nts_bus_travel.UKNTSBusTravelStageTransform", + "property_components.UKPropertyComponentsStageTransform", + "spi_spine.UKSPIIncomeSpineStageTransform", + "was_lisa.UKWASLISAStageTransform", + "was_wealth.UKWASWealthStageTransform", + } +) + + +def _declares_hook(node: ast.ClassDef) -> bool: + for item in node.body: + if ( + isinstance(item, ast.FunctionDef | ast.AsyncFunctionDef) + and item.name == "fit_weight_records" + ): + return True + if isinstance(item, ast.AnnAssign | ast.Assign) and "fit_weight_records" in { + target.id + for target in ( + [item.target] if isinstance(item, ast.AnnAssign) else item.targets + ) + if isinstance(target, ast.Name) + }: + return True + return False + + +def test_only_the_reviewed_stage_transforms_declare_fit_weight_records() -> None: + declared = set() + for path in sorted(Path(uk_runtime.__file__).parent.glob("*.py")): + tree = ast.parse(path.read_text(encoding="utf-8")) + for node in ast.walk(tree): + if ( + isinstance(node, ast.ClassDef) + and node.name.endswith("StageTransform") + and _declares_hook(node) + ): + declared.add(f"{path.stem}.{node.name}") + assert declared == FITTING_STAGE_TRANSFORMS + + +def test_the_isa_subscriptions_stage_declares_nothing() -> None: + assert "isa_subscriptions.UKISASubscriptionsStageTransform" not in ( + FITTING_STAGE_TRANSFORMS + ) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py index c2d144014b..b8bcaa6449 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_frs_spine.py @@ -400,13 +400,29 @@ def _fixture_tables() -> dict[str, list[dict[str, object]]]: "SERNUM": 1, "BENUNIT": 1, "PERSON": 1, + "PENTYPE": 1, "PENPAY": 10.0, "PTAMT": 2.0, "PTINC": 2, "POAMT": 3.0, "POINC": 2, "PENOTH": 0, - } + }, + # Income from a trust (PENTYPE 5) stays private pension income, + # where the engine's means tests read it; its part is stored for + # SPI Table 3.7's other income (microcosm#1428). + { + "SERNUM": 2, + "BENUNIT": 1, + "PERSON": 1, + "PENTYPE": 5, + "PENPAY": 6.0, + "PTAMT": 0.0, + "PTINC": 0, + "POAMT": 0.0, + "POINC": 0, + "PENOTH": 0, + }, ], "oddjob": [{"SERNUM": 1, "BENUNIT": 1, "PERSON": 1, "OJAMT": 4.0, "OJNOW": 1}], "accounts": [ @@ -437,8 +453,9 @@ def _fixture_tables() -> dict[str, list[dict[str, object]]]: "ACCTAX": 0, "INVTAX": 0, }, - # Other interest (microcosm#1418): an NS&I Direct Saver paid after - # tax and a gilt paid after tax, both grossed up at the basic rate. + # An NS&I Direct Saver paid after tax, deposit interest since + # microcosm#1428 (SPI Table 3.7 note 4), and a gilt paid after tax, + # other interest (microcosm#1418), both grossed up at the basic rate. { "SERNUM": 1, "BENUNIT": 1, @@ -1262,12 +1279,20 @@ def test_direct_person_mapping_values_are_ported(tmp_path: Path) -> None: assert adult["individual_savings_account_interest_income"] == pytest.approx( 1 * WEEKS_IN_YEAR ) - assert adult["savings_interest_income"] == pytest.approx(2.5 * WEEKS_IN_YEAR) + # The current account (2 x 1.25) and the NS&I Direct Saver (2 x 1.25), + # deposit interest since microcosm#1428 (SPI Table 3.7 note 4). + assert adult["savings_interest_income"] == pytest.approx(5.0 * WEEKS_IN_YEAR) assert "tax_free_savings_income" not in adult # The gilt is other interest, no longer a dividend (microcosm#1418). assert adult["dividend_income"] == pytest.approx(3 * WEEKS_IN_YEAR) - assert adult["other_investment_income"] == pytest.approx(7.5 * WEEKS_IN_YEAR) + assert adult["other_investment_income"] == pytest.approx(5.0 * WEEKS_IN_YEAR) + # Household 2's trust income stays private pension, where the engine's + # means tests and household income read it, and its part is stored as + # the descriptor SPI Table 3.7's other-income measure adds (microcosm#1428). assert other["other_investment_income"] == 0.0 + assert other["private_pension_income"] == pytest.approx(6.0 * WEEKS_IN_YEAR) + assert other["annuity_and_trust_income"] == pytest.approx(6.0 * WEEKS_IN_YEAR) + assert adult["annuity_and_trust_income"] == 0.0 # ROYYR1 2 only: CVPAY (1 a week) is rent the adult pays as a lodger # (rent_paid_as_lodger, pe-uk#2006), not their own income, and household 1 # does not sub-let. @@ -1579,6 +1604,21 @@ def test_frs_spine_refuses_an_adult_tab_without_alimony( build_uk_frs_spine_frame(tmp_path, stage=stage) +def test_frs_spine_refuses_a_pension_tab_without_pentype(tmp_path: Path) -> None: + """A vintage without PENTYPE refuses; it never reads every annuity and + trust payment as a pension (microcosm#1428).""" + + tables = _fixture_tables() + tables["pension"] = [ + {key: value for key, value in row.items() if key != "PENTYPE"} + for row in tables["pension"] + ] + stage = _write_fixture(tmp_path, tables) + + with pytest.raises(ValueError, match="PENTYPE"): + build_uk_frs_spine_frame(tmp_path, stage=stage) + + def test_frs_spine_refuses_an_adult_tab_without_sppadj(tmp_path: Path) -> None: """A vintage without SPPADJ refuses; it never sets nobody's paternity pay.""" @@ -3301,6 +3341,44 @@ def test_driver_refuses_synthetic_fixture_without_smoke(tmp_path: Path) -> None: ) +def test_remote_spine_staging_hands_its_run_files_to_the_build_emitter( + tmp_path: Path, fake_telemetry_emitters +) -> None: + from microcosm.build.uk_runtime import spine_build + + tool = _load_tool() + args = tool._parse_args( + [ + "--frs-raw-dir", + str(tmp_path), + "--spine-h5", + str(tmp_path / "spine.h5"), + "--spi-tab", + str(tmp_path / "put2223uk.tab"), + "--hmrc-ods", + str(tmp_path / "hmrc.ods"), + "--staging-upload-interval-seconds", + "0", + ] + ) + state = SimpleNamespace(build_id="uk-spine-attempt-fixture") + emitter = spine_build._start_telemetry_emitter(args, state=state) + bundle = spine_build._create_staging_run_bundle(args, state=state) + + assert bundle.emitter_client is emitter.client + bundle.stage("input_verification", force_upload=True) + request = emitter.client.run_file_requests[-1] + assert (request.repository, request.run_id, request.prefix) == ( + "policyengine/populace-uk-staging", + "uk-spine-attempt-fixture", + "runs", + ) + assert "runs/uk-spine-attempt-fixture/progress.json" in emitter.client.paths( + "policyengine/populace-uk-staging" + ) + emitter.close() + + def test_driver_exposes_all_staging_modes_and_rejects_empty_remote( tmp_path: Path, ) -> None: diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_full_build_cli.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_full_build_cli.py index 89cef8602c..0bf9d71219 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_full_build_cli.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_full_build_cli.py @@ -1294,12 +1294,15 @@ def _drive_epochs(args, telemetry, epochs: int = 2) -> None: def _remote_hub(monkeypatch, **kwargs): + """One fake Hub for the staged dataset and the run files the emitter commits.""" from microcosm.build.uk_runtime import rowwise_staging + from test_support.microcosm_build.telemetry import share_fake_hub from test_support.microcosm_build.uk_rowwise_candidate import _FakeHub hub = _FakeHub(**kwargs) monkeypatch.setattr(rowwise_staging, "_hub_api", lambda: hub) monkeypatch.setattr(rowwise_staging, "_hub_token", lambda: "hf_test_token") + share_fake_hub(monkeypatch, hub) return hub @@ -1455,7 +1458,9 @@ def test_remote_staging_uploads_telemetry_and_the_bundle_in_one_commit( manifest = json.loads((out / cli.MANIFEST_FILENAME).read_text()) # Telemetry went to runs// of the staging repository, artifacts - # included, under the fixed prefix and nothing else. + # included, under the fixed prefix and nothing else. The build's emitter + # committed it: the build itself uploaded nothing to the Hub. + assert hub.uploads == [] telemetry_paths = hub.paths("policyengine/populace-uk-staging") assert telemetry_paths == sorted( f"runs/{run_id}/{name}" @@ -1631,27 +1636,28 @@ def test_a_failed_refresh_after_a_passed_read_back_still_records_the_attempt( """ pytest.importorskip("tables") - from microcosm.build.uk_runtime import rowwise_staging - from test_support.microcosm_build.uk_rowwise_candidate import _FakeHub + from test_support.microcosm_build import telemetry as telemetry_support + from test_support.microcosm_build.emitter import FakeEmitterClient + + class RefreshFails(FakeEmitterClient): + """The emitter stops accepting run files once read-back has passed.""" - class RefreshFailsHub(_FakeHub): read_back_started = False - def hf_hub_download(self, *, repo_id, filename, repo_type, **kwargs): - if filename.startswith("runs/"): - self.read_back_started = True - return super().hf_hub_download( - repo_id=repo_id, filename=filename, repo_type=repo_type, **kwargs + def read_back_run_files(self, repository, run_id, *, wait_seconds=30.0): + answer = super().read_back_run_files( + repository, run_id, wait_seconds=wait_seconds ) + RefreshFails.read_back_started = True + self.accept_run_files = False + return answer - def upload_file(self, **kwargs): - if self.read_back_started: - raise RuntimeError("503 token=do-not-record") - super().upload_file(**kwargs) - - hub = RefreshFailsHub() - monkeypatch.setattr(rowwise_staging, "_hub_api", lambda: hub) - monkeypatch.setattr(rowwise_staging, "_hub_token", lambda: "hf_test_token") + hub = _remote_hub(monkeypatch) + monkeypatch.setattr( + telemetry_support, + "client_factory", + lambda: RefreshFails(hub_files=hub.files), + ) status, out = run_dense_main( tmp_path, monkeypatch, @@ -1662,10 +1668,9 @@ def upload_file(self, **kwargs): ) assert status == 0 - assert hub.read_back_started + assert RefreshFails.read_back_started assert not (out / "failure.json").exists() - err = capsys.readouterr().err - assert "staging upload failed" in err and "do-not-record" not in err + assert "staging hand-over failed" in capsys.readouterr().err delivery = json.loads((out / cli.MANIFEST_FILENAME).read_text())["staging_delivery"] assert delivery["read_back"] == "passed" assert delivery["last_error_code"] is None diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_graph.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_graph.py index 23320b84e7..a7aa7dbab3 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_graph.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_graph.py @@ -59,8 +59,10 @@ def test_uk_spine_graph_contains_every_manifest_stage() -> None: # adds property_purchases and uc_legacy_closure_take_up, microcosm#1112 # regional_home_values, microcosm#1319 carers_allowance_take_up, the # copies' childcare re-draw childcare_copy_take_up, and microcosm#1334 - # uc_take_up and frs_annual_income_spells. - assert len(expected) == 51 + # uc_take_up and frs_annual_income_spells; microcosm#1428 the last stage, + # trading_allowance_receipts; and company_cars after hmrc_spi_income_spine + # (PolicyEngine/uk-autumn-budget-dashboard-2026#316). + assert len(expected) == 52 assert {"frs_hmrc_retained_leaves", "hmrc_spi_income"}.isdisjoint(expected) assert set(expected) <= ids assert {"frs_hmrc_retained_leaves", "hmrc_spi_income"}.isdisjoint(ids) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_isa_subscriptions.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_isa_subscriptions.py index 1bed74c569..b11dc5592b 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_isa_subscriptions.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_isa_subscriptions.py @@ -9,6 +9,7 @@ import pytest from microcosm.build.source_manifest import SourceOperationSpec +from microcosm.build.stage_evidence import snapshot_stage_evidence from microcosm.build.uk_runtime import isa_subscriptions as stage from microcosm.build.uk_runtime.cgt_imputation import ( UK_CGT_TAXABLE_INCOME_PROXY_COMPONENTS, @@ -392,6 +393,17 @@ def test_the_whole_stage_writes_its_columns_within_every_invariant(statistics): assert gate.passed, (gate_id, gate.failures) +def test_the_stage_declares_no_fit_weight_records(statistics): + """The stage fits no model. A declared empty list read as a fitting stage + that recorded nothing, which failed the release-cut weights audit + (microcosm#1428).""" + + transform = _transform(statistics) + transform(_stage_frame()) + evidence = snapshot_stage_evidence("isa_subscriptions", transform) + assert "fit_weight_records" not in evidence + + def test_reordering_the_rows_moves_no_draw(statistics): """Every draw is keyed on identity, so row order moves none. @@ -550,8 +562,8 @@ def test_the_committed_declaration_carries_the_tested_operations(): lisa = {artifact["role"]: artifact for artifact in stages["was_lisa"].artifacts} for role in ("was_qrf_donor", "was_person_tab"): assert roles[role] == lisa[role] - # Nothing runs after it. - assert list(stages)[-1] == "isa_subscriptions" + # Only the self-employed's gross receipts run after it (microcosm#1428). + assert list(stages)[-2:] == ["isa_subscriptions", "trading_allowance_receipts"] def test_no_calibration_target_reads_an_isa_fact(): diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py index d0909249a9..e856f0b7a4 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_measure_simulation.py @@ -13,6 +13,7 @@ from microcosm.build.uk_runtime.income_tax_rate_classes import UK_RATE_CLASS_ALLOCATION from microcosm.build.uk_runtime.measure_simulation import ( UK_SAVINGS_INTEREST_OUTSIDE_ISAS, + UK_SPI_OTHER_INVESTMENT_INCOME, UKMeasureResolver, apply_uk_calibration_measure_exclusions, compute_uk_measure_input, @@ -608,6 +609,9 @@ def test_exclusion_applier_warns_within_week_of_expiry(): # the devolved repayments by nation and holds Scotland's and Northern # Ireland's (ruling R4: Wales only binds). "_1_000_000_to_inf": 10, + # The SPI Table 3.7 £1m-and-over interest amount row, held on the savings + # follow-up's measured distortion (microcosm#1428, 2026-10-30). + "hmrc.spi.savings_interest_income.amount_by_total_income_band.band_1000000": 1, "slc.": 5, # microcosm#1095 (2026-10-07): two bands whose few supporting awards # policyengine-uk 2.122.2 moves out join the uk-data#452 class. @@ -739,8 +743,10 @@ def test_packaged_exclusions_load(): # 2024 duty (microcosm#1420). microcosm#1095 holds the three OBR council # tax nation rows, pinned to the UK as measured diagnostics (ruling D14e), # and SLC's Scottish and Northern Irish repayment rows (ruling R4: Wales - # only binds). - assert len(names) == len(set(names)) == 44 + # only binds). The savings follow-up holds the SPI £1m-and-over interest + # amount row on its measured distortion (microcosm#1428, María's ruling of + # 2026-10-30). + assert len(names) == len(set(names)) == 45 (gas,) = [ entry for entry in exclusions @@ -2075,6 +2081,62 @@ def test_the_resolver_routes_interest_outside_isas_to_persons( ) +def _annuity_frame() -> FrameStub: + """A pensioner with a purchased annuity inside the stored pension, a + gilt holder, and a person with no stored pension (microcosm#1428).""" + + frame = FrameStub() + frame._tables["person"] = frame._tables["person"].assign( + private_pension_income=[4_000.0, 0.0, 0.0], + annuity_and_trust_income=[1_000.0, 0.0, 0.0], + ) + return frame + + +def test_spi_other_income_adds_the_annuity_and_trust_part_of_pensions(): + """SPI Table 3.7's other income counts purchased-annuity and trust + payments, which FRS rows keep in private pension for the engine's means + tests: the measure adds their share of the engine's pension, so they grow + on its private pension path (microcosm#1428).""" + + simulation = SimulationStub( + { + "other_investment_income": ("person", np.array([0.0, 500.0, 0.0])), + "private_pension_income": ("person", np.array([4_400.0, 0.0, 0.0])), + } + ) + values, route = compute_uk_measure_input( + _annuity_frame(), simulation, "person", UK_SPI_OTHER_INVESTMENT_INCOME, 2025 + ) + # A quarter of the stored pension, grown by the engine's 10%. + np.testing.assert_allclose(values, [1_100.0, 500.0, 0.0]) + assert route.startswith("engine_components:other_investment_income") + # A frame without the descriptor (the enhanced FRS reference) reads the + # engine's other income alone. + np.testing.assert_allclose( + compute_uk_measure_input( + FrameStub(), simulation, "person", UK_SPI_OTHER_INVESTMENT_INCOME, 2025 + )[0], + [0.0, 500.0, 0.0], + ) + with pytest.raises(KeyError, match="person-only"): + compute_uk_measure_input( + _annuity_frame(), + simulation, + "household", + UK_SPI_OTHER_INVESTMENT_INCOME, + 2025, + ) + + +def test_the_spi_other_income_rows_read_the_annuity_measure(): + targets = measure_simulation._uk_contract_targets() + binding = targets["hmrc.spi.other_investment_income.amount_by_total_income_band"][ + "bindings" + ]["policyengine"] + assert binding["value_variable"] == UK_SPI_OTHER_INVESTMENT_INCOME + + def _stub_engine_term_calendar(monkeypatch) -> None: """policyengine-uk's year of terms, without the engine installed.""" diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_reconstruction.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_reconstruction.py index ede92261ca..1127b21d4d 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_reconstruction.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_orrery_reconstruction.py @@ -17,7 +17,6 @@ from pathlib import Path import pytest -from microcosm_emitter.orrery.service.queue import publication_inventory from microcosm.build.country_spec import load_country_spec from microcosm.build.staging_dataset import refresh_sha256sums_entry @@ -44,6 +43,7 @@ ) from microcosm.graph.schema import validate_graph_schema from microcosm.graph.serialize import graph_to_json +from test_support.microcosm_build.emitter import fake_publication_inventory from test_support.paths import paths_for _RECONSTRUCTION_VERIFY = ( @@ -259,8 +259,9 @@ def test_dense_build_reconstructs_the_normal_publication_layout(tmp_path): ) inventory = read_json(output / INVENTORY_NAME) # The emitter recomputes the inventory before it queues a directory; the - # reconstructed one must be exactly what it would compute. - assert inventory == publication_inventory( + # reconstructed one must be exactly what it would compute: each named + # file's role, size and SHA-256, in name order. + assert inventory == fake_publication_inventory( output, {GRAPH_NAME: "graph", SCHEMA_NAME: "schema"}, publication_id=inventory["publication_id"], diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_pension_age_benefit_targets.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_pension_age_benefit_targets.py index d02836f8c0..71b929b6de 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_pension_age_benefit_targets.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_pension_age_benefit_targets.py @@ -160,3 +160,56 @@ def test_winter_fuel_diagnostic_carries_the_published_count() -> None: assert metadata[f"{prefix}_status"] == "available" assert float(metadata[f"{prefix}_value_count"]) == 11_003_237 assert metadata[f"{prefix}_ledger_geography_id"] == "K04000001" + + +def test_income_based_jsa_spending_reads_the_dwp_calendar_window() -> None: + # DWP's income-based JSA line beside OBR's total JSA, so the solve meets + # OBR's total on contributory claimants (microcosm#1428; its review's + # finding 12 asked for this pin, as the Housing Benefit row has). + target = _targets()["dwp.jsa.amount_income_based"] + selector = target["ledger_selector"] + assert selector["source_concept"] == "dwp.benefit_expenditure_amount" + assert selector["dimension_values"] == { + "benefit_forecast_line": ( + "unemployment_benefits__jobseekers_allowance__income_based" + ) + } + assert target["value_operation"] == "calendar_year_window" + assert selector["source_measure_id_by_opening_year"] == { + "2024": "expenditure_2024", + "2025": "expenditure_2025", + } + assert target["assertion_policy"] == "allow_source_projection" + assert target["family"] == "dwp_benefit_expenditure" + binding = target["bindings"]["policyengine"] + assert binding["value_variable"] == "jsa_income" + assert binding["from_entity"] == "benunit" + assert "filters" not in binding + # Great Britain, the scope of DWP's line. + (condition,) = binding["household_conditions"] + assert condition["variable"] == "region" + assert "NORTHERN_IRELAND" not in condition["value"] + + +def test_the_table_3_10_employment_counts_read_pay_with_benefits_by_profit_band() -> ( + None +): + # Table 3.10's individuals with employment income over the self-employment + # bands from GBP 1 to GBP 10,000 (microcosm#1428; review finding 12). + target = _targets()[ + "hmrc.spi.employment_income.count_by_self_employment_income_band" + ] + binding = target["bindings"]["policyengine"] + assert binding["value_variable"] == "person_count" + assert binding["groupby_variable"] == ( + "self_employment_income_after_loss_relief_annual" + ) + assert binding["filters"] == [ + { + "variable": "employment_income_with_benefits_in_kind_annual", + "operator": "!=", + "value": 0, + } + ] + assert binding["band_upper_bound"] == 10_000 + assert binding["band_upper_bound_inclusive"] is False diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py index 1da010eb07..6118f3f078 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_population_targets.py @@ -263,9 +263,11 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: # rates, three national rows, SPI pension income and the taxpayers with # it by constituency and local authority, SPI Table 3.7's other income by # total-income band, and SPI Table 3.10's self-employment counts and - # amounts by self-employment band; microcosm#1095 R4 splits SLC's - # devolved repayments into one row per nation, three rows for one. - assert len(resource["targets"]) == 458 + # amounts by self-employment band and the counts with employment income + # among them, and DWP's income-based Jobseeker's Allowance spending; + # microcosm#1095 R4 splits SLC's devolved repayments into one row per + # nation, three rows for one. + assert len(resource["targets"]) == 460 providers = resource["hierarchy"]["providers"] categories = resource["hierarchy"]["categories"] @@ -279,10 +281,10 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: target_ids = [target["target_id"] for target in resource["targets"]] registry_scope = resource["registry_parity"]["scope_target_ids"] profile_scope = resource["profile_parity"]["scope_target_ids"] - assert len(registry_scope) == 396 + assert len(registry_scope) == 398 assert len(profile_scope) == 62 - assert target_ids[:396] == registry_scope - assert target_ids[396:] == profile_scope + assert target_ids[:398] == registry_scope + assert target_ids[398:] == profile_scope parity = resource["registry_parity"] assert parity["pinned_ref"] == "12a1e028afeef08d8b2d74ee03fd9de3a78b2dd3" @@ -309,11 +311,12 @@ def test_uk_population_targets_shape_order_and_registry_accounting() -> None: # OBR excise rows have no uk-data metric (uk-data never measured excise # duty), nor microcosm#1069's two Income Tax payer by age rows, nor # microcosm#1418's three Income Tax on savings rows, its SPI other income - # row or its two Table 3.10 rows. microcosm#1095 R4 maps the incumbent's - # three devolved SLC repayment metrics one to one, to three nation rows in - # place of one devolved row. + # row or its three Table 3.10 rows, nor microcosm#1428's income-based JSA + # spending row. microcosm#1095 R4 maps the incumbent's three devolved SLC + # repayment metrics one to one, to three nation rows in place of one + # devolved row. assert len(mapped_target_ids) == 185 - assert len(unmapped_declarations) == 211 + assert len(unmapped_declarations) == 213 suppressed_ancestors = parity["suppressed_ancestors"] assert len(suppressed_ancestors) == 5 assert set(suppressed_ancestors).isdisjoint(parity["mapped"]) @@ -825,7 +828,7 @@ def test_uk_population_targets_have_unique_target_ids() -> None: resource = _load() target_ids = [target["target_id"] for target in resource["targets"]] - assert len(target_ids) == 458 + assert len(target_ids) == 460 assert len(target_ids) == len(set(target_ids)) @@ -1328,7 +1331,7 @@ def test_uc_payment_bands_share_administrative_family_but_keep_source_window() - def test_paid_joint_diagnostics_do_not_add_active_targets() -> None: targets = _load()["targets"] - assert len(targets) == 458 + assert len(targets) == 460 assert not any( f.get("variable") == "uc_calibration_child_entitlement" for target in targets @@ -1578,7 +1581,7 @@ def test_household_composition_cells_do_not_share_the_household_total_signature( def test_only_the_uc_award_bands_read_whole_pence() -> None: """microcosm#1095: the four UC payment families opt in to whole-pence, - upper-closed bands; the other 31 banded bindings keep the half-open + upper-closed bands; the other 32 banded bindings keep the half-open reading.""" banded = { @@ -1591,7 +1594,7 @@ def test_only_the_uc_award_bands_read_whole_pence() -> None: for target_id, binding in banded.items() if binding.get("band_semantics") == "whole_pence_upper_closed" } - assert len(banded) == 35 + assert len(banded) == 36 assert whole_pence == { f"dwp.uc.payment_distribution_{family}" for family in ( diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_private_school_attendance.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_private_school_attendance.py index 7c371c0e1e..a163fbb496 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_private_school_attendance.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_private_school_attendance.py @@ -107,16 +107,19 @@ def test_the_stage_needs_the_stored_draw_and_writes_attendance_once(): store_private_school_attendance(stored, engine=engine, calibration_year=2025) -def test_only_the_isa_subscriptions_follow_the_stage(): +def test_only_the_isa_subscriptions_and_receipts_follow_the_stage(): """No later stage copies or re-keys a person, so the stored flags reach - the release as the engine set them. Only the ISA subscriptions - (microcosm#1415) follow it, writing person columns on the rows they are - given.""" + the release as the engine set them. Only the ISA subscriptions and the + self-employed's gross receipts follow it, each writing person columns on + the rows they are given (microcosm#1415, microcosm#1428).""" stages = load_country_spec("uk").sources.stages names = [stage.stage for stage in stages] later = stages[names.index("private_school_attendance") + 1 :] - assert [stage.stage for stage in later] == ["isa_subscriptions"] + assert [stage.stage for stage in later] == [ + "isa_subscriptions", + "trading_allowance_receipts", + ] for stage in later: assert PRIVATE_SCHOOL_ATTENDANCE_OUTPUT not in { *stage.outputs, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py index 5c325d86a6..68f4fc644a 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_release_assembler.py @@ -28,7 +28,7 @@ uk_weight_projection_factor, ) from microcosm.data.contract import validate_release_dir -from microcosm.data.registry import REGISTRY +from microcosm.data.registry import DEFAULT_VARIANT, REGISTRY from microcosm.frame import WeightKind from test_support.paths import paths_for @@ -87,7 +87,7 @@ def test_national_dataset_filename_mirrors_registry() -> None: assert driver._DATASET_KEY == "microcosm_uk_2024_25" assert driver._DATASET_FILENAME == f"{driver._DATASET_KEY}.h5" - assert REGISTRY[("uk", 2025, "national")].filename == driver._DATASET_FILENAME + assert REGISTRY[("uk", 2025, DEFAULT_VARIANT)].filename == driver._DATASET_FILENAME def _frame(weights: list[float], *, weight_kind: WeightKind): diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_rowwise_national_role.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_rowwise_national_role.py index e684c94f39..67fe7f0de2 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_rowwise_national_role.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_rowwise_national_role.py @@ -63,6 +63,7 @@ from microcosm.frame import WeightKind from test_support.microcosm_build import uk_calibration_run as seam from test_support.microcosm_build import uk_rowwise_candidate as candidate +from test_support.microcosm_build.telemetry import share_fake_hub from test_support.microcosm_build.uk_calibration_run import ( # noqa: F401 _cgt_projection, _signing_key, @@ -615,6 +616,7 @@ def test_uk_national_role_publishes_telemetry_and_the_bundle_to_the_hub( hub = candidate._FakeHub() monkeypatch.setattr(rowwise_staging, "_hub_api", lambda: hub) monkeypatch.setattr(rowwise_staging, "_hub_token", lambda: "hf_test_token") + share_fake_hub(monkeypatch, hub) out = tmp_path / "national" assert ( @@ -629,6 +631,8 @@ def test_uk_national_role_publishes_telemetry_and_the_bundle_to_the_hub( manifest = json.loads((out / builder.MANIFEST_FILENAME).read_text()) run_id = manifest["build_id"] assert run_id.startswith("uk-frs-calibration-attempt-") + # The build's emitter committed the run files; the build uploaded nothing. + assert hub.uploads == [] telemetry_paths = hub.paths("policyengine/populace-uk-staging") assert telemetry_paths == sorted( f"runs/{run_id}/{name}" diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py index 23fa2e06d2..c7f5edbf01 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_source_stages.py @@ -129,6 +129,9 @@ # microcosm#1415: the ISA subscriptions run on final incomes; nothing # reads their outputs. "isa_subscriptions", + # microcosm#1428: the self-employed's gross receipts run last, on final + # profits; only the engine's trading allowance reads them. + "trading_allowance_receipts", ] UK_SOURCE_STAGE_NAMES = [ "frs_spine", @@ -316,6 +319,7 @@ def test_country_stage_plan_assembles_spine_plan(self) -> None: "student_loans": _identity, "private_school_attendance": _identity, "isa_subscriptions": _identity, + "trading_allowance_receipts": _identity, "company_cars": _identity, "childcare_copy_take_up": _identity, "age_tail": _identity, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_savings_rebase.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_savings_rebase.py new file mode 100644 index 0000000000..bb36856246 --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_savings_rebase.py @@ -0,0 +1,543 @@ +"""The SPI donors' savings rebase (microcosm#1418 savings follow-up). + +The 2022-23 tape's interest and other income move to HMRC's published +2023-24 Table 3.7 amounts band by band, then on the OBR's savings income +growth to the frame's year, in place of each column's engine index. +""" + +from __future__ import annotations + +import sys +from types import SimpleNamespace + +import pandas as pd +import pytest + +from microcosm.build.uk_runtime import spi_income +from microcosm.build.uk_runtime.hmrc_uprating import uk_obr_savings_income_level +from microcosm.build.uk_runtime.spi_income import ( + SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION, + SPI_SAVINGS_REBASE_CONCEPTS, + SPI_SAVINGS_REBASE_YEAR, + rebase_spi_donor_savings, + spi_savings_rebase_published, +) + +PUBLISHED = { + "savings_interest_income": {12_570: 1_500.0, 50_000: 2_000.0, 1_000_000: 3_000.0}, + "other_investment_income": {12_570: 400.0, 50_000: 400.0, 1_000_000: 18_000.0}, +} + + +def _rows(amounts): + return [ + { + "concept": SPI_SAVINGS_REBASE_CONCEPTS[column], + "period": {"type": "tax_year", "value": SPI_SAVINGS_REBASE_YEAR}, + "dimensions": {"total_income_lower_bound": bound}, + "value": value, + } + for column, by_bound in amounts.items() + for bound, value in by_bound.items() + ] + + +def _donor() -> pd.DataFrame: + return pd.DataFrame( + { + "total_income": [5_000.0, 15_000.0, 15_000.0, 50_000.0, 2_000_000.0], + "FACT": [10.0, 5.0, 5.0, 2.0, 1.0], + "savings_interest_income": [100.0, 40.0, 60.0, 500.0, 1_000.0], + "other_investment_income": [0.0, 10.0, 30.0, 100.0, 9_000.0], + "dividend_income": [1.0, 2.0, 3.0, 4.0, 5.0], + } + ) + + +def test_the_rebased_tape_reproduces_the_published_bands() -> None: + donor = _donor() + rebased, receipt = rebase_spi_donor_savings(donor, PUBLISHED) + + # A donor at a band's lower bound sits in that band. + rows_by_band = {12_570: [1, 2], 50_000: [3], 1_000_000: [4]} + for column, by_bound in PUBLISHED.items(): + for bound, rows in rows_by_band.items(): + weighted = rebased.loc[rows, column] * rebased.loc[rows, "FACT"] + assert weighted.sum() == pytest.approx(by_bound[bound]) + # Interest: the tape's 500, 1,000 and 1,000 against 1,500, 2,000 and + # 3,000; a donor below the first band takes all bands' 6,500 over 2,500. + assert receipt["columns"]["savings_interest_income"]["band_factors"] == { + "12570": 3.0, + "50000": 2.0, + "1000000": 3.0, + } + assert rebased.loc[0, "savings_interest_income"] == pytest.approx(100.0 * 2.6) + assert receipt["columns"]["savings_interest_income"][ + "below_first_band_factor" + ] == pytest.approx(2.6) + # Other columns, and the tape passed in, are left as they were. + pd.testing.assert_series_equal(rebased["dividend_income"], donor["dividend_income"]) + assert donor.loc[0, "savings_interest_income"] == 100.0 + assert receipt["from_period"] == 2022 and receipt["to_period"] == 2023 + # The receipt carries factors, never a count of tape records. + assert set(receipt["columns"]["other_investment_income"]) == { + "concept", + "banding_factor", + "band_factors", + "below_first_band_factor", + "bands_without_tape_amounts", + "bands_too_thin_to_gross", + } + assert ( + receipt["columns"]["other_investment_income"]["bands_without_tape_amounts"] + == [] + ) + + +def test_a_band_the_tape_does_not_carry_is_left_as_it_is() -> None: + # A synthetic tape need not carry every band; there is nothing to scale + # there, and the receipt names the band. + donor = _donor() + donor.loc[4, "other_investment_income"] = 0.0 + rebased, receipt = rebase_spi_donor_savings(donor, PUBLISHED) + other = receipt["columns"]["other_investment_income"] + assert other["bands_without_tape_amounts"] == [1_000_000] + assert "1000000" not in other["band_factors"] + assert rebased.loc[4, "other_investment_income"] == 0.0 + # The other bands, and below the first, still rebase: 800 over 400. + assert other["below_first_band_factor"] == pytest.approx(2.0) + assert rebased.loc[3, "other_investment_income"] == pytest.approx(200.0) + + +def test_the_published_rows_are_checked() -> None: + rows = _rows(PUBLISHED) + assert spi_savings_rebase_published(rows) == PUBLISHED + stale = [dict(rows[0], period={"type": "tax_year", "value": 2022}), *rows[1:]] + with pytest.raises(ValueError, match="describes 2022"): + spi_savings_rebase_published(stale) + with pytest.raises(ValueError, match="two rows from"): + spi_savings_rebase_published([*rows, rows[0]]) + uneven = [ + row + for row in rows + if not ( + row["concept"] == SPI_SAVINGS_REBASE_CONCEPTS["other_investment_income"] + and row["dimensions"]["total_income_lower_bound"] == 50_000 + ) + ] + with pytest.raises(ValueError, match="same total-income bands"): + spi_savings_rebase_published(uneven) + + +def test_the_committed_rows_give_both_columns_table_3_7s_thirteen_bands() -> None: + published = spi_savings_rebase_published() + assert {column: len(bands) for column, bands in published.items()} == { + "savings_interest_income": 13, + "other_investment_income": 13, + } + assert min(published["savings_interest_income"]) == 12_570 + # SPI 2023-24 Table 3.7, all bands: GBP 18.34bn of interest and GBP + # 5.85bn of other income. + assert sum(published["savings_interest_income"].values()) == pytest.approx( + 18.343e9, rel=1e-3 + ) + assert sum(published["other_investment_income"].values()) == pytest.approx( + 5.846e9, rel=1e-3 + ) + + +def test_the_savings_columns_grow_on_the_obr_path_from_2023_24(monkeypatch) -> None: + variables = { + name: SimpleNamespace(uprating="index") + for name in spi_income.SPI_INCOME_UPRATING_VARIABLES.values() + if name is not None + } + + def parameters(period): + return SimpleNamespace(index=100.0 if period.startswith("2022") else 120.0) + + system = SimpleNamespace(variables=variables, parameters=parameters) + monkeypatch.setitem( + sys.modules, + "policyengine_uk", + SimpleNamespace(CountryTaxBenefitSystem=lambda: system), + ) + factors, receipt = spi_income._spi_income_uprating_factors.__wrapped__(2024) + + level, used = uk_obr_savings_income_level(2023, 2024) + # The OBR's +35.0% for 2024-25 (October 2026 EFO, Table 4.5). + assert level == pytest.approx(1.3496108, abs=1e-7) + assert sorted(used) == [2024] + for column in SPI_SAVINGS_REBASE_CONCEPTS: + row = receipt["columns"][column] + assert row["basis"] == "spi_published_bands_then_obr_savings_income" + assert row["from_period"] == SPI_SAVINGS_REBASE_YEAR + assert factors[column] == pytest.approx(level) + assert ( + row["dataset_projection_index"] + == (SPI_HISTORY_INDEX_DIFFERS_FROM_PROJECTION[column]) + ) + # Every other indexed column keeps its engine index from the tape's year. + assert factors["dividend_income"] == pytest.approx(1.2) + # Before 2023-24 there is nothing to rebase to: the source year is the + # identity, and the path refuses to run backwards. + unchanged, _ = spi_income._spi_income_uprating_factors.__wrapped__(2022) + assert unchanged["other_investment_income"] == pytest.approx(1.0) + with pytest.raises(ValueError, match="runs forward only"): + uk_obr_savings_income_level(2024, 2023) + + +def test_the_factors_read_the_tapes_taxpayers() -> None: + # Table 3.7 counts taxpayers only, so a band's factor is its published + # amount over the tape's taxpayers' amount there; a donor who pays no tax + # takes the factor of all bands together (option F of the microcosm#1428 + # other-income investigation). + donor = _donor() + donor[spi_income.SPI_DONOR_TAXPAYER_COLUMN] = [False, True, False, True, True] + rebased, receipt = rebase_spi_donor_savings(donor, PUBLISHED) + interest = receipt["columns"]["savings_interest_income"] + assert receipt["factors_over"].startswith("taxpayers") + # The £12,570 band's taxpayers hold 5 x 40 = 200 of the tape's interest + # there: 1,500 over 200. All bands: 6,500 over 2,200. + assert interest["band_factors"]["12570"] == pytest.approx(7.5) + assert rebased.loc[1, "savings_interest_income"] == pytest.approx(40.0 * 7.5) + all_bands = 6_500.0 / 2_200.0 + assert interest["below_first_band_factor"] == pytest.approx(all_bands) + assert rebased.loc[2, "savings_interest_income"] == pytest.approx(60.0 * all_bands) + # The band's taxpayers reproduce its published amount. + weighted = rebased.loc[[1], "savings_interest_income"] * rebased.loc[[1], "FACT"] + assert weighted.sum() == pytest.approx(1_500.0) + # Without the flag every record counts, as before. + _, plain = rebase_spi_donor_savings(_donor(), PUBLISHED) + assert plain["factors_over"] == "all_records_at_or_above_the_first_band" + + +def test_a_tape_that_does_not_gross_to_the_population_is_left_as_it_is() -> None: + # A synthetic tape's weights do not gross to the published amounts, and its + # factors would run to millions; the rebase leaves such a column as it is. + donor = _donor() + donor["FACT"] = donor["FACT"] / 1e6 + rebased, receipt = rebase_spi_donor_savings(donor, PUBLISHED) + for column in PUBLISHED: + assert "skipped" in receipt["columns"][column] + pd.testing.assert_series_equal(rebased[column], donor[column]) + + +def test_gift_leaves_are_anchored_to_the_tapes_weighted_totals() -> None: + # Two copies drawn, one FRS row and one undrawn copy; the tape's + # FACT-weighted totals are 3,000 of Gift Aid and 600 of investment gifts. + person = pd.DataFrame( + { + "person_id": [1, 2, 3, 4], + "person_household_id": [10, 20, 30, 40], + "gift_aid": [100.0, 300.0, 50.0, 70.0], + "charitable_investment_gifts": [0.0, 400.0, 0.0, 9.0], + } + ) + household = pd.DataFrame( + {"household_id": [10, 20, 30, 40], "household_weight": [2.0, 3.0, 5.0, 7.0]} + ) + donor = pd.DataFrame( + { + "FACT": [10.0, 20.0], + "gift_aid": [100.0, 100.0], + "charitable_investment_gifts": [0.0, 30.0], + } + ) + drawn = pd.Series([True, True, False, False]) + anchored, receipt = spi_income._anchor_spi_gifts_to_tape( + person.copy(), household, donor, spi_people=drawn + ) + weights = pd.Series([2.0, 3.0]) + # The drawn copies carried 1,100 of Gift Aid and 1,200 of investment gifts. + assert (weights * anchored.loc[:1, "gift_aid"]).sum() == pytest.approx(3_000.0) + assert (weights * anchored.loc[:1, "charitable_investment_gifts"]).sum() == ( + pytest.approx(600.0) + ) + assert receipt["factors"] == pytest.approx( + {"gift_aid": 3_000.0 / 1_100.0, "charitable_investment_gifts": 0.5} + ) + # Rows the stage did not draw keep their values. + assert anchored.loc[2:, "gift_aid"].tolist() == [50.0, 70.0] + assert anchored.loc[2:, "charitable_investment_gifts"].tolist() == [0.0, 9.0] + # A column the tape carries none of is left as drawn. + _, receipt = spi_income._anchor_spi_gifts_to_tape( + person.copy(), + household, + donor.assign(charitable_investment_gifts=0.0), + spi_people=drawn, + ) + assert receipt["factors"]["charitable_investment_gifts"] == 1.0 + + +def test_drawn_rows_drop_their_twins_annuity_and_trust_descriptor() -> None: + # A drawn row's private pension is the tape's, which books annuity and + # trust payments as other income; an undrawn copy keeps its twin's part + # (microcosm#1428). + person = pd.DataFrame({"annuity_and_trust_income": [500.0, 700.0, 0.0]}) + drawn = pd.Series([True, False, False]) + cleared = spi_income._clear_annuity_and_trust_descriptor( + person.copy(), spi_people=drawn + ) + assert cleared["annuity_and_trust_income"].tolist() == [0.0, 700.0, 0.0] + # A frame without the descriptor is left as it is. + bare = pd.DataFrame({"private_pension_income": [1.0]}) + assert spi_income._clear_annuity_and_trust_descriptor( + bare.copy(), spi_people=pd.Series([True]) + ).equals(bare) + + +INTEREST_ONLY = {"savings_interest_income": {12_570: 100.0, 50_000: 400.0}} + + +def _edge_donor() -> pd.DataFrame: + # A just below the £50,000 edge in 2022-23, B well above it. + return pd.DataFrame( + { + "total_income": [49_950.0, 60_000.0], + "FACT": [100.0, 100.0], + "savings_interest_income": [1.0, 1.0], + "dividend_income": [5_000.0, 0.0], + } + ) + + +def test_the_tape_is_banded_on_its_income_moved_to_2023_24() -> None: + # Banded on its 2022-23 income, A sits in the £12,570 band. Moved to + # 2023-24 (dividends x1.1), it crosses the £50,000 edge, the band the + # consumers will find it in after uprating, so its migration is counted + # once (microcosm#1428 review, finding 6). The £12,570 band then carries + # no tape, so the factor over all bands is the £50,000 band's 400 over 200. + held, held_receipt = rebase_spi_donor_savings(_edge_donor(), INTEREST_ONLY) + assert held["savings_interest_income"].tolist() == pytest.approx([1.0, 4.0]) + moved, receipt = rebase_spi_donor_savings( + _edge_donor(), INTEREST_ONLY, income_factors={"dividend_income": 1.1} + ) + assert moved["savings_interest_income"].tolist() == pytest.approx([2.0, 2.0]) + assert receipt["columns"]["savings_interest_income"]["band_factors"] == { + "50000": pytest.approx(2.0) + } + assert receipt["band_by"] == "total_income_moved_to_2023_24" + assert receipt["columns"]["savings_interest_income"][ + "banding_factor" + ] == pytest.approx(2.0) + + +def test_savings_move_by_their_factor_over_all_bands_for_the_banding() -> None: + # A's interest is a large part of its income. All bands' factor (3,000 + # over the tape's 600) moves it from 500 to 2,500 for the banding, which + # takes A across the £50,000 edge; there the band's factor is 2,000 over + # 600 for both records, and A's rebased income stays above the edge. One + # pass: a record's own band's factor would set the band it is banded in + # (microcosm#1428 review, finding 6). + donor = pd.DataFrame( + { + "total_income": [49_000.0, 60_000.0], + "FACT": [1.0, 1.0], + "savings_interest_income": [500.0, 100.0], + } + ) + rebased, receipt = rebase_spi_donor_savings( + donor, {"savings_interest_income": {12_570: 1_000.0, 50_000: 2_000.0}} + ) + interest = receipt["columns"]["savings_interest_income"] + assert interest["banding_factor"] == pytest.approx(5.0) + assert interest["band_factors"] == {"50000": pytest.approx(2_000.0 / 600.0)} + assert interest["bands_without_tape_amounts"] == [12_570] + assert rebased["savings_interest_income"].tolist() == pytest.approx( + [500.0 * 2_000.0 / 600.0, 100.0 * 2_000.0 / 600.0] + ) + assert 48_500.0 + rebased.loc[0, "savings_interest_income"] >= 50_000.0 + + +def test_a_saver_who_becomes_a_taxpayer_counts_once() -> None: + # C pays no tax in 2022-23 and crosses the Personal Allowance by 2023-24; + # D is a taxpayer throughout. Both are 2023-24 taxpayers in the £12,570 + # band, so their 2,000 meets its 4,000 at a factor of 2. Counting only D + # (factor 4) and giving C the all-bands factor would count C twice + # (microcosm#1428 review, finding 10). + donor = pd.DataFrame( + { + "total_income": [12_000.0, 20_000.0], + "FACT": [10.0, 10.0], + "savings_interest_income": [100.0, 100.0], + "dividend_income": [1_000.0, 0.0], + spi_income.SPI_DONOR_TAXPAYER_COLUMN: [False, True], + } + ) + rebased, receipt = rebase_spi_donor_savings( + donor, + {"savings_interest_income": {12_570: 4_000.0, 50_000: 1.0}}, + income_factors={"dividend_income": 1.6}, + ) + assert receipt["columns"]["savings_interest_income"]["band_factors"][ + "12570" + ] == pytest.approx(2.0) + weighted = rebased["savings_interest_income"] * rebased["FACT"] + assert weighted.sum() == pytest.approx(4_000.0) + + +def test_a_flagged_taxpayer_below_the_first_band_sits_in_it() -> None: + # Table 3.7's lowest band holds taxpayers below the Personal Allowance + # (note 8): a flagged taxpayer there shares the band's factor. + donor = pd.DataFrame( + { + "total_income": [8_000.0, 20_000.0], + "FACT": [10.0, 10.0], + "savings_interest_income": [100.0, 100.0], + spi_income.SPI_DONOR_TAXPAYER_COLUMN: [True, True], + } + ) + rebased, _ = rebase_spi_donor_savings( + donor, {"savings_interest_income": {12_570: 6_000.0, 50_000: 1.0}} + ) + assert rebased["savings_interest_income"].tolist() == pytest.approx([300.0, 300.0]) + + +def test_a_band_too_thin_to_gross_takes_the_all_bands_factor() -> None: + # The £50,000 band's tape holds 10 against a published 1,000, under a + # tenth: its factor would be 100, so it takes the all-bands factor and is + # named (microcosm#1428 review, finding 10). + donor = pd.DataFrame( + { + "total_income": [20_000.0, 60_000.0], + "FACT": [10.0, 1.0], + "savings_interest_income": [100.0, 10.0], + } + ) + rebased, receipt = rebase_spi_donor_savings( + donor, {"savings_interest_income": {12_570: 2_000.0, 50_000: 1_000.0}} + ) + interest = receipt["columns"]["savings_interest_income"] + assert interest["bands_too_thin_to_gross"] == [50_000] + assert "50000" not in interest["band_factors"] + assert rebased.loc[1, "savings_interest_income"] == pytest.approx( + 10.0 * interest["below_first_band_factor"] + ) + + +def test_a_skipped_column_keeps_its_engine_index_from_2022_23(monkeypatch) -> None: + variables = { + name: SimpleNamespace(uprating="index") + for name in spi_income.SPI_INCOME_UPRATING_VARIABLES.values() + if name is not None + } + + def parameters(period): + return SimpleNamespace(index=100.0 if period.startswith("2022") else 120.0) + + monkeypatch.setitem( + sys.modules, + "policyengine_uk", + SimpleNamespace( + CountryTaxBenefitSystem=lambda: SimpleNamespace( + variables=variables, parameters=parameters + ) + ), + ) + factors, receipt = spi_income._spi_income_uprating_factors.__wrapped__( + 2024, rebased_columns=frozenset({"other_investment_income"}) + ) + # Interest the rebase left as it was grows on its engine index from + # 2022-23, not on the OBR's path from 2023-24 (microcosm#1428 review). + assert receipt["columns"]["savings_interest_income"]["basis"] == "model_index" + assert factors["savings_interest_income"] == pytest.approx(1.2) + assert receipt["columns"]["other_investment_income"]["basis"] == ( + "spi_published_bands_then_obr_savings_income" + ) + + +def test_the_tape_taxpayer_flag_is_validated(tmp_path) -> None: + from test_support.microcosm_build.uk_spi_income import _write_donor + + path = tmp_path / "donor.tab" + _write_donor(path) + raw = pd.read_csv(path, delimiter="\t") + # Without the flag the prepared tape carries none. + assert spi_income.SPI_DONOR_TAXPAYER_COLUMN not in ( + spi_income.prepare_spi_donor_table(raw, seed=0) + ) + flagged = raw.assign(TAXPAYER=[1, 2, 1, 2]) + prepared = spi_income.prepare_spi_donor_table(flagged, seed=0) + assert prepared[spi_income.SPI_DONOR_TAXPAYER_COLUMN].tolist() == [ + True, + False, + True, + False, + ] + with pytest.raises(ValueError, match="TAXPAYER"): + spi_income.prepare_spi_donor_table(raw.assign(TAXPAYER=[1, 0, 1, 2]), seed=0) + + +def test_total_income_holds_the_published_total_without_growth() -> None: + # SPI's total income holds the leaves net of employment expenses and none + # of the gifts: GBP 600k of dividends with GBP 500k of share gifts is a + # total of GBP 600k, and GBP 45k of pay less GBP 3k of expenses is GBP + # 42k. With every factor at one the realised total is the published one + # (Vahid's review of microcosm#1428, item 1). + expenses = spi_income.SPI_HMRC_EMPLOYMENT_EXPENSES_COLUMN + pay = spi_income.SPI_HMRC_PAY_COLUMN + donor = pd.DataFrame( + { + "total_income": [600_000.0, 42_000.0], + "dividend_income": [600_000.0, 0.0], + "charitable_investment_gifts": [500_000.0, 0.0], + "gift_aid": [0.0, 0.0], + pay: [0.0, 45_000.0], + expenses: [0.0, 3_000.0], + } + ) + held = spi_income._realised_total_income(donor, donor, {}) + assert held.tolist() == pytest.approx([600_000.0, 42_000.0]) + # Growth moves the income leaves and the expenses, never the gifts. + grown = spi_income._realised_total_income( + donor, + donor, + { + "dividend_income": 1.1, + "charitable_investment_gifts": 2.0, + pay: 1.1, + expenses: 1.1, + }, + ) + assert grown.tolist() == pytest.approx([660_000.0, 46_200.0]) + + +def test_rebased_leaves_move_from_the_tapes_own_total() -> None: + # The band donors read the rebased tape, whose published total still holds + # the tape's own savings: a record's other leaves keep their place and its + # rebased interest replaces the interest the total held. + donor = pd.DataFrame( + { + "total_income": [20_000.0], + "savings_interest_income": [1_000.0], + "employment_income": [19_000.0], + } + ) + rebased = donor.assign(savings_interest_income=[3_000.0]) + realised = spi_income._realised_total_income(donor, rebased, {}) + assert realised.tolist() == pytest.approx([22_000.0]) + + +def test_both_passes_count_the_same_taxpayers() -> None: + # B pays no tax although its income is above the Personal Allowance + # (TAXPAYER 2): neither the factor over all bands nor the band factors + # count its interest (Vahid's review of microcosm#1428, item 5). All + # bands: 2,000 over A's and C's 500. + donor = pd.DataFrame( + { + "total_income": [20_000.0, 30_000.0, 60_000.0], + "FACT": [1.0, 1.0, 1.0], + "savings_interest_income": [200.0, 9_000.0, 300.0], + spi_income.SPI_DONOR_TAXPAYER_COLUMN: [True, False, True], + } + ) + _, receipt = rebase_spi_donor_savings( + donor, {"savings_interest_income": {12_570: 1_000.0, 50_000: 1_000.0}} + ) + interest = receipt["columns"]["savings_interest_income"] + assert interest["banding_factor"] == pytest.approx(4.0) + assert interest["band_factors"] == { + "12570": pytest.approx(5.0), + "50000": pytest.approx(1_000.0 / 300.0), + } diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py index c137c57ef7..2705085a75 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spi_spine.py @@ -62,6 +62,8 @@ def _base_frame(*, time_period: str = "2023") -> object: "dividend_income": [20.0, 10.0], "private_pension_income": [0.0, 0.0], "property_income": [0.0, 0.0], + # The twin's other income locates the copy's draw (microcosm#1428). + "other_investment_income": [0.0, 0.0], "employee_pension_contributions": [3.0, 2.0], "employer_pension_contributions": [9.0, 6.0], "hmrc_spi_pay": [0.0, 0.0], @@ -609,7 +611,7 @@ def test_spi_spine_parsed_inputs_match_the_path_resolution( # This test checks parsed/path source resolution, independently of the engine. # Real index coverage lives in test_uk_spi_income.py. - def uprating_factors(year): + def uprating_factors(year, *, rebased_columns=None): return ( {column: 1.25 for column in SPI_INCOME_QRF_OUTPUT_COLUMNS}, {"from_period": 2022, "to_period": year, "basis": "synthetic_test"}, diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_spine_acceptance_receipt.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_spine_acceptance_receipt.py index d0208c0b8f..780c3eee19 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_spine_acceptance_receipt.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_spine_acceptance_receipt.py @@ -172,13 +172,17 @@ def _apply_pending_roster_transformations( # follows the copies' childcare re-draw. assert "private_school_attendance" not in roster roster.append("private_school_attendance") - # microcosm#1415 re-mint pending: the ISA subscriptions run last. + # microcosm#1415 re-mint pending: the ISA subscriptions follow it. assert "isa_subscriptions" not in roster roster.append("isa_subscriptions") # PolicyEngine/uk-autumn-budget-dashboard-2026#316 re-mint pending: the # company cars follow the SPI income stage, whose pay they carve. assert "company_cars" not in roster roster.insert(roster.index("hmrc_spi_income_spine") + 1, "company_cars") + # microcosm#1428 re-mint pending: the self-employed's gross receipts run + # last. + assert "trading_allowance_receipts" not in roster + roster.append("trading_allowance_receipts") return tuple(roster) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py index 23d0c02e8f..44d331b1e3 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_stage_health.py @@ -2322,7 +2322,8 @@ def family(dwp, before, after, reachable, realized): "reachable_pools_caseload_after": realized, } - # 0.05 until microcosm#1418. + # 0.05 until microcosm#1418; the savings follow-up (microcosm#1428) joins + # unmet pools instead of widening it. parameters = { "stage": "uc_take_up", "check": "uc_take_up", diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py index 734f040c46..4209f87b3b 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_support_floor.py @@ -360,10 +360,12 @@ def test_the_packaged_floor_drops_only_unsupported_bands_and_binds_thin_ones(): }, # Extended on María's ruling of 2026-10-22 (the next policyengine-uk # bump), then to the SPI families microcosm#1418 binds: Table 3.7's - # other income and Table 3.10's self-employment bands. + # other income and Table 3.10's self-employment bands, and to the + # employment counts over those bands microcosm#1428 binds. "hmrc_spi_income_band_counts": { *(f"hmrc.spi.{family}.count_by_total_income_band" for family in spi), "hmrc.spi.self_employment_income.count_by_self_employment_income_band", + "hmrc.spi.employment_income.count_by_self_employment_income_band", }, "hmrc_spi_income_band_amounts": { *(f"hmrc.spi.{family}.amount_by_total_income_band" for family in spi), diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py index 46a82d3054..a137a728e2 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_target_references.py @@ -77,7 +77,10 @@ # national calibration tests read it from the committed membership, or not at # all, so a change to the target set moves this pin alone. How it is made up: # microcosm#1418 PR C: + 13, SPI Table 3.7's other income by band, and + 16, -# SPI Table 3.10's self-employment bands from GBP 1 to GBP 10,000; +# SPI Table 3.10's self-employment bands from GBP 1 to GBP 10,000; its +# savings follow-up (microcosm#1428): + 8, Table 3.10's individuals with +# employment income over the same bands, and + 1, DWP's income-based +# Jobseeker's Allowance spending; # microcosm#1418: + 3, HMRC's Income Tax on savings at each rate; # microcosm#1069: + 24, HMRC's Income Tax payers of State Pension age and aged # 65 and over in the twelve region-tier areas; microcosm#1095 (the bump after @@ -125,7 +128,7 @@ # below the small-cell floor; microcosm#1095 (#1422): the three OBR council # tax nation rows, pinned to the UK, and SLC's three nation repayment rows in # place of the devolved total -ACTIVE_REFERENCE_COUNT = 1409 +ACTIVE_REFERENCE_COUNT = 1418 REGION_TIER_LEVEL = {code: level for level, code in UK_REGION_TIER} @@ -1134,7 +1137,7 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: # repayment rows (R4), so no row is left without a fact. assert membership["status_counts"] == { "active": ACTIVE_REFERENCE_COUNT, - "signed_excluded": 30, + "signed_excluded": 37, } assert membership["genuine_sum_residue"] assert membership["uprating_holds"] @@ -1150,7 +1153,7 @@ def test_uk_target_reference_membership_report_is_packaged() -> None: { "family": "hmrc_spi", "status": "active_strict_band_pins", - "active_reference_count": 211, + "active_reference_count": 219, "signed_rationale": ( "SPI income-band targets fan out by strict total-income-band " "dimension pins, and SPI Table 3.10's by self-employment band, " diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_trading_allowance_receipts.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_trading_allowance_receipts.py new file mode 100644 index 0000000000..0e15252f5c --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_trading_allowance_receipts.py @@ -0,0 +1,147 @@ +"""The self-employed's gross receipts for the trading allowance (microcosm#1428).""" + +from __future__ import annotations + +from dataclasses import replace + +import numpy as np +import pandas as pd +import pytest + +from microcosm.build.country_spec import load_country_spec +from microcosm.build.stochastic_assignment import stable_identity_uniforms +from microcosm.build.uk_runtime.national_frame import uk_national_frame +from microcosm.build.uk_runtime.receipt_counts import rounded_count, small_cell_share +from microcosm.build.uk_runtime.trading_allowance_receipts import ( + TRADING_ALLOWANCE_RECEIPTS_OUTPUT, + TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME, + UKTradingAllowanceReceiptsStageTransform, + assign_trading_allowance_receipts, + claimant_rates, +) + + +def _stage(): + return load_country_spec("uk").sources.stage_map()[ + TRADING_ALLOWANCE_RECEIPTS_STAGE_NAME + ] + + +def _frame(profit: np.ndarray): + ids = np.arange(1, len(profit) + 1, dtype=np.int64) + household = pd.DataFrame( + { + "household_id": ids, + "household_source_id": ids, + "household_weight": 2.0, + "region": "LONDON", + } + ) + person = pd.DataFrame( + { + "person_id": ids, + "person_benunit_id": ids, + "person_household_id": ids, + "age": 40, + "self_employment_income": np.asarray(profit, dtype=np.float64), + } + ) + benunit = pd.DataFrame({"benunit_id": ids}) + return uk_national_frame( + person=person, benunit=benunit, household=household, time_period="2024" + ) + + +def test_claimant_rates_follow_the_profit_bands_with_inclusive_upper_bounds() -> None: + profit = np.asarray([-500.0, 0.0, 0.01, 4_500.0, 4_500.01, 9_000.0, 9_000.01]) + assert claimant_rates(profit).tolist() == [0.0, 0.0, 0.72, 0.72, 0.14, 0.14, 0.0] + + +def test_claimants_add_the_allowance_and_other_traders_the_raised_one() -> None: + profit = np.asarray([0.0, -1_200.0, 800.0, 6_000.0, 25_000.0] * 200) + ids = np.arange(len(profit)) + receipts, claimant = assign_trading_allowance_receipts(ids, profit) + trader = profit > 0.0 + # No positive profit: no receipts, which the engine reads as unknown. + assert (receipts[~trader] == 0.0).all() + assert not claimant[~trader].any() + np.testing.assert_allclose(receipts[claimant], profit[claimant] + 1_000.0) + np.testing.assert_allclose( + receipts[trader & ~claimant], profit[trader & ~claimant] + 3_000.0 + ) + # Nobody above GBP 9,000 claims; the draw is the person's own uniform. + assert not claimant[profit > 9_000.0].any() + uniforms = stable_identity_uniforms( + ids[trader], seed=0, salt="trading_allowance_claimant" + ) + assert ( + claimant[trader].tolist() + == (uniforms < claimant_rates(profit[trader])).tolist() + ) + # Two hundred draws per band land near the band's rate. + assert claimant[profit == 800.0].mean() == pytest.approx(0.72, abs=0.1) + assert claimant[profit == 6_000.0].mean() == pytest.approx(0.14, abs=0.1) + + +def test_the_stage_stores_receipts_deterministically_and_moves_nothing_else() -> None: + profit = np.tile([0.0, 900.0, 3_000.0, 7_000.0, 40_000.0], 40) + frame = _frame(profit) + first = UKTradingAllowanceReceiptsStageTransform(stage=_stage())(frame) + second = UKTradingAllowanceReceiptsStageTransform(stage=_stage())(frame) + person = first.table("person") + pd.testing.assert_series_equal( + person[TRADING_ALLOWANCE_RECEIPTS_OUTPUT], + second.table("person")[TRADING_ALLOWANCE_RECEIPTS_OUTPUT], + ) + expenses = ( + person[TRADING_ALLOWANCE_RECEIPTS_OUTPUT] - person["self_employment_income"] + ) + assert set(np.round(expenses[profit > 0.0], 6)) <= {1_000.0, 3_000.0} + assert (person.loc[profit <= 0.0, TRADING_ALLOWANCE_RECEIPTS_OUTPUT] == 0.0).all() + before = frame.table("person") + pd.testing.assert_frame_equal( + person.drop(columns=[TRADING_ALLOWANCE_RECEIPTS_OUTPUT]), before + ) + np.testing.assert_array_equal( + first.weights_for("household").values, frame.weights_for("household").values + ) + (record,) = first.mass_log[len(frame.mass_log) :] + assert record.declared_factor == 1.0 + assert record.old_total == record.new_total + + +def test_the_receipt_rounds_counts_and_bands_shares() -> None: + transform = UKTradingAllowanceReceiptsStageTransform(stage=_stage()) + transform(_frame(np.tile([500.0, 6_000.0, 20_000.0], 50))) + evidence = transform.checkpoint_metadata()["evidence"] + assert evidence["traders"] == 150 + assert isinstance(evidence["claimants"], int) + assert [band["rate"] for band in evidence["bands"]] == [0.72, 0.14, 0.0] + assert all(band["support"] == "30+" for band in evidence["bands"]) + assert evidence["bands"][0]["weighted_traders"] == pytest.approx(100.0) + # Fewer than ten source households behind a band print the small-cell + # label, whatever the rounding rules make it (microcosm#1428 review). + transform(_frame(np.asarray([500.0] * 5))) + small = transform.checkpoint_metadata()["evidence"] + assert small["traders"] == rounded_count(5) + assert small["bands"][0]["weighted_traders"] == small_cell_share(10.0, 5) + + +def test_the_stage_refuses_drifted_parameters_and_a_second_writer() -> None: + stage = _stage() + operation, receipt = stage.operations + drifted = replace( + stage, + operations=( + replace( + operation, + parameters={**dict(operation.parameters), "claimant_expenses": 900.0}, + ), + receipt, + ), + ) + with pytest.raises(ValueError, match="parameters drifted"): + UKTradingAllowanceReceiptsStageTransform(stage=drifted)(_frame([500.0])) + frame = UKTradingAllowanceReceiptsStageTransform(stage=stage)(_frame([500.0])) + with pytest.raises(ValueError, match="only writer"): + UKTradingAllowanceReceiptsStageTransform(stage=stage)(frame) diff --git a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py index 047be48319..c0f48ccca4 100644 --- a/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py +++ b/packages/microcosm-build/tests/engine_free/uk/test_uk_uc_take_up.py @@ -11,6 +11,7 @@ from microcosm.build.country_spec import load_country_spec from microcosm.build.source_manifest import SourceStageSpec +from microcosm.build.uk_runtime import uc_take_up from microcosm.build.uk_runtime.frs_take_up import ( UK_TAKE_UP_SIGNAL_OUTPUTS, UKTakeUpPopulationPolicy, @@ -233,9 +234,11 @@ def test_a_pool_nearer_zero_than_its_first_unit_draws_no_claimant() -> None: assert would_claim.tolist() == [True, False] -def test_clipped_pools_are_flagged_unreachable() -> None: - # Band 0: reporters alone exceed DWP's count, so no drawn unit claims. - # Band 2: DWP's count exceeds every entitled unit, so all of them claim. +def test_a_family_type_that_cannot_meet_its_count_is_flagged_unreachable() -> None: + # Band 0: reporters alone exceed DWP's count; band 2: the count exceeds + # every entitled unit. Each band keeps its own pool: the two gaps offset, + # the remaining shortfall takes band 0's one drawn unit, and the family + # type still falls short, so every drawn unit claims (microcosm#1428). award = np.asarray([100.0] * 4 + [3_000.0] * 4) reporter = np.asarray([True, True, True, False, False, False, False, False]) would_claim, receipt = _assign( @@ -247,39 +250,102 @@ def test_clipped_pools_are_flagged_unreachable() -> None: source_ids=np.asarray([0, 0, 1, 1, 4, 5, 6, 7]), minimum_pool_sources=1, ) - assert would_claim.tolist() == [True, True, True, False, True, True, True, True] + assert would_claim.all() flags = { - tuple(pool["bands"]): pool["target_unreachable"] + pool["bands"][0]: pool["target_unreachable"] for pool in receipt["pools"] if pool["family_type"] == "SINGLE" } - # A pool on fewer than three sources withholds its flag. - assert flags[(UC_AWARD_BAND_LABELS[0],)] == "<3" - pools = receipt["pools"] - assert all("rate" not in pool for pool in pools) - # With three or more sources behind a pool the flag says which side it is on. - many = np.asarray([100.0] * 12 + [3_000.0] * 12) + # A pool on fewer than three sources withholds its flag; band 2's pool, + # with the empty band 1 and those above, rests on four. + assert flags == { + UC_AWARD_BAND_LABELS[0]: "<3", + UC_AWARD_BAND_LABELS[1]: "target_exceeds_entitled", + } + assert all("rate" not in pool for pool in receipt["pools"]) + # With three or more sources behind a pool the flag says which side it is + # on: the singles' reporters exceed their count, and the couples' count + # exceeds every entitled unit. + family = np.asarray(["SINGLE"] * 12 + ["COUPLE_NO_CHILDREN"] * 12, dtype=object) _, receipt = _assign( - award=many, - reporter=np.asarray([True] * 10 + [False] * 14), - targets=_targets(SINGLE_0=2.0, SINGLE_2=50.0), + award=np.asarray([100.0] * 12 + [3_000.0] * 12), + family=family, + reporter=np.asarray([True] * 12 + [False] * 12), + targets=_targets(SINGLE_0=2.0, COUPLE_NO_CHILDREN_2=50.0), minimum_pool_sources=1, ) + flags = { + pool["family_type"]: pool["target_unreachable"] + for pool in receipt["pools"] + if pool["family_type"] in {"SINGLE", "COUPLE_NO_CHILDREN"} + } + assert flags == { + "SINGLE": "undrawn_claims_reach_target", + "COUPLE_NO_CHILDREN": "target_exceeds_entitled", + } + # No pool is reachable, so the gate's reachable totals are empty. + assert receipt["families"]["SINGLE"]["reachable_pools_dwp_caseload"] == 0.0 - # Band 1 holds no unit, so it pools with band 2, and the empty bands above - # join that pool. - def flag(label): - return next( - pool["target_unreachable"] - for pool in receipt["pools"] - if pool["family_type"] == "SINGLE" and label in pool["bands"] - ) - assert flag(UC_AWARD_BAND_LABELS[0]) == "undrawn_claims_reach_target" - assert flag(UC_AWARD_BAND_LABELS[2]) == "target_exceeds_entitled" +def test_an_unmet_pool_passes_its_gap_to_the_neighbour_with_more_room() -> None: + # Band 0: four drawn units and a count of 3 (one to spare); band 2: two + # drawn units and a count of 5 (three short); band 4: ten drawn units and a + # count of 5 (five to spare). Band 2 is held at its two claims and passes + # its three to band 4, which has more room; band 0 keeps its own count, and + # the singles land on DWP's 13 (microcosm#1428 review, finding 7). + award = np.asarray([600.0] * 4 + [3_000.0] * 2 + [5_500.0] * 10) + would_claim, receipt = _assign( + award=award, targets=_targets(SINGLE_0=3.0, SINGLE_2=5.0, SINGLE_4=5.0) + ) + assert int(would_claim[:4].sum()) == 3 + assert would_claim[4:6].all() + assert int(would_claim[6:].sum()) == 8 single = receipt["families"]["SINGLE"] - # No pool is reachable, so the gate's reachable totals are empty. - assert single["reachable_pools_dwp_caseload"] == 0.0 + assert single["caseload_after"] == pytest.approx(13.0) + assert single["reachable_pools_dwp_caseload"] == pytest.approx(13.0) + # On equal room the lower neighbour takes the gap. + award = np.asarray([600.0] * 3 + [3_000.0] + [5_500.0] * 3) + would_claim, _ = _assign( + award=award, targets=_targets(SINGLE_0=1.0, SINGLE_2=2.0, SINGLE_4=1.0) + ) + assert [ + int(would_claim[:3].sum()), + int(would_claim[3]), + int(would_claim[4:].sum()), + ] == [2, 1, 1] + + +def test_an_overshooting_pool_passes_its_excess_to_one_with_drawn_claims() -> None: + # Band 0: three reporters, one drawn unit and a count of 1 (two over); + # band 2: six drawn units and a count of 4. Band 0 is held at its + # reporters and its drawn unit does not claim; its two over come off band + # 2, whose drawn units carry the two claims DWP's 5 leaves. A joined pool + # had let band 0's drawn unit claim (microcosm#1428 review, finding 7). + award = np.asarray([600.0] * 4 + [3_000.0] * 6) + reporter = np.asarray([True] * 3 + [False] * 7) + would_claim, receipt = _assign( + award=award, reporter=reporter, targets=_targets(SINGLE_0=1.0, SINGLE_2=4.0) + ) + assert would_claim[:3].all() + assert not would_claim[3] + assert int(would_claim[4:].sum()) == 2 + assert receipt["families"]["SINGLE"]["caseload_after"] == pytest.approx(5.0) + + +def test_gaps_offset_before_they_pass() -> None: + # One pool overshoots by 1 and another falls short by 6: the excess + # offsets the shortfall, and only the remaining 5 look for room + # (microcosm#1428 review, finding 7). + counts, unplaced = uc_take_up._pass_unmet_gaps([(2.0, 3.0, 1.0), (10.0, 0.0, 4.0)]) + assert counts == [4.0, 4.0] + assert unplaced == [0.0, 4.0] + # A feasible family type keeps its total: 3 + 5 + 5 over pools that hold + # 0-4, 0-2 and 0-10. + counts, unplaced = uc_take_up._pass_unmet_gaps( + [(3.0, 0.0, 4.0), (5.0, 0.0, 2.0), (5.0, 0.0, 10.0)] + ) + assert counts == [3.0, 2.0, 8.0] + assert not any(unplaced) def test_undrawn_units_keep_their_flag_and_count_at_their_expected_claim() -> None: diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_county_surface.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_county_surface.py index e123c4ddea..09b00307e8 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_county_surface.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_county_surface.py @@ -659,6 +659,13 @@ def test_county_hooks_materialize_a_fixture_and_preserve_configured_geography( monkeypatch.setattr( module, "_require_acs_self_employment_identity", lambda *_a: None ) + # microcosm#1019: the ACS take-up stage needs SPM-unit origin tags this + # geography fixture does not carry; this test checks county hooks only. + monkeypatch.setattr( + module, + "_with_local_take_up", + lambda frame, *, seed: (frame, {"seed": seed, "assigned_sha256": "stub"}), + ) monkeypatch.setattr( module.cd_surface, "sample_staging_frame", diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_no_county_regression.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_no_county_regression.py index 121ff72a74..8e62f155cb 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_no_county_regression.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_no_county_regression.py @@ -286,6 +286,13 @@ def test_no_county_materialization_matches_pre_county_surface( monkeypatch.setattr( module, "_require_acs_self_employment_identity", lambda *_: None ) + # microcosm#1019: the ACS take-up stage needs SPM-unit origin tags this + # geography fixture does not carry; this test checks county hooks only. + monkeypatch.setattr( + module, + "_with_local_take_up", + lambda frame, *, seed: (frame, {"seed": seed, "assigned_sha256": "stub"}), + ) monkeypatch.setattr(module, "log", lambda *_: None) def materialize(_frame, specs, **_kwargs): diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_release_tool.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_release_tool.py index b2fd944d74..ace5cd97e9 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_release_tool.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_release_tool.py @@ -218,6 +218,209 @@ def test_spine_composition_reports_per_spine_weight_and_size() -> None: ) +def _snap_qa_frame(*, households, spm_unit_columns, person_spines=None): + """A tiny calibrated frame for the QA SNAP snapshot. + + ``households`` maps household id -> (weight, state, member count); each + household is one SPM unit (and one unit of every other group entity). + ``spm_unit_columns`` adds the fake engine's per-unit inputs. + """ + + from microcosm.build.us_runtime.base_pool import spine_column + from microcosm.frame import US_SCHEMA, Frame, WeightKind, Weights + + unit_ids = np.asarray(list(households), dtype=np.int64) + members = np.repeat(unit_ids, [size for _, _, size in households.values()]) + person = pd.DataFrame( + { + "person_id": np.arange(1, len(members) + 1), + spine_column("person"): ( + person_spines + if person_spines is not None + else ["acs_2024_1yr"] * len(members) + ), + } + ) + tables = {"person": person} + for entity in US_SCHEMA.entities: + if entity != "person": + person[f"person_{entity}_id"] = members + tables[entity] = pd.DataFrame({f"{entity}_id": unit_ids}) + tables["household"]["_state"] = [state for _, state, _ in households.values()] + tables["spm_unit"] = tables["spm_unit"].assign(**spm_unit_columns) + weights = np.asarray( + [weight for weight, _, _ in households.values()], dtype=np.float64 + ) + return Frame( + tables, + US_SCHEMA, + {"household": Weights(weights, WeightKind.CALIBRATED)}, + ) + + +def _run_snap_qa(module, frame, tmp_path, monkeypatch, *, hh_chunk): + """Run do_qa on ``frame`` under a fake engine; return (calls, payload).""" + + from microcosm.frame.adapters import policyengine_us as adapter_module + + calls: list[tuple[str, ...]] = [] + + class _Engine: + def materialize(self, sub_frame, variables, period): + calls.append(tuple(variables)) + spm = sub_frame.table("spm_unit") + return { + "ssi": np.zeros(sub_frame.n("person")), + "is_snap_eligible": spm["_eligible"].to_numpy(), + "takes_up_snap_if_eligible": spm[ + "takes_up_snap_if_eligible" + ].to_numpy(), + "snap": spm["_snap"].to_numpy(), + "has_usda_elderly_disabled": spm["_elderly_or_disabled"].to_numpy(), + "spm_unit_count_children": spm["_children"].to_numpy(), + "snap_earned_income": spm["_earned"].to_numpy(), + "state_code_str": sub_frame.table("household")["_state"].to_numpy(), + } + + monkeypatch.setattr(adapter_module, "PolicyEngineUSEngine", _Engine) + monkeypatch.setattr(module, "_load_staging_frame", lambda *_a, **_k: frame) + monkeypatch.setattr(module, "_sha256", lambda *_a, **_k: "artifact-sha") + args = SimpleNamespace( + out_h5=tmp_path / "calibrated.h5", hh_chunk=hh_chunk, checkpoint_dir=tmp_path + ) + module.do_qa(args) + return calls, json.loads((tmp_path / "spine_qa.json").read_text()) + + +def test_do_qa_reports_a_december_eligible_snap_snapshot(tmp_path, monkeypatch): + """#1051 review: informational SNAP take-up by spine, state and type. + + Six one-person households (household = SPM unit), weights 1..6, probed in + two chunks. Units 1, 2, 3, 5 and 6 are eligible (weight 17); 1, 3 and 6 + take up (10), and 1 and 3 receive a positive benefit (4). With one-person + units the person-weighted rates equal the unit-weighted ones. + """ + + from microcosm.build.us_runtime.base_pool import spine_column + + module = _load_tool_module() + spines = ["asec_puf"] * 2 + ["acs_2024_1yr"] * 4 + frame = _snap_qa_frame( + households={ + unit: (float(unit), state, 1) + for unit, state in zip( + range(1, 7), ["CA", "CA", "TX", "TX", "CA", "TX"], strict=True + ) + }, + spm_unit_columns={ + spine_column("spm_unit"): spines, + "takes_up_snap_if_eligible": [True, False, True, True, False, True], + "_eligible": [True, True, True, False, True, True], + "_snap": [100.0, 0.0, 50.0, 0.0, 0.0, 0.0], + "_elderly_or_disabled": [False, True, False, False, False, True], + "_children": [0, 0, 2, 1, 0, 0], + "_earned": [0.0, 10.0, 20.0, 0.0, 0.0, 0.0], + }, + person_spines=spines, + ) + calls, payload = _run_snap_qa(module, frame, tmp_path, monkeypatch, hh_chunk=4) + + # One engine pass per chunk reads SSI and the SNAP variables together. + assert len(calls) == 2 + assert set(calls[0]) == {"ssi", "state_code_str", *module._QA_SNAP_VARIABLES} + assert set(payload["per_spine"]) == {"asec_puf", "acs_2024_1yr"} + assert "snap_take_up_among_eligible" not in payload + table = payload["snap_december_eligible_snapshot"] + assert table["graded"] is False + assert table["label"] == "December-eligible snapshot (unit- and person-weighted)" + assert table["not_fns_participation_rate"].startswith( + "Not the FNS fiscal-year participation rate." + ) + assert "December" in table["definition"] + assert "not the FNS fiscal-year participation rate" in payload["note"] + + def rates(cell): + return ( + cell["eligible_units"], + cell["eligible_unit_weight"], + pytest.approx(cell["unit_take_up_rate"]), + ) + + overall = table["all"] + assert rates(overall) == (5, 17.0, pytest.approx(10 / 17)) + assert overall["unit_receiving_rate"] == pytest.approx(4 / 17) + assert overall["eligible_persons"] == 5 + assert overall["eligible_person_weight"] == pytest.approx(17.0) + assert overall["person_take_up_rate"] == pytest.approx(10 / 17) + assert overall["person_receiving_rate"] == pytest.approx(4 / 17) + assert {k: rates(v) for k, v in table["by_household_type"].items()} == { + "elderly_or_disabled": (2, 8.0, pytest.approx(0.75)), + "with_children": (1, 3.0, pytest.approx(1.0)), + "childless_adults": (2, 6.0, pytest.approx(1 / 6)), + "with_earnings": (2, 5.0, pytest.approx(0.6)), + } + assert rates(table["by_spine"]["asec_puf"]["all"]) == (2, 3.0, pytest.approx(1 / 3)) + acs = table["by_spine"]["acs_2024_1yr"] + assert rates(acs["all"]) == (3, 14.0, pytest.approx(9 / 14)) + assert rates(acs["by_household_type"]["childless_adults"]) == ( + 1, + 5.0, + pytest.approx(0.0), + ) + assert {k: rates(v) for k, v in table["by_state"].items()} == { + "CA": (3, 8.0, pytest.approx(1 / 8)), + "TX": (2, 9.0, pytest.approx(1.0)), + } + + +def test_do_qa_snap_snapshot_weights_people_by_unit_size(tmp_path, monkeypatch) -> None: + """#1051 review A1 (round 4): her example, through do_qa. + + One eligible one-person unit that does not take up and one eligible + four-person unit that does, at equal weights: half the units take up, but + four of the five eligible people do. + """ + + from microcosm.build.us_runtime.base_pool import spine_column + + module = _load_tool_module() + frame = _snap_qa_frame( + households={1: (10.0, "CA", 1), 2: (10.0, "CA", 4)}, + spm_unit_columns={ + spine_column("spm_unit"): ["acs_2024_1yr"] * 2, + "takes_up_snap_if_eligible": [False, True], + "_eligible": [True, True], + "_snap": [0.0, 300.0], + "_elderly_or_disabled": [False, False], + "_children": [0, 2], + "_earned": [0.0, 100.0], + }, + ) + _calls, payload = _run_snap_qa(module, frame, tmp_path, monkeypatch, hh_chunk=1) + overall = payload["snap_december_eligible_snapshot"]["all"] + assert overall["eligible_units"] == 2 + assert overall["eligible_unit_weight"] == pytest.approx(20.0) + assert overall["unit_take_up_rate"] == pytest.approx(0.5) + assert overall["eligible_persons"] == 5 + assert overall["eligible_person_weight"] == pytest.approx(50.0) + assert overall["person_take_up_weight"] == pytest.approx(40.0) + assert overall["person_take_up_rate"] == pytest.approx(0.8) + assert overall["unit_receiving_rate"] == pytest.approx(0.5) + assert overall["person_receiving_rate"] == pytest.approx(0.8) + + +def test_snap_december_snapshot_handles_no_eligible_units() -> None: + module = _load_tool_module() + empty = pd.DataFrame(columns=list(module._QA_SNAP_UNIT_COLUMNS)) + table = module.snap_december_eligible_snapshot(empty) + assert table["all"]["eligible_units"] == 0 + assert table["all"]["eligible_persons"] == 0 + assert table["all"]["unit_take_up_rate"] is None + assert table["all"]["person_take_up_rate"] is None + assert table["by_spine"] == {} + assert table["by_state"] == {} + + def test_finalize_reviewed_limitations_carries_staging_and_dedupes() -> None: module = _load_tool_module() staging_summary = { @@ -590,6 +793,78 @@ def failed_gate(frame, *, source_null_audit): assert seen == [(marker, audit)] +def test_reviewed_null_fill_refuses_to_default_fill_take_up(tmp_path) -> None: + """microcosm#1019: a missing take-up cell is refused even when registered, + because the engine default ``True`` is universal take-up.""" + + from microcosm.frame import Frame + + module = _load_tool_module() + frame = _plausible_hours_frame() + spm_unit = frame.table("spm_unit").assign( + takes_up_snap_if_eligible=[True, False] * 3 + [np.nan] * 2 + ) + frame = Frame( + { + entity: spm_unit if entity == "spm_unit" else frame.table(entity) + for entity in frame.entities + }, + frame.schema, + {"household": frame.weights_for("household")}, + ) + summary = tmp_path / "staging.summary.json" + summary.write_text( + json.dumps( + { + "reviewed_engine_input_nulls": [ + { + "entity": "spm_unit", + "column": "takes_up_snap_if_eligible", + "missing_rows": 2, + } + ] + } + ) + ) + with pytest.raises( + module.DeniedDefaultFillError, + match=r"spm_unit\.takes_up_snap_if_eligible \(2 null rows\)", + ): + module.fill_reviewed_nulls(frame, summary) + assert spm_unit["takes_up_snap_if_eligible"].isna().sum() == 2 + + +def test_take_up_consumers_refuse_a_checkpoint_without_the_assignment() -> None: + module = _load_tool_module() + for identity in ( + {}, + {"acs_local_take_up": {"seed": "0", "assigned_sha256": "a" * 64}}, + {"acs_local_take_up": {"seed": 0}}, + ): + with pytest.raises(SystemExit, match="Re-run --stage materialize"): + module._recorded_take_up(identity) + recorded = {"seed": 3, "assigned_sha256": "a" * 64} + assert module._recorded_take_up({"acs_local_take_up": recorded}) == recorded + + +def _record_current_materialization(module, args, identity: dict) -> dict: + """Record what a current materialize stage leaves for the later stages. + + The release tool refuses, before any solve, a checkpoint that predates a + requirement of this stack: here the take-up assignment ``run_identity.json`` + records (microcosm#1019). A test that drives ``do_calibrate`` or a later + stage on a stubbed checkpoint, to exercise some other refusal, records a + current materialization through this one helper so it still reaches the + refusal it tests; the sparse-CD and target-loss-weight tests load it from + here. ``module`` and ``args`` locate what a materialization records outside + its identity (the staging summary, checkpoint files) once a requirement + lives there. + """ + + identity["acs_local_take_up"] = {"seed": 0, "assigned_sha256": "a" * 64} + return identity + + def _package_evidence_args(module, tmp_path: Path, monkeypatch, *, hours_report): """Every package-stage input, with the finalize report's hours entry given. @@ -628,6 +903,12 @@ def _package_evidence_args(module, tmp_path: Path, monkeypatch, *, hours_report) "detail": {}, "artifact_sha256": artifact_sha, }, + "acs_local_take_up_signal": { + "passed": True, + "failures": [], + "detail": {}, + "artifact_sha256": artifact_sha, + }, } if hours_report is not None: gates["acs_local_hours_signal"] = hours_report @@ -1392,6 +1673,23 @@ def _stub_local_hours_gate(module, monkeypatch) -> None: ) +def _stub_local_take_up_gate(module, monkeypatch, *, passed=True) -> None: + """Make the ACS take-up classification pass (or fail); its tests cover it.""" + + from microcosm.build.gates import GateResult + + monkeypatch.setattr( + module, + "acs_local_take_up_signal_gate", + lambda frame: GateResult( + name="acs_local_take_up_signal", + passed=passed, + failures=() if passed else ("acs_2024_1yr: invented constant take-up",), + details={}, + ), + ) + + def _patch_finalize_collaborators(module, monkeypatch, frame=None, *, identity=True): """Stub the ladder gate and composition; ``frame=None`` loads real bytes.""" @@ -1408,6 +1706,7 @@ def _patch_finalize_collaborators(module, monkeypatch, frame=None, *, identity=T ) monkeypatch.setattr(module, "spine_composition", lambda *a, **k: {}) _stub_local_hours_gate(module, monkeypatch) + _stub_local_take_up_gate(module, monkeypatch) if frame is not None: monkeypatch.setattr(module, "_load_staging_frame", lambda *a, **k: frame) if identity: @@ -1499,6 +1798,64 @@ def test_do_finalize_hours_gate_passes_on_plausible_surface( assert report["gates"]["hours_worked_signal"]["passed"] is True +def test_do_finalize_hard_fails_on_a_failed_take_up_gate(tmp_path, monkeypatch): + module = _load_tool_module() + args = _finalize_args(module, tmp_path) + _patch_finalize_collaborators(module, monkeypatch, _plausible_hours_frame()) + _stub_local_take_up_gate(module, monkeypatch, passed=False) + with pytest.raises(SystemExit) as exc: + module.do_finalize(args) + assert "acs_local_take_up_signal" in str(exc.value) + report = json.loads(args.gate_report.read_text()) + gate = report["gates"]["acs_local_take_up_signal"] + assert gate["passed"] is False + assert gate["failures"] == ["acs_2024_1yr: invented constant take-up"] + assert gate["artifact_sha256"] == module._sha256(args.out_h5) + summary = json.loads(args.out_summary.read_text()) + assert "acs_local_take_up_signal" in summary["simulation_readiness_blockers"] + + +def test_do_finalize_take_up_gate_fails_on_default_filled_acs_rows( + tmp_path, monkeypatch +): + """The 2026-09-23 release signature: every ACS unit takes SNAP/TANF up.""" + + from microcosm.build.us_runtime.base_pool import spine_column + from microcosm.frame import Frame + + module = _load_tool_module() + real_gate = module.acs_local_take_up_signal_gate + args = _finalize_args(module, tmp_path) + frame = _plausible_hours_frame() + spm_unit = frame.table("spm_unit").assign( + **{ + spine_column("spm_unit"): ["asec_puf"] * 4 + ["acs_2024_1yr"] * 4, + "takes_up_snap_if_eligible": [True, True, True, False] + [True] * 4, + "takes_up_tanf_if_eligible": [True, False, False, False] + [True] * 4, + "receives_snap": [True] + [False] * 7, + } + ) + frame = Frame( + { + entity: spm_unit if entity == "spm_unit" else frame.table(entity) + for entity in frame.entities + }, + frame.schema, + {"household": frame.weights_for("household")}, + ) + _patch_finalize_collaborators(module, monkeypatch, frame) + monkeypatch.setattr(module, "acs_local_take_up_signal_gate", real_gate) + with pytest.raises(SystemExit, match="acs_local_take_up_signal"): + module.do_finalize(args) + gate = json.loads(args.gate_report.read_text())["gates"]["acs_local_take_up_signal"] + assert gate["passed"] is False + assert all(failure.startswith("acs_2024_1yr:") for failure in gate["failures"]) + assert any( + "takes_up_snap_if_eligible is constant" in failure + for failure in gate["failures"] + ) + + @requires_pytables def test_finalize_binds_the_hours_gate_to_the_calibrated_artifact_bytes( tmp_path, monkeypatch @@ -1693,7 +2050,9 @@ def test_a_sparse_era_calibration_is_bound_through_finalize_and_package( assert result["root_artifact"]["sha256"] == artifact_sha -def _package_args_with_hours(module, tmp_path, monkeypatch, *, gate_state): +def _package_args_with_hours( + module, tmp_path, monkeypatch, *, gate_state, take_up_state="passed" +): """Real tiny H5 bytes; gate edits model stale separately resumed finalize.""" _stub_local_hours_gate(module, monkeypatch) @@ -1722,6 +2081,13 @@ def _package_args_with_hours(module, tmp_path, monkeypatch, *, gate_state): if gate_state == "missing" else {"hours_worked_signal": gate, "acs_local_hours_signal": local_gate} ) + take_up_gate = {"passed": True, "failures": [], "artifact_sha256": artifact_sha} + if take_up_state == "failed": + take_up_gate.update(passed=False, failures=["invented take-up failure"]) + elif take_up_state == "stale": + take_up_gate["artifact_sha256"] = "0" * 64 + if gates and take_up_state != "missing": + gates["acs_local_take_up_signal"] = take_up_gate args.gate_report.write_text(json.dumps({"gates": gates})) args.out_summary.write_text(json.dumps({"simulation_ready": True})) evidence = { @@ -1773,6 +2139,11 @@ def test_package_accepts_passing_hours_gate_bound_to_the_packaged_bytes( copied_sha = module._sha256(Path(result["root_artifact"]["local_path"])) assert gate["passed"] is True assert gate["artifact_sha256"] == result["root_artifact"]["sha256"] == copied_sha + take_up = json.loads((release_dir / "gate_summary.json").read_text())["gates"][ + "acs_local_take_up_signal" + ] + assert take_up["passed"] is True + assert take_up["artifact_sha256"] == copied_sha for name in ("build_manifest.json", "gate_summary.json"): work_gate = json.loads((release_dir / name).read_text())["gates"][ "work_experience_inputs" @@ -1787,6 +2158,26 @@ def test_package_accepts_passing_hours_gate_bound_to_the_packaged_bytes( } +@requires_pytables +@pytest.mark.parametrize("take_up_state", ["missing", "failed", "stale"]) +def test_package_requires_a_current_take_up_gate(tmp_path, monkeypatch, take_up_state): + """microcosm#1019: a report finalized before the take-up gate, or failing + it, or bound to other bytes, cannot package.""" + + module = _load_tool_module() + args = _package_args_with_hours( + module, + tmp_path, + monkeypatch, + gate_state="passed", + take_up_state=take_up_state, + ) + with pytest.raises(SystemExit, match="acs_local_take_up_signal"): + module.do_package(args) + assert not (args.out / "package_result.json").exists() + assert not list((args.out / "releases").rglob("*.json")) + + @requires_pytables @pytest.mark.parametrize("defect", ["missing", "asec_null", "acs_null", "nonfinite"]) def test_package_refuses_historical_staging_with_incomplete_work_experience( @@ -2566,7 +2957,11 @@ def test_do_calibrate_stamps_and_records_the_penalty_settings( module = _load_tool_module() calls = _recording_calibrate(monkeypatch) frame, design, targets = _tiny_calibration_surface() - identity = {"staging_sha256": "s", "target_roles_sha256": "r"} + identity = { + "staging_sha256": "s", + "target_roles_sha256": "r", + "acs_local_take_up": {"seed": 0, "assigned_sha256": "a" * 64}, + } monkeypatch.setattr(module, "_verify_run_identity", lambda args: identity) income = TargetSpec( name="income", @@ -2626,6 +3021,14 @@ def test_do_calibrate_stamps_and_records_the_penalty_settings( ) ) args.checkpoint_dir.mkdir() + # A checkpoint materialized before #1019 is refused before any solve. + monkeypatch.setattr( + module, "_verify_run_identity", lambda args: {"staging_sha256": "s"} + ) + with pytest.raises(SystemExit, match="no ACS local take-up assignment"): + module.do_calibrate(args) + assert calls == [] + monkeypatch.setattr(module, "_verify_run_identity", lambda args: identity) module.do_calibrate(args) assert len(calls) == 2 diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_sparse_cd.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_sparse_cd.py index df4b68e868..54241c352a 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_sparse_cd.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_sparse_cd.py @@ -54,6 +54,19 @@ def _load_fixtures(): return fixtures +def _load_release_tool_tests(): + """The release-tool tests, for their record of a current materialization.""" + + spec = importlib.util.spec_from_file_location( + "acs_local_release_tool_tests", + Path(__file__).with_name("test_us_acs_local_release_tool.py"), + ) + tests = importlib.util.module_from_spec(spec) + assert spec.loader is not None + spec.loader.exec_module(tests) + return tests + + def _district_hierarchy(name: str, district: str): """A production-shaped hierarchy: its target id is the spec name.""" @@ -1210,6 +1223,9 @@ def test_resume_refuses_weights_without_the_run_identity_stamp( seed=0, target_family_loss_multipliers={}, ) + # A current materialization, so the stack's pre-solve refusals pass + # and the stamp checks below are what refuse. + _load_release_tool_tests()._record_current_materialization(module, args, identity) settings = module._solver_settings( args, module.release_target_loss_weights(args, [])[1] ) diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_take_up.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_take_up.py new file mode 100644 index 0000000000..805e6d05bf --- /dev/null +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_take_up.py @@ -0,0 +1,343 @@ +"""ACS-row SNAP/TANF take-up for the retained ACS local lane (microcosm#1019).""" + +from __future__ import annotations + +import numpy as np +import pandas as pd +import pytest + +from microcosm.build.us_runtime.acs_local_take_up import ( + ACS_LOCAL_TAKE_UP_GATE_NAME, + US_TANF_TAKE_UP_OUTPUT_COLUMN, + acs_local_take_up_signal_gate, + with_acs_local_take_up_inputs, +) +from microcosm.build.us_runtime.acs_pums import ACS_2024_1YR_SPINE +from microcosm.build.us_runtime.acs_transfer import ASEC_PUF_DONOR_SPINE +from microcosm.build.us_runtime.base_pool import spine_column +from microcosm.build.us_runtime.snap_take_up import ( + US_SNAP_TAKE_UP_OUTPUT_COLUMN, + us_snap_take_up_stage_spec, +) +from microcosm.build.us_runtime.take_up import _seed_program +from microcosm.build.us_runtime.take_up_contract import seeded_take_up_programs +from microcosm.frame import US_SCHEMA, Frame, WeightKind, Weights + +SNAP = US_SNAP_TAKE_UP_OUTPUT_COLUMN +TANF = US_TANF_TAKE_UP_OUTPUT_COLUMN +TAG = spine_column("spm_unit") + + +def _manifest_snap_rate() -> float: + (operation,) = [ + op + for op in us_snap_take_up_stage_spec().operations + if op.kind == "derive_snap_take_up" + ] + return float(operation.parameters["take_up_rate"]["value"]) + + +def _frame( + *, + n_asec: int = 200, + n_acs: int = 3000, + reporter_share: float = 0.1, + drop: tuple[str, ...] = (), +) -> Frame: + """ASEC rows carry donor flags; ACS rows carry NaN flags and no source ids.""" + + n = n_asec + n_acs + ids = np.arange(1, n + 1) + rng = np.random.default_rng(7) + asec = np.arange(n) < n_asec + person = pd.DataFrame({"person_id": ids}) + tables = {"person": person} + for entity in US_SCHEMA.entities: + if entity == "person": + continue + person[f"person_{entity}_id"] = ids + tables[entity] = pd.DataFrame({f"{entity}_id": ids}) + person["source_year"] = np.where(asec, 2024, np.nan) + person["source_household_id"] = np.where(asec, ids + 10_000, np.nan) + person["source_person_id"] = np.where(asec, ids + 20_000, np.nan) + spm_unit = tables["spm_unit"] + spm_unit[TAG] = np.where(asec, ASEC_PUF_DONOR_SPINE, ACS_2024_1YR_SPINE) + position = np.arange(n) + spm_unit[SNAP] = pd.Series( + np.where(position < int(0.85 * n_asec), True, False), dtype=object + ).where(asec, np.nan) + spm_unit[TANF] = pd.Series( + np.where(position < int(0.25 * n_asec), True, False), dtype=object + ).where(asec, np.nan) + reporters = np.where(asec, position < 20, rng.random(n) < reporter_share) + spm_unit["receives_snap"] = reporters + for column in drop: + spm_unit.drop(columns=column, inplace=True) + weights = rng.uniform(0.5, 2.0, n) + return Frame( + tables, US_SCHEMA, {"household": Weights(weights, WeightKind.CALIBRATED)} + ) + + +def _with_spm_table(frame: Frame, spm_unit: pd.DataFrame) -> Frame: + return Frame( + { + entity: spm_unit if entity == "spm_unit" else frame.table(entity) + for entity in frame.entities + }, + frame.schema, + {"household": frame.weights_for("household")}, + ) + + +def _with_spm(frame: Frame, **columns) -> Frame: + return _with_spm_table(frame, frame.table("spm_unit").assign(**columns)) + + +def _acs(frame: Frame) -> np.ndarray: + return frame.table("spm_unit")[TAG].eq(ACS_2024_1YR_SPINE).to_numpy() + + +def test_donor_rows_stay_identical_and_acs_cells_are_filled() -> None: + frame = _frame() + before = frame.table("spm_unit").copy(deep=True) + result, receipt = with_acs_local_take_up_inputs(frame, seed=0) + after = result.table("spm_unit") + asec = ~_acs(frame) + for column in (SNAP, TANF): + assert after[column].notna().all() + assert after[column].dtype == bool + assert np.array_equal( + before.loc[asec, column].to_numpy(dtype=object), + after.loc[asec, column].to_numpy(dtype=object), + ) + assert receipt["programs"][column]["filled_rows"] == int(_acs(frame).sum()) + # The input frame is not mutated. + assert frame.table("spm_unit")[SNAP].isna().sum() == int(_acs(frame).sum()) + + +def test_acs_reporters_take_up_and_stored_acs_cells_are_kept() -> None: + frame = _frame() + acs = _acs(frame) + spm_unit = frame.table("spm_unit") + stored = int(np.flatnonzero(acs & spm_unit["receives_snap"].to_numpy())[0]) + snap = spm_unit[SNAP].copy() + snap.iloc[stored] = False + result, receipt = with_acs_local_take_up_inputs( + _with_spm(frame, **{SNAP: snap}), seed=0 + ) + after = result.table("spm_unit") + reporters = acs & spm_unit["receives_snap"].to_numpy() + reporters[stored] = False + assert after.loc[reporters, SNAP].all() + assert not after[SNAP].iloc[stored] + assert receipt["programs"][SNAP]["preserved_rows"] == 1 + + +def test_weighted_acs_shares_land_on_the_manifest_and_contract_rates() -> None: + frame = _frame() + acs = _acs(frame) + result, receipt = with_acs_local_take_up_inputs(frame, seed=3) + after = result.table("spm_unit") + weights = frame.weights_for("household").values + snap_share = weights[acs & after[SNAP].to_numpy()].sum() / weights[acs].sum() + rate = _manifest_snap_rate() + assert receipt["programs"][SNAP]["rate"] == rate + assert snap_share == pytest.approx(rate, abs=0.02) + assert receipt["programs"][SNAP]["weighted_take_up_share"] == pytest.approx( + snap_share + ) + # ACS rows have no source identity; the draws must not collapse onto one key. + non_reporters = acs & ~frame.table("spm_unit")["receives_snap"].to_numpy() + assert after.loc[non_reporters, SNAP].nunique() == 2 + + (program,) = [p for p in seeded_take_up_programs() if p.variable == TANF] + seeded, _ = _seed_program(frame, program, seed=3) + assert np.array_equal(after.loc[acs, TANF].to_numpy(), seeded[TANF][acs]) + tanf_share = receipt["programs"][TANF]["weighted_take_up_share"] + assert tanf_share == pytest.approx(float(program.rate["value"]), abs=0.03) + + +def test_receipt_cross_tabs_transferred_tanf_receipt_against_the_draw() -> None: + """#1051 review: the TANF draw ignores receives_tanf; the receipt measures it.""" + + frame = _frame() + acs = _acs(frame) + receives_tanf = np.random.default_rng(11).random(len(acs)) < 0.05 + with_receipt = _with_spm(frame, receives_tanf=receives_tanf) + result, receipt = with_acs_local_take_up_inputs(with_receipt, seed=5) + table = receipt["programs"][TANF]["receipt_crosstab"] + weights = np.asarray(frame.weights_for("household").values)[acs] + reports = receives_tanf[acs] + takes_up = result.table("spm_unit").loc[acs, TANF].to_numpy(dtype=bool) + assert table["available"] is True + assert table["graded"] is False + assert table["units"] == int(acs.sum()) + assert table["missing_receipt_rows_as_non_reporters"] == 0 + expected = { + "receives_tanf__takes_up": reports & takes_up, + "receives_tanf__no_take_up": reports & ~takes_up, + "no_receives_tanf__takes_up": ~reports & takes_up, + "no_receives_tanf__no_take_up": ~reports & ~takes_up, + } + assert set(table["cells"]) == set(expected) + for label, cell in expected.items(): + assert table["cells"][label]["units"] == int(cell.sum()) + assert table["cells"][label]["weight"] == pytest.approx(weights[cell].sum()) + assert table["cells"][label]["weight_share"] == pytest.approx( + weights[cell].sum() / weights.sum() + ) + assert table["receives_tanf_units"] == int(reports.sum()) + assert table["receives_tanf_drew_false_units"] == int((reports & ~takes_up).sum()) + assert table["receives_tanf_drew_false_share"] == pytest.approx( + weights[reports & ~takes_up].sum() / weights[reports].sum() + ) + # The draw is independent of receipt, so most reporters draw False at the + # contract's sub-0.5 rate, but not all of them. + assert 0 < table["receives_tanf_drew_false_units"] < table["receives_tanf_units"] + # Recording the table changes nothing in the assignment. + _, plain = with_acs_local_take_up_inputs(frame, seed=5) + assert plain["assigned_sha256"] == receipt["assigned_sha256"] + + +def test_receipt_crosstab_reports_an_absent_receives_tanf() -> None: + _, receipt = with_acs_local_take_up_inputs(_frame(), seed=0) + assert receipt["programs"][TANF]["receipt_crosstab"] == { + "available": False, + "graded": False, + "reason": "spm_unit carries no receives_tanf column", + } + + +def test_assignment_is_deterministic_in_the_seed() -> None: + first, first_receipt = with_acs_local_take_up_inputs(_frame(), seed=11) + again, again_receipt = with_acs_local_take_up_inputs(_frame(), seed=11) + other, other_receipt = with_acs_local_take_up_inputs(_frame(), seed=12) + assert first_receipt == again_receipt + for column in (SNAP, TANF): + assert first.table("spm_unit")[column].equals(again.table("spm_unit")[column]) + assert other_receipt["assigned_sha256"] != first_receipt["assigned_sha256"] + + +def test_a_filled_frame_passes_through_unchanged() -> None: + filled, receipt = with_acs_local_take_up_inputs(_frame(), seed=0) + again, again_receipt = with_acs_local_take_up_inputs(filled, seed=0) + assert again is filled + assert again_receipt["programs"][SNAP]["filled_rows"] == 0 + assert again_receipt["assigned_sha256"] == receipt["assigned_sha256"] + + +@pytest.mark.parametrize("column", [SNAP, TANF, "receives_snap", TAG]) +def test_missing_inputs_are_refused(column: str) -> None: + with pytest.raises(ValueError, match="ACS local take-up requires"): + with_acs_local_take_up_inputs(_frame(drop=(column,)), seed=0) + + +def _filled() -> Frame: + return with_acs_local_take_up_inputs(_frame(), seed=0)[0] + + +def test_gate_passes_on_the_seeded_surface_and_ignores_other_flags() -> None: + frame = _filled() + # Other take-up flags remain engine defaults on ACS rows (microcosm#1022). + tables = {entity: frame.table(entity) for entity in frame.entities} + tables["tax_unit"] = tables["tax_unit"].assign(takes_up_eitc=True) + tables["spm_unit"] = tables["spm_unit"].assign( + takes_up_housing_assistance_if_eligible=True + ) + frame = Frame(tables, frame.schema, {"household": frame.weights_for("household")}) + gate = acs_local_take_up_signal_gate(frame) + assert gate.passed, gate.failures + assert gate.name == ACS_LOCAL_TAKE_UP_GATE_NAME + acs = gate.details["per_spine"][ACS_2024_1YR_SPINE]["columns"] + assert acs[SNAP]["reporters_not_taking_up"] == 0 + assert set(acs) == {SNAP, TANF} + + +def test_gate_fails_on_the_default_filled_release_signature() -> None: + """The 2026-09-23 release: every ACS unit default-filled to take up.""" + + frame = _frame() + acs = _acs(frame) + spm_unit = frame.table("spm_unit") + frame = _with_spm( + frame, + **{column: spm_unit[column].where(~acs, True) for column in (SNAP, TANF)}, + ) + gate = acs_local_take_up_signal_gate(frame) + assert not gate.passed + for column in (SNAP, TANF): + assert f"{ACS_2024_1YR_SPINE}: {column} is constant" in " ".join(gate.failures) + assert not any(ASEC_PUF_DONOR_SPINE in failure for failure in gate.failures) + + +def test_gate_fails_on_missing_cells() -> None: + gate = acs_local_take_up_signal_gate(_frame()) + assert not gate.passed + assert f"{ACS_2024_1YR_SPINE}: {SNAP} has missing rows" in " ".join(gate.failures) + + +def test_gate_fails_when_a_reporter_does_not_take_up() -> None: + frame = _filled() + spm_unit = frame.table("spm_unit") + reporter = int( + np.flatnonzero(_acs(frame) & spm_unit["receives_snap"].to_numpy())[0] + ) + snap = spm_unit[SNAP].copy() + snap.iloc[reporter] = False + gate = acs_local_take_up_signal_gate(_with_spm(frame, **{SNAP: snap})) + assert not gate.passed + assert "1 SPM unit(s) report SNAP receipt" in " ".join(gate.failures) + + +def test_gate_fails_on_a_non_constant_share_outside_the_band() -> None: + frame = _filled() + acs = _acs(frame) + spm_unit = frame.table("spm_unit") + # Only reporters take up: a non-constant surface far below the FNS rate. + low_snap = spm_unit[SNAP].where(~acs, spm_unit["receives_snap"]) + gate = acs_local_take_up_signal_gate(_with_spm(frame, **{SNAP: low_snap})) + assert not gate.passed + assert f"{ACS_2024_1YR_SPINE}: {SNAP} take-up share" in " ".join(gate.failures) + assert f"{TANF}" not in " ".join(gate.failures) + + +def test_gate_reports_but_does_not_grade_donor_shares_or_anchors() -> None: + """Donor-spine cells come from the donor release; only completeness fails.""" + + frame = _filled() + asec = ~_acs(frame) + spm_unit = frame.table("spm_unit") + # A donor surface far outside the band, with a reporter not taking up. + donor_snap = spm_unit[SNAP].where(~asec, spm_unit["receives_snap"]) + reporter = int(np.flatnonzero(asec & spm_unit["receives_snap"].to_numpy())[0]) + donor_snap.iloc[reporter] = False + gate = acs_local_take_up_signal_gate(_with_spm(frame, **{SNAP: donor_snap})) + assert gate.passed, gate.failures + donor = gate.details["per_spine"][ASEC_PUF_DONOR_SPINE] + assert donor["graded"] is False + assert donor["columns"][SNAP]["reporters_not_taking_up"] == 1 + assert gate.details["per_spine"][ACS_2024_1YR_SPINE]["graded"] is True + # Completeness still fails on the donor spine. + constant = acs_local_take_up_signal_gate( + _with_spm(frame, **{SNAP: spm_unit[SNAP].where(~asec, True)}) + ) + assert f"{ASEC_PUF_DONOR_SPINE}: {SNAP} is constant" in " ".join(constant.failures) + + +def test_gate_fails_on_missing_columns_tags_or_unknown_spines() -> None: + frame = _filled() + spm_unit = frame.table("spm_unit") + missing = acs_local_take_up_signal_gate( + _with_spm_table(frame, spm_unit.drop(columns=[TANF, "receives_snap"])) + ) + assert f"{ACS_2024_1YR_SPINE}: missing {TANF}." in missing.failures + assert any("reported-receipt anchor" in failure for failure in missing.failures) + untagged = acs_local_take_up_signal_gate( + _with_spm(frame, **{TAG: spm_unit[TAG].where(spm_unit.index > 0)}) + ) + assert untagged.failures == (f"Missing SPM-unit origin tags: {TAG}.",) + unknown = acs_local_take_up_signal_gate( + _with_spm(frame, **{TAG: spm_unit[TAG].where(spm_unit.index > 0, "other")}) + ) + assert "unsupported spine" in " ".join(unknown.failures) diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_target_loss_weights.py b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_target_loss_weights.py index bdb1da7fc6..06aa1f250b 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_target_loss_weights.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_acs_local_target_loss_weights.py @@ -13,6 +13,7 @@ import importlib.util import json import shlex +from pathlib import Path from types import SimpleNamespace import numpy as np @@ -276,6 +277,19 @@ def _args(tmp_path, **overrides): return SimpleNamespace(**values) +def _load_release_tool_tests(): + """The release-tool tests, for their record of a current materialization.""" + + spec = importlib.util.spec_from_file_location( + "acs_local_release_tool_tests", + Path(__file__).with_name("test_us_acs_local_release_tool.py"), + ) + tests = importlib.util.module_from_spec(spec) + assert spec.loader is not None + spec.loader.exec_module(tests) + return tests + + @pytest.fixture def calibrate_run(monkeypatch, tmp_path): """Run ``do_calibrate`` on the fixture; record every ``calibrate`` call.""" @@ -304,9 +318,14 @@ def spy(frame, targets, **kwargs): monkeypatch.setattr(calibrate_package, "calibrate", spy) + release_tool_tests = _load_release_tool_tests() + def run(**overrides): calls.clear() - module.do_calibrate(_args(tmp_path, **overrides)) + args = _args(tmp_path, **overrides) + # A current materialization, so the stack's pre-solve refusals pass. + release_tool_tests._record_current_materialization(module, args, identity) + module.do_calibrate(args) return calls return SimpleNamespace( diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py index d1cf32d7ce..ef4e643dd9 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_fiscal_refresh_builder.py @@ -13849,6 +13849,8 @@ def test_us_release_id_guard() -> None: class _TestEmitter: available = True + #: No emitter process: a staging writer built with this one hands nothing over. + client = None def __init__(self) -> None: self.events = [] @@ -13923,6 +13925,57 @@ def namespace(no_staging: bool) -> SimpleNamespace: assert progress.staging_opt_out_reason == "--no-staging" +def test_build_progress_hands_staging_files_to_the_build_emitter( + tmp_path, monkeypatch +) -> None: + from microcosm.build import staging_storage + from microcosm.build.telemetry_emitter import TelemetryRun + from test_support.microcosm_build.telemetry import FakeTelemetryEmitter + + module = _load_builder_module() + monkeypatch.setattr( + staging_storage.HuggingFaceDatasetStorage, + "_api", + lambda storage: pytest.fail("the build contacted the Hub itself"), + ) + emitter = FakeTelemetryEmitter(TelemetryRun("rel-1", "US", "us_fiscal_refresh")) + args = SimpleNamespace( + no_staging=False, + staging_dir=tmp_path / "stage", + staging_repo_id="policyengine/populace-us-staging", + staging_run_id=None, + staging_prefix="runs", + staging_upload_interval_seconds=60.0, + epochs=module.DEFAULT_US_FISCAL_CALIBRATION_EPOCHS, + dense_default_dataset=False, + ) + + progress = module._build_progress( + args, release_root=tmp_path, release_id="rel-1", emitter=emitter + ) + progress.stage("target_compilation", force_upload=True) + progress.fail(RuntimeError("build exploded")) + + client = emitter.client + assert progress.staging_bundle.emitter_client is client + assert {request.repository for request in client.run_file_requests} == { + "policyengine/populace-us-staging" + } + # The failed state reaches the emitter before the build's telemetry + # outcome shuts the emitter down. + last_hand_over = max( + index for index, call in enumerate(client.calls) if call == "stage_run_files" + ) + assert last_hand_over < client.calls.index("close") + remote = client.hub_json( + "policyengine/populace-us-staging", "runs/rel-1/progress.json" + ) + assert remote["status"] == "failed" + assert [ + event["status"] for event in emitter.events if event["event_type"] == "run" + ] == ["failed"] + + def test_hosted_progress_survives_staging_bundle_failure() -> None: module = _load_builder_module() emitter = _TestEmitter() diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_housing_inputs.py b/packages/microcosm-build/tests/engine_free/us/test_us_housing_inputs.py index b75e1d8027..5221cf7803 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_housing_inputs.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_housing_inputs.py @@ -1,6 +1,9 @@ """Tests split from packages/microcosm-build/tests/test_us_housing_inputs.py.""" # ruff: noqa: F403, F405 +from hypothesis import given, settings +from hypothesis import strategies as st + from test_support.microcosm_build.us_housing_inputs import * @@ -354,3 +357,91 @@ def test_release_wiring_promotes_all_five_inputs_and_probes() -> None: ] assert contract.populace_treatment == "out_of_scope" assert contract.rate == {"status": "not_used_measured_source"} + + +def test_rent_reaches_its_own_household_when_person_order_differs( + monkeypatch: pytest.MonkeyPatch, +) -> None: + monkeypatch.setattr(module, "QRF", _RentQRF) + frame = _frame() + tables = {entity: frame.table(entity).copy() for entity in frame.entities} + tables["person"] = tables["person"].iloc[::-1].reset_index(drop=True) + reordered = Frame( + tables, + frame.schema, + {entity: frame.weights_for(entity) for entity in frame.weighted_entities}, + ) + + result = with_us_housing_inputs( + reordered, seed=0, time_period=2024, acs_rent_donor=_donor() + ) + + person = result.table("person") + rent_by_household = person.set_index("person_household_id")["pre_subsidy_rent"] + tenure_by_household = result.table("household").set_index("household_id")[ + "tenure_type" + ] + renters = tenure_by_household.index[tenure_by_household == "RENTED"] + others = tenure_by_household.index[tenure_by_household != "RENTED"] + assert (rent_by_household.loc[renters] == 12_000.0).all() + assert (rent_by_household.loc[others] == 0.0).all() + + +class _OneDrawPerHouseholdFitted: + def predict(self, test: pd.DataFrame, **kwargs) -> pd.DataFrame: + return pd.DataFrame( + {"rent": 1_000.0 * np.arange(1, len(test) + 1)}, index=test.index + ) + + +class _OneDrawPerHouseholdQRF: + def __init__(self, **_kwargs: object) -> None: + pass + + def fit(self, *_args: object, **_kwargs: object) -> _OneDrawPerHouseholdFitted: + return _OneDrawPerHouseholdFitted() + + +def _frame_with_members(extra_members: list[int], *, order_seed: int) -> Frame: + frame = derive_us_housing_inputs(_frame()) + tables = {entity: frame.table(entity).copy() for entity in frame.entities} + heads = tables["person"] + members = heads.loc[np.repeat(heads.index.to_numpy(), extra_members)].copy() + members["person_id"] = heads["person_id"].max() + np.arange(1, len(members) + 1) + members["is_household_head"] = False + members["tax_unit_role_input"] = "DEPENDENT" + person = pd.concat([heads, members], ignore_index=True) + order = np.random.default_rng(order_seed).permutation(len(person)) + tables["person"] = person.iloc[order].reset_index(drop=True) + return Frame( + tables, + frame.schema, + {entity: frame.weights_for(entity) for entity in frame.weighted_entities}, + ) + + +@settings(max_examples=40, deadline=None) +@given( + extra_members=st.lists(st.integers(0, 3), min_size=20, max_size=20), + order_seed=st.integers(0, 2**32 - 1), +) +def test_each_head_holds_its_households_draw_under_any_person_order( + extra_members: list[int], order_seed: int +) -> None: + frame = _frame_with_members(extra_members, order_seed=order_seed) + with pytest.MonkeyPatch.context() as patch: + patch.setattr(module, "QRF", _OneDrawPerHouseholdQRF) + rent = module.impute_us_pre_subsidy_rent(frame, _donor(), seed=0) + + person = frame.table("person") + draws = pd.Series( + 1_000.0 * np.arange(1, frame.n("household") + 1), + index=frame.table("household")["household_id"].to_numpy(), + ) + is_head = person["is_household_head"].to_numpy() + assert ( + rent[is_head] + == draws.loc[person.loc[is_head, "person_household_id"]].to_numpy() + ).all() + assert (rent[~is_head] == 0.0).all() + assert rent.sum() == draws.sum() diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_modal_stage_plan_tool.py b/packages/microcosm-build/tests/engine_free/us/test_us_modal_stage_plan_tool.py index fc41c2b191..a89dd9e91b 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_modal_stage_plan_tool.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_modal_stage_plan_tool.py @@ -360,6 +360,55 @@ def test_image_pins_the_commit_and_the_lock() -> None: assert commands[-1].startswith('test -z "$(git') +def test_image_installs_the_emitter_command_on_its_own(app) -> None: + """Builds start the separately installed emitter, never the synced one.""" + + plan = plan_lib.parse_plan(_plan_data()) + commands = plan_lib.image_build_commands(plan) + sync = next(index for index, command in enumerate(commands) if "uv sync" in command) + install = commands.index( + "UV_TOOL_BIN_DIR=/usr/local/bin uv tool install 'microcosm-emitter>=0.7.0'" + ) + # Outside the build's environment, after it is synced and before the + # clean-tree check. The image does not build unless the command runs. + assert sync < install < len(commands) - 1 + assert commands[install + 1] == "/usr/local/bin/microcosm-emitter version" + # The interface in the build finds the command through the image's + # environment, which the stage tool inherits. + image = sys.modules["modal"].Image.debian_slim.return_value + image_env = image.apt_install.return_value.pip_install.return_value.env + environment = image_env.call_args.args[0] + assert environment["MICROCOSM_EMITTER_COMMAND"] == ( + "/usr/local/bin/microcosm-emitter" + ) + tool_env, removed = plan_lib.tool_environment( + {"PATH": "/usr/local/bin:/usr/bin", **environment}, {} + ) + assert tool_env["MICROCOSM_EMITTER_COMMAND"] == "/usr/local/bin/microcosm-emitter" + assert "MICROCOSM_EMITTER_COMMAND" not in removed + + +def test_the_app_never_runs_an_emitter_installed_where_the_image_puts_it( + app, monkeypatch, tmp_path: Path +) -> None: + """A machine with a command at the image's emitter path never runs it here.""" + + ran = tmp_path / "emitter-ran" + command = tmp_path / "microcosm-emitter" + command.write_text(f"#!/bin/sh\ntouch '{ran}'\necho '{{}}'\n") + command.chmod(0o755) + monkeypatch.setattr(plan_lib, "IMAGE_EMITTER_COMMAND", str(command)) + # _runner_identity() also hashes the image clone's uv.lock. The image's + # /root/microcosm is unreadable on a CI runner, where Python 3.13's + # Path.exists() raises PermissionError, so point it at an empty folder. + monkeypatch.setattr(plan_lib, "IMAGE_REPO_ROOT", str(tmp_path / "repo")) + + recorded = {"emitter_version": "0.7.0", "protocol_versions": [1]} + assert app._emitter_version() == recorded + assert app._runner_identity()["microcosm_emitter"] == recorded + assert not ran.exists() + + # --------------------------------------------------------------------------- # # Hashing, mirroring, receipts # # --------------------------------------------------------------------------- # diff --git a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py index 1cb0f4c622..5dab2d3b71 100644 --- a/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py +++ b/packages/microcosm-build/tests/engine_free/us/test_us_spine_blindness.py @@ -100,6 +100,9 @@ # Legacy ACS-only under-15 modeled completion and read-only per-origin # hours release diagnostics; exact boundary functions are pinned below. "acs_local_hours.py", + # Legacy local-lane ACS-row SNAP/TANF take-up fill and per-origin + # take-up gate (#1019); exact boundary functions are pinned below. + "acs_local_take_up.py", # Owner-approved release boundary: exact raw ACS join and receipt. "acs_release_predictors.py", "base_pool.py", # Legacy late-spine assembly. @@ -232,6 +235,8 @@ "acs_inputs.py", # Legacy source-hours completion and release gate; outside the registry. "acs_local_hours.py", + # Legacy local-lane take-up fill and release gate; outside the registry. + "acs_local_take_up.py", "acs_multispine.py", "acs_pums.py", "acs_release_predictors.py", # Pinned release join; provenance owner. @@ -3454,6 +3459,37 @@ def test_acs_local_hours_provenance_is_limited_to_reviewed_boundaries() -> None: assert not _source_spine_accesses(ast.unparse(remaining)) +def test_acs_local_take_up_provenance_is_limited_to_reviewed_boundaries() -> None: + """Pin the ACS-row take-up fill and per-origin take-up gate (#1019).""" + + source = (_US_RUNTIME / "acs_local_take_up.py").read_text() + boundaries = ( + "acs_local_take_up_signal_gate", + "with_acs_local_take_up_inputs", + ) + assert ( + tuple( + sorted( + caller for caller, _line in _function_callers(source, "spine_column") + ) + ) + == boundaries + ) + tree = ast.parse(source) + remaining = ast.Module( + body=[ + node + for node in tree.body + if not ( + isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)) + and node.name in boundaries + ) + ], + type_ignores=[], + ) + assert not _source_spine_accesses(ast.unparse(remaining)) + + def test_physical_source_accessor_is_confined_to_reviewed_gates() -> None: """Origin-aware diagnostics must not become population treatments.""" diff --git a/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py b/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py index 58ea9b4bbc..29915623f6 100644 --- a/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py +++ b/packages/microcosm-build/tests/engine_workflow/us/test_us_multispine_pool_tool.py @@ -350,7 +350,7 @@ def capture_equality(expected: object, actual: object) -> None: # microcosm#1251's passive partnership/S-corp leaf in puf_support moves it. # microcosm#1259's recipient-share bound in puf_support moves it again. # microcosm#1261's entity split of line 32 moves it too. - "spec_sha256": "9b4b3260c20c30ba71a0947f8d78e322c8d2a3e6cb94e87a3729be950a9e90f2", + "spec_sha256": '153a7b6ad8f13b5de1fd32e3e4e2805015e4c90823f313cec51cb5bd27c990b0', }, } diff --git a/packages/microcosm-build/tests/fixtures/be_schema2_target_references.json b/packages/microcosm-build/tests/fixtures/be_schema2_target_references.json new file mode 100644 index 0000000000..5f4b0408ea --- /dev/null +++ b/packages/microcosm-build/tests/fixtures/be_schema2_target_references.json @@ -0,0 +1,278 @@ +{ + "country": "be", + "description": "Belgian calibration and validation schema groundwork, by reference only. Values and source projections would resolve from Chronicle consumer facts at build time, but the current Chronicle Belgian catalog does not satisfy this full selector and period surface. Criticality tiers, relative tolerances, and target_role are validated declaration metadata only: this package does not yet wire them into runtime calibration objectives or release gates. Multi-cell series remain non-executable until Chronicle fanout produces cell-pinned references. No external-oracle implementation from #264 is included. The file never copies a target value from Chronicle, a survey publication, or a validation oracle. These earlier-period declarations remain inactive groundwork; B3 must replace them with reviewed transport references and explicit ageing to the proposed 2026 policy year. Their source periods are not donor or target-period authorities.", + "allowed_value_operations": [ + "identity" + ], + "target_references": [ + { + "name": "statbel_population_by_age_sex_region", + "ledger_selector": { + "source_name": "statbel_population_structure", + "source_measure_id": "people", + "period_type": "calendar_year", + "geography_level": "nuts1", + "geography_vintage": "nuts1_2025" + }, + "entity": "person", + "measure": "people", + "period": 2023, + "family": "demography", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "activation_status": "requires_harvested_cell_references", + "basis_period": "population_reference_2023", + "criticality": "release_blocking", + "criticality_tier": "demography_release", + "geography_vintage": "nuts1_2025", + "publisher": "Statbel", + "series": "Structure of the population: age band by sex by region", + "target_role": "calibration" + }, + "notes": "Non-executable series placeholder for an age-band x sex x NUTS1 count surface. Chronicle must fan this into dimension- and geography-pinned scalar references before compilation. The selector uses the typed NUTS1-2025 authority alias; a differently-vintaged source requires an explicit Chronicle projection/crosswalk. An observation for another year may enter only as a Chronicle source_projection whose fact period is the declared 2023 reference year.", + "category_id": "statbel.demography" + }, + { + "name": "statbel_fiscal_income_by_commune", + "ledger_selector": { + "source_name": "statbel_fiscal_income", + "source_measure_id": "taxable_income", + "period_type": "tax_year", + "geography_level": "commune", + "geography_vintage": "nis_2025" + }, + "entity": "household", + "measure": "belgium_pit_taxable_income", + "period": 2022, + "family": "fiscal_income", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "activation_status": "requires_harvested_cell_references", + "basis_period": "assessment_income_year_2022", + "criticality": "diagnostic", + "criticality_tier": "commune_diagnostic", + "geography_vintage": "nis_2025", + "nis_vintage": "2025", + "publisher": "Statbel", + "series": "Fiscal statistics of income: total net taxable income by municipality", + "target_role": "calibration" + }, + "notes": "Non-executable series placeholder for commune fiscal-income cells; Chronicle must fan it into one commune-pinned scalar reference per selected cell before compilation. The eventual open commune series is diagnostic until the synthetic spine demonstrates adequate support. The selector binds the typed nis_2025 alias to the spine's 2025 NIS code set, and another code set must be projected and crosswalked in Chronicle rather than partially joined.", + "category_id": "statbel.fiscal_income" + }, + { + "name": "spf_finances_pit_total", + "ledger_selector": { + "source_name": "spf_finances_pit", + "source_measure_id": "tax_before_withholding", + "period_type": "tax_year", + "geography_level": "country" + }, + "entity": "person", + "measure": "belgium_pit_federal_and_local_tax_before_withholding", + "period": 2022, + "family": "income_tax", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "basis_period": "assessment_income_year_2022", + "criticality": "release_blocking", + "criticality_tier": "core_fiscal_release", + "publisher": "SPF Finances / Statbel", + "series": "Personal income tax: assessed total", + "target_role": "calibration" + }, + "notes": "National assessed PIT is compared with the Axiom-computed federal and local liability on the 2022 income-year basis. Assessment-year facts must identify the represented income year in Chronicle; a period mismatch is a projection, never a silent relabeling.", + "category_id": "spf_finances.income_tax" + }, + { + "name": "onss_employee_contribution_total", + "ledger_selector": { + "source_name": "onss_contributions", + "source_measure_id": "worker_article_17_uncapped_component_contribution", + "period_type": "calendar_year", + "geography_level": "country" + }, + "entity": "person", + "measure": "belgium_worker_article_17_uncapped_component_contribution", + "period": 2022, + "family": "social_security", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "basis_period": "calendar_year_2022", + "criticality": "release_blocking", + "criticality_tier": "standard_admin_release", + "publisher": "ONSS/RSZ", + "series": "Employee social-security contributions", + "target_role": "calibration" + }, + "notes": "Worker-side contributions on the encoded slice. Employer-side and capped-regime totals can enter as distinct references when both the engine concepts and Ledger selectors exist.", + "category_id": "onss.social_security" + }, + { + "name": "onem_unemployment_caseload", + "ledger_selector": { + "source_name": "onem_rva_unemployment", + "source_measure_id": "receives_unemployment_benefit", + "period_type": "calendar_year", + "geography_level": "country" + }, + "entity": "person", + "measure": "receives_unemployment_benefit", + "period": 2022, + "family": "caseloads", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "basis_period": "calendar_year_2022", + "criticality": "release_blocking", + "criticality_tier": "caseload_release", + "publisher": "ONEM/RVA", + "series": "Unemployment benefit recipients", + "target_role": "calibration" + }, + "notes": "The initial caseload family uses the calendar-year recipient count. Pension and regional child-benefit caseload references can join this family when their Chronicle packages and model mappings land.", + "category_id": "onem.caseloads" + }, + { + "name": "nbb_household_disposable_income", + "ledger_selector": { + "source_name": "nbb_national_accounts", + "source_measure_id": "household_disposable_income", + "period_type": "calendar_year", + "geography_level": "country" + }, + "entity": "household", + "measure": "household_disposable_income", + "period": 2022, + "family": "national_accounts", + "assertion_policy": "allow_source_projection", + "period_match_policy": "exact", + "metadata": { + "basis_period": "calendar_year_2022", + "criticality": "diagnostic", + "criticality_tier": "validation_only", + "publisher": "NBB", + "series": "Household-sector disposable income (national accounts)", + "target_role": "validation" + }, + "notes": "Validation-tier level anchor only. The macro-realism gate may use it as a broad band, but neither the exact NBB level nor any survey- or EUROMOD-derived quantity enters the calibration objective.", + "category_id": "nbb.national_accounts" + } + ], + "target_profile": { + "schema_version": 2, + "required_families": [ + "demography", + "fiscal_income", + "income_tax", + "social_security", + "caseloads" + ], + "criticality_tiers": { + "demography_release": { + "criticality": "release_blocking", + "relative_tolerance": 0.02, + "description": "Population-structure cells: plus or minus 2 percent." + }, + "core_fiscal_release": { + "criticality": "release_blocking", + "relative_tolerance": 0.05, + "description": "Core fiscal totals, including assessed PIT: plus or minus 5 percent." + }, + "standard_admin_release": { + "criticality": "release_blocking", + "relative_tolerance": 0.1, + "description": "Administrative contribution totals: plus or minus 10 percent." + }, + "caseload_release": { + "criticality": "release_blocking", + "relative_tolerance": 0.15, + "description": "Administrative caseload totals: plus or minus 15 percent." + }, + "commune_diagnostic": { + "criticality": "diagnostic", + "relative_tolerance": 0.1, + "description": "Commune fiscal-income cells: plus or minus 10 percent, reported but not release-blocking." + }, + "validation_only": { + "criticality": "diagnostic", + "relative_tolerance": null, + "description": "Validation oracle only; no calibration tolerance." + } + }, + "basis_periods": { + "population_reference_2023": { + "period": 2023, + "basis": "reference_date", + "fact_period_type": "calendar_year", + "mismatch_policy": "requires_source_projection", + "description": "Earlier-period population-stock reference, retained as inactive groundwork pending the B3 transport reference rewrite." + }, + "assessment_income_year_2022": { + "period": 2022, + "basis": "income_year", + "fact_period_type": "tax_year", + "mismatch_policy": "requires_source_projection", + "description": "Earlier assessed fiscal reference binds the represented 2022 income year; retained as inactive groundwork pending B3, never silently relabelled to 2026." + }, + "calendar_year_2022": { + "period": 2022, + "basis": "calendar_year", + "fact_period_type": "calendar_year", + "mismatch_policy": "requires_source_projection", + "description": "Calendar-year administrative or national-accounts fact aligned to the 2022 income reference year." + } + }, + "hierarchy_reconciliations": [] + }, + "schema_version": 2, + "hierarchy": { + "providers": { + "statbel": { + "label": "Statbel" + }, + "spf_finances": { + "label": "FPS Finance" + }, + "onss": { + "label": "National Social Security Office" + }, + "onem": { + "label": "National Employment Office" + }, + "nbb": { + "label": "National Bank of Belgium" + } + }, + "categories": { + "statbel.demography": { + "provider_id": "statbel", + "label": "Demography" + }, + "statbel.fiscal_income": { + "provider_id": "statbel", + "label": "Fiscal income" + }, + "spf_finances.income_tax": { + "provider_id": "spf_finances", + "label": "Personal income tax" + }, + "onss.social_security": { + "provider_id": "onss", + "label": "Social security contributions" + }, + "onem.caseloads": { + "provider_id": "onem", + "label": "Benefit caseloads" + }, + "nbb.national_accounts": { + "provider_id": "nbb", + "label": "National accounts" + } + } + } +} diff --git a/packages/microcosm-build/tests/golden/be_country_spec.json b/packages/microcosm-build/tests/golden/be_country_spec.json index 23441d0a8a..5d9d71e55e 100644 --- a/packages/microcosm-build/tests/golden/be_country_spec.json +++ b/packages/microcosm-build/tests/golden/be_country_spec.json @@ -1,6 +1,6 @@ { "country": "be", - "fingerprint": "842b6a2d7d99b60216951ab17486724a7d65866864c32c90ad11085a34c92a5d", + "fingerprint": "2a8d7b012245e62d3e906ebf70eb7952bb1f581185b0ef073c39a7bf139f4030", "gate_ids": [ "calibration_per_family_fit", "national_and_nuts1_admin_aggregates", @@ -28,18 +28,26 @@ "staging_repo": "policyengine/populace-be-staging" }, "resource_hashes": { - "country_package.json": "1dff9052dbdcdbceeb077d1212008226cf783aa5d33cbda52d07437aef69d30b", + "chronicle_feed.json": "71f3967cefa12d8ad6c4b955547bfc37e33183ee839b3edf3a43e0cb72559030", + "country_package.json": "b698d0a0cb99deb9071451f790915f054d02970aa8a544cac6865860cf60f386", "gates.json": "85c07f713168058a081b40cf94da6a33035108ba7807e04818486032fb2ad580", "geography_spine.json": "090b83a4fa511e691b8f1486bc4188e4170cf9d4a1239e7418d33d5020ceca50", + "holdout_references.json": "c9d32204b4c6364a95fcab066cbbc8b1b99dd49ef608e72c99009f01c7d1c942", + "precal_references.json": "321bd4bd675b80c2e3241e19346fb191b72c8a0c101080dca27bae061c3edd89", + "quantile_surfaces.json": "15405e47850ab9f1de1b953f524df9ea605c451311f6e19a06b8dd0932df3724", + "reference_aging.json": "e1eb7a4e5abc6aad77b822bf91b09ad1de0a22d349ee39b63b8bb787bd036404", + "reference_intervals.json": "5c13dc32257d9d3c9b5cbbd14b79c229bbeb7037671778fdb8b09042693bb562", + "reference_inventory.json": "7aeab0e8ff01755238198f266fabe66bd939427f75b77e1954a0e6e2bd085850", + "reference_profiles.json": "1f7eb7f7a5bde2484b423e12835c9ef5eb8351599c29d836e35a910897ead52a", "release_contract.json": "916d8cba095d05ee5bc0c3d1b8e165eb1cf22867b91f0adac01533448b394730", - "source_stages.json": "c94df32e544b74e7e6a70ae587345c757d9773035fceafc98660f4ab52d09d2c", - "spec/bundle.yaml": "6ef6efbdc1db9765a8d0acaf86c6f2a507d442f425c8fa4900c8350469935451", - "spec/catalogs.yaml": "4234b7c97481cfe677a4d67098b17cece20a8ac805f0d803ace13b20a8eacdd0", + "source_stages.json": "3d0a362345894dc6ea230ebed7fec7ff99a972879dc60c06001635c1b4a1ec47", + "spec/bundle.yaml": "8ac8b75f61f78f67946828863962c9096f8f98ab12b1a44e40e09b5f6cac67eb", + "spec/catalogs.yaml": "46c4ba309e52e5e8afc0612e4d9f85bab703389c9292fc72fbf44370cfbdea1a", "spec/geography.yaml": "99e29bce429e30e6accc471db7cf66a44ecfbc7bc0fd9f0b9caeaa8785fcb7a2", - "spec/sources.yaml": "3fdd8943b0404784880d9b42db05c832744cc79d57d7c73de660fc6a7b89b63c", + "spec/sources.yaml": "24ea9b8c9aac32175d1c75156af5549a05bb3f155fbb23968235f3ead2cbefda", "spec/spine.yaml": "981be4881954d7696fbabf1bc989f619577b6e5600262f1a9c20915461808d41", "spec/vintages.yaml": "1a10d5aedd24cdb2fc9544c7a0d444df0b06d4b089dcb769bf0a7de9218df696", - "target_references.json": "656f41b7c0005519a14411ca488acdf46cc3b739d58531a9f0802b98ccffd526" + "target_references.json": "38178a5015b520061542c471cec70ac34702deccb29b586f6a59045656789465" }, "resources": [ "spec/bundle.yaml", @@ -48,8 +56,16 @@ "spec/sources.yaml", "spec/spine.yaml", "spec/vintages.yaml", + "chronicle_feed.json", "gates.json", "geography_spine.json", + "holdout_references.json", + "precal_references.json", + "quantile_surfaces.json", + "reference_aging.json", + "reference_intervals.json", + "reference_inventory.json", + "reference_profiles.json", "release_contract.json", "source_stages.json", "target_references.json" @@ -58,11 +74,65 @@ "load_populace_us_support_pool" ], "target_reference_names": [ - "statbel_population_by_age_sex_region", - "statbel_fiscal_income_by_commune", - "spf_finances_pit_total", - "onss_employee_contribution_total", - "onem_unemployment_caseload", - "nbb_household_disposable_income" + "statbel_population_by_region_sex_age__be1__male__a0_17", + "statbel_population_by_region_sex_age__be1__male__a18_64", + "statbel_population_by_region_sex_age__be1__male__a65_plus", + "statbel_population_by_region_sex_age__be1__female__a0_17", + "statbel_population_by_region_sex_age__be1__female__a18_64", + "statbel_population_by_region_sex_age__be1__female__a65_plus", + "statbel_population_by_region_sex_age__be2__male__a0_17", + "statbel_population_by_region_sex_age__be2__male__a18_64", + "statbel_population_by_region_sex_age__be2__male__a65_plus", + "statbel_population_by_region_sex_age__be2__female__a0_17", + "statbel_population_by_region_sex_age__be2__female__a18_64", + "statbel_population_by_region_sex_age__be2__female__a65_plus", + "statbel_population_by_region_sex_age__be3__male__a0_17", + "statbel_population_by_region_sex_age__be3__male__a18_64", + "statbel_population_by_region_sex_age__be3__male__a65_plus", + "statbel_population_by_region_sex_age__be3__female__a0_17", + "statbel_population_by_region_sex_age__be3__female__a18_64", + "statbel_population_by_region_sex_age__be3__female__a65_plus", + "statbel_a1_standin_declarations__under_10k", + "statbel_a1_standin_taxable_income__under_10k", + "statbel_a1_standin_declarations__10k_20k", + "statbel_a1_standin_taxable_income__10k_20k", + "statbel_a1_standin_declarations__20k_30k", + "statbel_a1_standin_taxable_income__20k_30k", + "statbel_a1_standin_declarations__30k_40k", + "statbel_a1_standin_taxable_income__30k_40k", + "statbel_a1_standin_declarations__40k_50k", + "statbel_a1_standin_taxable_income__40k_50k", + "statbel_a1_standin_declarations__50k_75k", + "statbel_a1_standin_taxable_income__50k_75k", + "statbel_a1_standin_declarations__75k_100k", + "statbel_a1_standin_taxable_income__75k_100k", + "statbel_a1_standin_declarations__100k_plus", + "statbel_a1_standin_taxable_income__100k_plus", + "statbel_b4_declarations__joint", + "statbel_b4_declarations__individual", + "statbel_b1_enrolled_tax__decile_01", + "statbel_b1_enrolled_tax__decile_02", + "statbel_b1_enrolled_tax__decile_03", + "statbel_b1_enrolled_tax__decile_04", + "statbel_b1_enrolled_tax__decile_05", + "statbel_b1_enrolled_tax__decile_06", + "statbel_b1_enrolled_tax__decile_07", + "statbel_b1_enrolled_tax__decile_08", + "statbel_b1_enrolled_tax__decile_09", + "statbel_b1_enrolled_tax__percentile_091", + "statbel_b1_enrolled_tax__percentile_092", + "statbel_b1_enrolled_tax__percentile_093", + "statbel_b1_enrolled_tax__percentile_094", + "statbel_b1_enrolled_tax__percentile_095", + "statbel_b1_enrolled_tax__percentile_096", + "statbel_b1_enrolled_tax__percentile_097", + "statbel_b1_enrolled_tax__percentile_098", + "statbel_b1_enrolled_tax__percentile_099", + "statbel_b1_enrolled_tax__percentile_100", + "onss_worker_personal_contributions", + "onem_complete_unemployment_recipients", + "fpb_unemployment_benefit_expenditure", + "fpb_grapa_expenditure", + "fpb_net_mixed_income" ] } diff --git a/packages/microcosm-data/src/microcosm/data/contract.py b/packages/microcosm-data/src/microcosm/data/contract.py index ec54058b52..4ded0ab092 100644 --- a/packages/microcosm-data/src/microcosm/data/contract.py +++ b/packages/microcosm-data/src/microcosm/data/contract.py @@ -451,13 +451,13 @@ def compatibility_claim_declarer_error(declared_by: object) -> str | None: # fingerprint derives from the manifest digest. Editing the spec moves all # three here in the same reviewed change. _UK_GATE_BATTERY_POLICY_SHA256 = ( - "cac5b2786970a1a1b0a6684be0322841a5383e675c095fad7f9a6b37e344313b" + "40e24836c45468ccb50b025dcd05603dc4d8af37ef546fa3bc6d4ea9152f707e" ) _UK_GATE_BATTERY_GATES_MANIFEST_SHA256 = ( - "66c83b391237abf8df13abfe551936cc008a805980b73e87eb11b96b13a2ef2b" + "7d9a294b0c17dd545beb88fcf3d1e596a4c36dd4aa8a7821b6fe767de3beb85f" ) _UK_GATE_BATTERY_SPEC_FINGERPRINT = ( - "426c45bc1413477f66cea2766a977042c10a769f7ac3ef285c307dea57703577" + "0b82c7d90eb4400bb333a4f477509c9570221ecfd5afde13f08de4c8689b6db9" ) #: Spec entry id -> the legacy gate name whose observable detail checks #: apply unchanged (the battery re-keys the report by entry id; the gate @@ -979,7 +979,7 @@ def _uk_line_cut_tag_re(release_id: str) -> re.Pattern[str] | None: _UK_CERTIFICATION_PART_DIGESTS: Mapping[str, Mapping[str, str]] = { "spine": { "gates_manifest_sha256": ( - "64139dd980805155547ad72c72425877572090edf45f58cc42375b634a8a2741" + "4f59118f648d48c04aff3a28def11c472318b2dae368513a69467138799bd613" ), "policy_sha256": ( "33e851f78f1dc1fde7969c6d875ea2d85b9ea41a39551680ad5a59b369b60f44" @@ -995,10 +995,10 @@ def _uk_line_cut_tag_re(release_id: str) -> re.Pattern[str] | None: }, "release_cut": { "gates_manifest_sha256": ( - "9d238b45f13afc31ed27b512855d324cdfd890bd34c93ecc5a1a16d9c81bfd9f" + "97a16c72db2c97d224a7e6e26f4afcad6eec4ed581b337bdb68fe9df4dbea82d" ), "policy_sha256": ( - "5cb11fbce2f0de97f7db6f3c90536f86e1e65795cce59eb3472d8a42a2654023" + "9961e4d3417e7812fb2248bd757fa057c2c3e08643dd4cc058da4713aae57057" ), }, } diff --git a/packages/microcosm-data/src/microcosm/data/registry.py b/packages/microcosm-data/src/microcosm/data/registry.py index e16e9f45fa..385a062c01 100644 --- a/packages/microcosm-data/src/microcosm/data/registry.py +++ b/packages/microcosm-data/src/microcosm/data/registry.py @@ -114,15 +114,15 @@ def register(spec: DatasetSpec) -> DatasetSpec: register( DatasetSpec( # microcosm#823: the UK 2024-25 national line, followed through its - # own pointer. Registered OFF the default variant until the first - # promoted cut exists on the Hub: resolve("uk") picks the latest - # default-variant year at import time, so a default entry here would - # send every default load to a pointer that does not exist yet. The - # flip to DEFAULT_VARIANT is a one-line follow-up after promotion - # (review of #966; Max's #823 ruling keys the line as a variant). + # own pointer, is the default UK load. It stayed off the default + # variant until its first certified cut was promoted (review of #966; + # Max's #823 ruling), and latest-national.json has named + # microcosm-uk-2024-25-national-20261025T091414Z-a6299504 since + # 2026-10-26. resolve("uk") picks the latest default-variant year, so + # it loads this line; the June 2023 artifact stays at ("uk", 2023). country="uk", year=2025, - variant="national", + variant=DEFAULT_VARIANT, hf_repo="policyengine/populace-uk-private", filename="microcosm_uk_2024_25.h5", engine_module="policyengine_uk.data", diff --git a/packages/microcosm-data/tests/engine_free/shared/test_contract.py b/packages/microcosm-data/tests/engine_free/shared/test_contract.py index f9d099253a..6e5f329089 100644 --- a/packages/microcosm-data/tests/engine_free/shared/test_contract.py +++ b/packages/microcosm-data/tests/engine_free/shared/test_contract.py @@ -220,13 +220,13 @@ def _trusted_terminal_gate_signing_key(monkeypatch) -> None: UK_GATE_BATTERY_PRODUCER = "microcosm.build.gate_battery" UK_GATE_BATTERY_SIGNING_KEY_ENV = "MICROCOSM_UK_TERMINAL_GATE_SIGNING_KEY" UK_GATE_BATTERY_POLICY_SHA256 = ( - "cac5b2786970a1a1b0a6684be0322841a5383e675c095fad7f9a6b37e344313b" + "40e24836c45468ccb50b025dcd05603dc4d8af37ef546fa3bc6d4ea9152f707e" ) UK_GATE_BATTERY_GATES_MANIFEST_SHA256 = ( - "66c83b391237abf8df13abfe551936cc008a805980b73e87eb11b96b13a2ef2b" + "7d9a294b0c17dd545beb88fcf3d1e596a4c36dd4aa8a7821b6fe767de3beb85f" ) UK_GATE_BATTERY_SPEC_FINGERPRINT = ( - "426c45bc1413477f66cea2766a977042c10a769f7ac3ef285c307dea57703577" + "0b82c7d90eb4400bb333a4f477509c9570221ecfd5afde13f08de4c8689b6db9" ) UK_GATE_BATTERY_DEGENERATE_EVIDENCE_SHA256 = ( "f246388de42654dd68dbbb40c42282001b5b0a8bf48976162bcb1199085cb1d3" diff --git a/packages/microcosm-data/tests/engine_free/shared/test_loader.py b/packages/microcosm-data/tests/engine_free/shared/test_loader.py index 69c5af1096..decabfd3d3 100644 --- a/packages/microcosm-data/tests/engine_free/shared/test_loader.py +++ b/packages/microcosm-data/tests/engine_free/shared/test_loader.py @@ -345,23 +345,22 @@ def __init__(self, *, file_path: str) -> None: return constructed -def test_resolve_uk_default_stays_on_2023_until_the_national_line_is_promoted(): - """The national line is registered off the default variant until its - pointer exists on the Hub, so a default load never chases an absent - pointer (review of #966); the flip is a one-line follow-up.""" - assert latest_year("uk") == 2023 - assert resolve("uk").key == ("uk", 2023, DEFAULT_VARIANT) - assert resolve("uk", 2025, variant="national").pointer_path == ( - "latest-national.json" - ) - with pytest.raises(ValueError, match="published years"): - resolve("uk", 2025) +def test_resolve_uk_default_is_the_promoted_national_line(): + """microcosm#823: once the national line's first certified cut was + promoted, the line became the default UK load; the June 2023 line stays + addressable at its year and its own pointer (Max's #823 ruling).""" + assert latest_year("uk") == 2025 + assert resolve("uk").key == ("uk", 2025, DEFAULT_VARIANT) + assert resolve("uk").pointer_path == "latest-national.json" + assert resolve("uk", 2023).pointer_path == "latest.json" + with pytest.raises(ValueError, match="variant 'national'"): + resolve("uk", 2025, variant="national") def test_resolve_uk_national_variant_follows_the_line_pointer( tmp_path: Path, ) -> None: - spec = resolve("uk", 2025, variant="national") + spec = resolve("uk", 2025) manifest = _uk_release_manifest() hub = _line_pointer_hub( tmp_path, @@ -374,7 +373,7 @@ def test_resolve_uk_national_variant_follows_the_line_pointer( certified = loader._resolve_certified_release(spec, hub_download=hub) manifest_path = f"releases/{UK_NATIONAL_RELEASE_ID}/release_manifest.json" - assert spec.key == ("uk", 2025, "national") + assert spec.key == ("uk", 2025, DEFAULT_VARIANT) assert spec.pointer_path == "latest-national.json" assert certified.release_id == UK_NATIONAL_RELEASE_ID assert certified.artifact_revision == UK_NATIONAL_CUT_TAG @@ -449,9 +448,7 @@ def test_line_pointer_refuses_any_artifact_revision_mismatch(tmp_path: Path) -> ValueError, match=r"artifacts not pinned to expected revision.*calibration_report", ): - loader._resolve_certified_release( - resolve("uk", 2025, variant="national"), hub_download=hub - ) + loader._resolve_certified_release(resolve("uk", 2025), hub_download=hub) def test_local_area_line_selects_its_only_microdata_artifact(tmp_path: Path) -> None: @@ -568,9 +565,7 @@ def test_loader_refuses_an_unknown_dataset_role(tmp_path: Path) -> None: ) with pytest.raises(ValueError, match="unknown dataset_role 'research_preview'"): - loader._resolve_certified_release( - resolve("uk", 2025, variant="national"), hub_download=hub - ) + loader._resolve_certified_release(resolve("uk", 2025), hub_download=hub) def test_download_uses_pointer_manifest_and_release_revision( @@ -804,7 +799,7 @@ def _is_missing_pointer_error(exc: BaseException, pointer_path: str) -> bool: [ ("us", 2024, DEFAULT_VARIANT), ("uk", 2023, DEFAULT_VARIANT), - ("uk", 2025, "national"), + ("uk", 2025, DEFAULT_VARIANT), ], ) def test_live_latest_pointer_resolves_to_a_coherent_certified_release( @@ -823,6 +818,9 @@ def test_live_latest_pointer_resolves_to_a_coherent_certified_release( which are updated atomically with each certification PR. """ spec = resolve(country, year, variant=variant) + # The UK 2025 default follows its line's pointer since microcosm#823, so + # the pointer, not the variant, says how the release is named. + line = loader._line_from_pointer_path(spec.pointer_path) try: certified = loader._resolve_certified_release(spec) except Exception as exc: @@ -834,26 +832,26 @@ def test_live_latest_pointer_resolves_to_a_coherent_certified_release( pytest.skip( f"repo requires credentials this environment lacks (private): {exc}" ) - if variant != DEFAULT_VARIANT and _is_missing_pointer_error( - exc, spec.pointer_path - ): + if line is not None and _is_missing_pointer_error(exc, spec.pointer_path): # A line pointer exists only once its first cut is promoted; # until then the line is registered but not yet live. Anything # else on a promoted line (a manifest 404, a bad pin) fails. pytest.skip(f"line pointer {spec.pointer_path} not yet promoted: {exc}") raise - assert certified.release_id.startswith( - # Live certified releases still carry the pre-rename id prefix; new - # builds may adopt the microcosm- prefix at the next versioned release. - (f"microcosm-{country}-{spec.year}-", f"populace-{country}-{spec.year}-") - ) assert certified.artifact_repo_id == spec.hf_repo assert certified.artifact_path == spec.filename - if variant == DEFAULT_VARIANT: + if line is None: + assert certified.release_id.startswith( + # Live certified releases still carry the pre-rename id prefix; new + # builds may adopt the microcosm- prefix at the next versioned + # release. + (f"microcosm-{country}-{spec.year}-", f"populace-{country}-{spec.year}-") + ) assert certified.artifact_revision == certified.release_id else: # A line pointer names the immutable cut tag of its constant id. + assert certified.release_id.startswith(f"microcosm-{country}-") assert certified.artifact_revision.startswith(f"{certified.release_id}-") assert re.fullmatch(r"[0-9a-f]{64}", certified.artifact_sha256) assert certified.model.name == spec.engine_package @@ -862,7 +860,7 @@ def test_live_latest_pointer_resolves_to_a_coherent_certified_release( def test_line_pointer_refuses_a_manifest_with_another_lines_role(tmp_path: Path): """A line pointer carries one role: the national pointer cannot select a local-area manifest, nor a local-area pointer a national one.""" - spec = resolve("uk", 2025, variant="national") + spec = resolve("uk", 2025) manifest = _uk_release_manifest() manifest["dataset_role"] = "non_default_local_area" manifest["default_datasets"] = {} diff --git a/packages/microcosm-data/tests/engine_free/shared/test_registry.py b/packages/microcosm-data/tests/engine_free/shared/test_registry.py index eae3a397a5..066a1933ff 100644 --- a/packages/microcosm-data/tests/engine_free/shared/test_registry.py +++ b/packages/microcosm-data/tests/engine_free/shared/test_registry.py @@ -69,8 +69,8 @@ def test_available_lists_default_variant_keys_only_sorted(monkeypatch) -> None: keys = available() assert ("us", 2024) in keys assert ("uk", 2023) in keys - # The national line is off the default variant until promoted. - assert ("uk", 2025) not in keys + # The national line is the default variant since its promotion (#823). + assert ("uk", 2025) in keys assert ("zz", 2099) not in keys assert keys == sorted(keys) @@ -146,16 +146,16 @@ def test_uk_2025_dense_is_registered_off_the_default_variant() -> None: assert spec.filename == "microcosm_uk_2024_25_dense.h5" assert spec.engine_class == "UKSingleYearDataset" assert spec.engine_package == "policyengine-uk" - assert ("uk", 2025, "national") in REGISTRY + assert ("uk", 2025, DEFAULT_VARIANT) in REGISTRY -def test_uk_2025_national_is_registered_off_the_default_variant_until_promoted(): - """resolve("uk") must not reach a pointer that does not exist yet: the - line's pointer appears on the Hub at its first promotion, and only the - follow-up flip to the default variant moves the default (review of - #966; Max's #823 ruling keys the line as a variant).""" - spec = REGISTRY[("uk", 2025, "national")] - assert spec.variant == "national" != DEFAULT_VARIANT +def test_uk_2025_national_line_is_the_default_variant_after_promotion(): + """microcosm#823: the line's first certified cut was promoted on + 2026-10-26, so the line moved to the default variant (Max's #823 + ruling) and its own variant key retired; the June 2023 line stays + addressable at its year.""" + spec = REGISTRY[("uk", 2025, DEFAULT_VARIANT)] assert spec.pointer_path == "latest-national.json" assert spec.filename == "microcosm_uk_2024_25.h5" - assert ("uk", 2025, DEFAULT_VARIANT) not in REGISTRY + assert ("uk", 2025, "national") not in REGISTRY + assert REGISTRY[("uk", 2023, DEFAULT_VARIANT)].filename == "populace_uk_2023.h5" diff --git a/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py b/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py index 1040ab8df1..4fe2bc1655 100644 --- a/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py +++ b/packages/microcosm-frame/src/microcosm/frame/adapters/policyengine_uk_concepts.py @@ -246,18 +246,6 @@ #: Other engine inputs the build leaves at the engine's default, each signed as #: an approximation with the error it can make (microcosm#1095). UK_ENGINE_DEFAULT_INPUTS: dict[str, str] = { - "self_employment_gross_receipts": ( - "No source of the self-employed's turnover is read yet (the FRS job " - "record and the SPI tape are the candidates, as #1145 found landlords' " - "receipts). Since policyengine-uk 2.108.0 the trading allowance replaces " - "expenses and does not stack on them, so without receipts " - "trading_allowance_deduction relieves a profit of GBP 1,000 or less in " - "full and gives a larger profit no allowance. Taxable profit is off by at " - "most GBP 1,000 a person: too low where receipts above GBP 1,000 leave a " - "small profit, too high just above GBP 1,000 where the allowance would " - "beat the expenses. Signed as an approximation with the plan for the " - "next policyengine-uk bump, approved on 2026-10-23." - ), "housing_benefit_residential_capital_exception": ( "The working-age residential capital tariff exception (Housing Benefit " "Regulations 2006 reg. 52(4)-(5), (8)-(9); NI reg. 49) covers residents " diff --git a/packages/microcosm-frame/src/microcosm/frame/concept_mapping.py b/packages/microcosm-frame/src/microcosm/frame/concept_mapping.py index 7ae97ebae8..1379070064 100644 --- a/packages/microcosm-frame/src/microcosm/frame/concept_mapping.py +++ b/packages/microcosm-frame/src/microcosm/frame/concept_mapping.py @@ -68,6 +68,7 @@ "Allocation", "ConceptMappedEngine", "ConceptMapping", + "CoresidentAdult", "CoresidentChildCount", "CoverageReport", "EncodedGroupInputs", @@ -375,6 +376,38 @@ def concepts(self) -> tuple[str, ...]: return (*_PARENT_CONCEPTS, "fact:person.age") +@dataclass(frozen=True) +class CoresidentAdult: + """A boolean input: another person in this person's household is old enough. + + A person's value is true when at least one other person row with the same + household id has an age of at least :attr:`min_age`. The person's own age + never counts, and a null age never qualifies. + + Attributes: + min_age: The age, in whole years, a co-resident must have reached. + The law sets it, so every binding declares it; it has no default. + """ + + min_age: int + + def __post_init__(self) -> None: + if isinstance(self.min_age, bool) or not isinstance(self.min_age, int): + raise ValueError( + f"A co-resident adult's min_age must be an integer, not " + f"{self.min_age!r}." + ) + if self.min_age < 0: + raise ValueError( + f"A co-resident adult's min_age must not be negative: {self.min_age}." + ) + + @property + def concepts(self) -> tuple[str, ...]: + """The concepts the test reads.""" + return ("fact:person.age",) + + @dataclass(frozen=True) class TakeUpThreshold: """A take-up flag: the program's draw falls below its rate. @@ -450,6 +483,7 @@ def concepts(self) -> tuple[str, ...]: | Predicate | RelationshipRole | CoresidentChildCount + | CoresidentAdult | TakeUpThreshold | UnitComposition ) @@ -465,6 +499,7 @@ def concepts(self) -> tuple[str, ...]: "predicate": Predicate, "relationship_role": RelationshipRole, "coresident_child_count": CoresidentChildCount, + "coresident_adult": CoresidentAdult, "take_up_threshold": TakeUpThreshold, "fraction": Fraction, "positive": Positive, @@ -508,6 +543,8 @@ def transform_to_dict(transform: Transform) -> dict[str, object]: out["feature"] = transform.feature.value elif isinstance(transform, CoresidentChildCount) and transform.max_age is not None: out["max_age"] = transform.max_age + elif isinstance(transform, CoresidentAdult): + out["min_age"] = transform.min_age elif isinstance(transform, TakeUpThreshold): out["program"] = transform.program return out @@ -524,6 +561,7 @@ def transform_to_dict(transform: Transform) -> dict[str, object]: "signed_part": frozenset({"sign"}), "unit_composition": frozenset({"feature"}), "coresident_child_count": frozenset({"max_age"}), + "coresident_adult": frozenset({"min_age"}), "take_up_threshold": frozenset({"program"}), } @@ -615,6 +653,8 @@ def optional_age(name: str) -> int | None: return UnitComposition(feature=UnitFeature(text("feature"))) if kind == "coresident_child_count": return CoresidentChildCount(max_age=optional_age("max_age")) + if kind == "coresident_adult": + return CoresidentAdult(min_age=required("min_age")) if kind == "take_up_threshold": return TakeUpThreshold(program=text("program")) return _TRANSFORM_KINDS[kind]() @@ -844,7 +884,8 @@ def concept_entity(self) -> str: if isinstance(self.transform, AllocateToReferencePerson): return "person" if isinstance( - self.transform, RelationshipRole | CoresidentChildCount | UnitComposition + self.transform, + RelationshipRole | CoresidentChildCount | CoresidentAdult | UnitComposition, ): return "person" entities = {concept(concept_id).entity for concept_id in self.concepts} @@ -997,6 +1038,13 @@ def _check_transform_arity(binding: InputBinding) -> None: f"Binding for {name!r}: a child count reads both parents " f"(and age when limited): {transform.concepts}." ) + if isinstance(transform, CoresidentAdult) and ( + binding.concepts != transform.concepts + ): + raise ValueError( + f"Binding for {name!r}: a co-resident adult test reads age only: " + f"{transform.concepts}." + ) if isinstance(transform, TakeUpThreshold): if binding.concepts != ("fact:person.take_up_seed",): raise ValueError(f"Binding for {name!r}: take-up reads the seed.") @@ -2080,16 +2128,20 @@ def reference_rows(self) -> np.ndarray: def _matched_ids(values: pd.Series) -> np.ndarray: - """Ids ready for exact matching: null-free integers as int64, else as is. + """Ids ready for exact matching, never as floats that could round. pandas matches against a narrower unsigned index by casting the targets down to it (261 onto 5 for uint8), so null-free integer ids are widened first; :func:`_require_int64_ids` has already refused any int64 cannot - hold. + hold. A nullable integer column holding a null converts to float64, + where ids beyond 2**53 round together, so this returns its ids as Python + ints beside ``pd.NA`` instead. """ - if values.dtype.kind in "iu" and not values.hasnans: - return values.to_numpy(dtype=np.int64) + if values.dtype.kind in "iu": + if not values.hasnans: + return values.to_numpy(dtype=np.int64) + return values.to_numpy(dtype=object, na_value=pd.NA) return values.to_numpy() @@ -2176,6 +2228,8 @@ def _apply( return context.values(concepts[0]).to_numpy(dtype=np.float64) * fraction if isinstance(transform, CoresidentChildCount): return _child_counts(context, transform.max_age) + if isinstance(transform, CoresidentAdult): + return _coresident_adult_flags(context, transform.min_age) if isinstance(transform, TakeUpThreshold): rate = _unit_interval(rates, transform.program, "take-up rate") seeds = context.values(concepts[0]).to_numpy(dtype=np.float64) @@ -2236,6 +2290,34 @@ def _child_counts(context: _Context, max_age: int | None) -> np.ndarray: return counts +def _coresident_adult_flags(context: _Context, min_age: int) -> np.ndarray: + """Whether another person with the same household id has ``min_age``. + + Persons are grouped on the person table's own household id column, + factorized as exact integers (never through a float array), so household + ids beyond 2**53 stay distinct. A person whose household id names no + household row is grouped with the other persons carrying that id; a + person with a null household id shares a household with nobody. + """ + + _require(context, "fact:person.age", "A co-resident adult test") + households, _ = pd.factorize( + _matched_ids(context.person[_PERSON_HOUSEHOLD_ID]), use_na_sentinel=True + ) + ages = context.values("fact:person.age").to_numpy(dtype=np.float64, na_value=np.nan) + # NaN compares false, so a null age never qualifies. + qualifies = ages >= min_age + placed = households >= 0 + per_household = np.bincount( + households[placed], + weights=qualifies[placed], + minlength=int(households.max(initial=-1)) + 1, + ) + others = np.zeros(len(households), dtype=np.float64) + others[placed] = per_household[households[placed]] - qualifies[placed] + return others > 0 + + def _state_column(column: str) -> tuple[str, str]: """``.`` split, for a person or household column.""" entity, _, name = column.partition(".") if isinstance(column, str) else ("", "", "") diff --git a/packages/microcosm-frame/tests/engine_free/shared/test_concept_mapping.py b/packages/microcosm-frame/tests/engine_free/shared/test_concept_mapping.py index 4f4349a061..e8b155d5ad 100644 --- a/packages/microcosm-frame/tests/engine_free/shared/test_concept_mapping.py +++ b/packages/microcosm-frame/tests/engine_free/shared/test_concept_mapping.py @@ -27,6 +27,7 @@ from microcosm.frame.concept_mapping import ( AllocateToReferencePerson, ConceptMapping, + CoresidentAdult, CoresidentChildCount, CoverageReport, Fraction, @@ -542,6 +543,40 @@ def test_missing_parameters_fail_closed(self) -> None: with pytest.raises(ValueError, match=r"\[0, 1\]"): mapping.encode(tables, shares={"p": 1.5}) + def test_household_ids_beyond_two_to_the_53_match_beside_a_null(self) -> None: + # A null turns a nullable id column into float64 in pandas, where + # these two ids are one number. + big = 2**62 + assert float(big) == float(big + 1) + person = pd.DataFrame( + { + "person_id": np.array([1, 2, 3, 4, 5], dtype=np.int64), + "person_household_id": pd.array( + [big, big, big + 1, big + 1, pd.NA], dtype="Int64" + ), + } + ) + household = pd.DataFrame( + { + "household_id": np.array([big, big + 1], dtype=np.int64), + "reference_person_id": pd.array([1, 3], dtype="Int64"), + "rent": [100.0, 900.0], + } + ) + binding = _binding( + engine_input="rent_paid", + concepts=("fact:household.rent",), + transform=AllocateToReferencePerson(), + ) + out = _mapping([binding]).encode({"person": person, "household": household}) + assert out.tables["person"]["rent_paid"].tolist() == [ + 100.0, + 0.0, + 900.0, + 0.0, + 0.0, + ] + def test_allocation_needs_the_reference_person(self) -> None: tables = { "person": pd.DataFrame({"person_id": [1], "person_household_id": [1]}), @@ -913,6 +948,20 @@ def test_a_minimal_mapping_constructs(self) -> None: ({"transform": Scale(factor=0.5)}, "only float concepts scale"), ({"transform": RelationshipRole(role=Role.REFERENCE_PERSON)}, "reads"), ({"transform": CoresidentChildCount()}, "both parents"), + ( + { + "transform": CoresidentAdult(min_age=18), + "concepts": ("fact:person.weeks_worked",), + }, + "age only", + ), + ( + { + "transform": CoresidentAdult(min_age=18), + "concepts": ("fact:person.age", "fact:person.sex"), + }, + "age only", + ), ({"transform": TakeUpThreshold(program="x")}, "seed"), ( { @@ -1092,6 +1141,8 @@ def test_serialised_mappings_refuse_unknown_fields(self) -> None: RelationshipRole(role=Role.PARENT_OF_CORESIDENT_CHILD, max_child_age=17), CoresidentChildCount(), CoresidentChildCount(max_age=17), + CoresidentAdult(min_age=0), + CoresidentAdult(min_age=18), TakeUpThreshold(program="nz.x"), ] @@ -1113,6 +1164,13 @@ def test_every_transform_serialises_and_reads_back(self, transform) -> None: ), ({"kind": "scale", "factor": True}, "number"), ({"kind": "coresident_child_count", "max_age": "17"}, "integer"), + ({"kind": "coresident_adult"}, "lacks 'min_age'"), + ({"kind": "coresident_adult", "min_age": None}, "integer"), + ({"kind": "coresident_adult", "min_age": True}, "integer"), + ({"kind": "coresident_adult", "min_age": 18.0}, "integer"), + ({"kind": "coresident_adult", "min_age": "18"}, "integer"), + ({"kind": "coresident_adult", "min_age": -1}, "negative"), + ({"kind": "coresident_adult", "min_age": 18, "max_age": 3}, "unexpected"), ({"kind": "take_up_threshold"}, "lacks"), ({"kind": "signed_part"}, "lacks"), ({"kind": "signed_part", "sign": "up"}, "'positive' or 'negative'"), @@ -1827,3 +1885,318 @@ def test_malformed_fields_are_named(self, reader, change, message) -> None: def test_malformed_transform_shapes_are_refused(self, data, message) -> None: with pytest.raises(ValueError, match=message): transform_from_dict(data) + + +# --- The co-resident adult test -------------------------------------------- + +_BIG = 2**53 +_ADULT_INPUT = "synthetic_shares_home_with_adult" + + +def _adult_mapping(min_age: int) -> ConceptMapping: + return _mapping( + [ + _binding( + engine_input=_ADULT_INPUT, + transform=CoresidentAdult(min_age=min_age), + ) + ] + ) + + +def _people_table(households, ages, nullable: bool) -> pd.DataFrame: + """A person table; ``ages`` holds numbers or ``None`` for a null age.""" + + if nullable: + age = pd.array(ages, dtype="Int64") + else: + age = np.asarray( + [np.nan if value is None else float(value) for value in ages], + dtype=np.float64, + ) + return pd.DataFrame( + { + "person_id": np.arange(len(ages), dtype=np.int64) * 7 + 3, + "person_household_id": np.asarray(households, dtype=np.int64), + "age": age, + } + ) + + +def _adult_flags(person: pd.DataFrame, min_age: int) -> list[bool]: + household = pd.DataFrame( + { + "household_id": np.asarray( + sorted(set(person["person_household_id"].tolist())), dtype=np.int64 + ) + } + ) + out = _adult_mapping(min_age).encode({"person": person, "household": household}) + values = out.tables["person"][_ADULT_INPUT] + assert values.dtype == np.bool_ + return values.tolist() + + +def _brute_force(households, ages, min_age: int) -> list[bool]: + """I1's reference: a double loop over Python ints.""" + + return [ + any( + other != me + and households[other] == households[me] + and ages[other] is not None + and ages[other] >= min_age + for other in range(len(ages)) + ) + for me in range(len(ages)) + ] + + +@st.composite +def _people(draw): + """Households of mixed sizes, ids unsorted and non-contiguous, some + differing only beyond 2**53, null ages, rows in a drawn order.""" + + ids = draw( + st.lists( + st.one_of( + st.integers(min_value=-50, max_value=10**6), + st.integers(min_value=_BIG - 3, max_value=_BIG + 5), + st.integers(min_value=2**62, max_value=2**62 + 3), + ), + min_size=1, + max_size=6, + unique=True, + ) + ) + households: list[int] = [] + for household_id in ids: + households += [household_id] * draw(st.integers(min_value=1, max_value=5)) + order = draw(st.permutations(range(len(households)))) + households = [households[row] for row in order] + ages = draw( + st.lists( + st.one_of(st.none(), st.integers(min_value=0, max_value=100)), + min_size=len(households), + max_size=len(households), + ) + ) + return households, ages, draw(st.booleans()) + + +_MIN_AGES = st.integers(min_value=0, max_value=101) + + +class TestCoresidentAdult: + @pytest.mark.parametrize("min_age", [None, True, 18.0, "18", -1]) + def test_construction_refuses_anything_but_a_non_negative_integer( + self, min_age + ) -> None: + with pytest.raises(ValueError, match="min_age"): + CoresidentAdult(min_age=min_age) + + def test_min_age_has_no_default(self) -> None: + with pytest.raises(TypeError): + CoresidentAdult() + + def test_it_reads_age_only_and_lives_on_persons(self) -> None: + binding = _binding(transform=CoresidentAdult(min_age=18)) + assert binding.concepts == ("fact:person.age",) + assert binding.concept_entity == "person" + assert _mapping([binding]).invertible_concepts() == () + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES) + def test_i1_it_matches_a_brute_force_double_loop(self, people, min_age) -> None: + households, ages, nullable = people + person = _people_table(households, ages, nullable) + assert _adult_flags(person, min_age) == _brute_force(households, ages, min_age) + + @PROPERTY + @given(people=_people(), low=_MIN_AGES, high=_MIN_AGES) + def test_i2_raising_min_age_never_turns_false_into_true( + self, people, low, high + ) -> None: + low, high = sorted((low, high)) + households, ages, nullable = people + person = _people_table(households, ages, nullable) + for at_low, at_high in zip( + _adult_flags(person, low), _adult_flags(person, high), strict=True + ): + assert at_low or not at_high + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES, data=st.data()) + def test_i3_shuffling_rows_permutes_the_output(self, people, min_age, data) -> None: + households, ages, nullable = people + person = _people_table(households, ages, nullable) + order = data.draw(st.permutations(range(len(person)))) + shuffled = person.iloc[list(order)].reset_index(drop=True) + before = _adult_flags(person, min_age) + assert _adult_flags(shuffled, min_age) == [before[row] for row in order] + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES, data=st.data()) + def test_i4_a_persons_own_age_never_changes_their_value( + self, people, min_age, data + ) -> None: + households, ages, nullable = people + me = data.draw(st.integers(min_value=0, max_value=len(ages) - 1)) + new_age = data.draw(st.one_of(st.none(), st.integers(0, 100))) + changed = [*ages[:me], new_age, *ages[me + 1 :]] + before = _adult_flags(_people_table(households, ages, nullable), min_age) + after = _adult_flags(_people_table(households, changed, nullable), min_age) + assert after[me] == before[me] + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES, data=st.data()) + def test_i5_an_age_change_stays_inside_its_household( + self, people, min_age, data + ) -> None: + households, ages, nullable = people + row = data.draw(st.integers(min_value=0, max_value=len(ages) - 1)) + new_age = data.draw(st.one_of(st.none(), st.integers(0, 100))) + changed = [*ages[:row], new_age, *ages[row + 1 :]] + before = _adult_flags(_people_table(households, ages, nullable), min_age) + after = _adult_flags(_people_table(households, changed, nullable), min_age) + for other, household_id in enumerate(households): + if household_id != households[row]: + assert after[other] == before[other] + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES) + def test_i6_the_qualifying_count_decides_each_household( + self, people, min_age + ) -> None: + households, ages, nullable = people + flags = _adult_flags(_people_table(households, ages, nullable), min_age) + for household_id in set(households): + members = [row for row, h in enumerate(households) if h == household_id] + qualifying = [ + row for row in members if ages[row] is not None and ages[row] >= min_age + ] + for row in members: + if len(qualifying) >= 2: + assert flags[row] + elif len(qualifying) == 1: + assert flags[row] == (row not in qualifying) + else: + assert not flags[row] + + def test_exact_age_qualifies_and_one_person_households_are_false(self) -> None: + households = [5, 5, 9, 2, 2, 2] + ages = [18, 40, 70, 17, None, 30] + person = _people_table(households, ages, nullable=True) + assert _adult_flags(person, 18) == [True, True, False, True, True, False] + assert _adult_flags(person, 19) == [True, False, False, True, True, False] + # A fractional age below the line doesn't qualify. + person = _people_table([3, 3], [17.5, 12], nullable=False) + assert _adult_flags(person, 18) == [False, False] + + @PROPERTY + @given(people=_people(), min_age=_MIN_AGES, data=st.data()) + def test_i7_null_household_ids_leave_the_others_exact( + self, people, min_age, data + ) -> None: + households, ages, nullable = people + nulls = data.draw( + st.lists(st.booleans(), min_size=len(ages), max_size=len(ages)) + ) + ids = [None if null else h for h, null in zip(households, nulls, strict=True)] + person = _people_table(households, ages, nullable) + person["person_household_id"] = pd.array(ids, dtype="Int64") + household = pd.DataFrame( + {"household_id": np.asarray(sorted(set(households)), dtype=np.int64)} + ) + out = _adult_mapping(min_age).encode({"person": person, "household": household}) + expected = [ + ids[me] is not None and flag + for me, flag in enumerate(_brute_force(ids, ages, min_age)) + ] + assert out.tables["person"][_ADULT_INPUT].tolist() == expected + + def test_households_differing_only_beyond_2_53_stay_separate(self) -> None: + # float64 holds 2**53 and 2**53 + 1 as the same number. + assert float(_BIG) == float(_BIG + 1) + households = [_BIG + 1, _BIG, _BIG + 1] + ages = [10, 50, 12] + person = _people_table(households, ages, nullable=False) + assert _adult_flags(person, 18) == [False, False, False] + assert _adult_flags(person, 11) == [True, False, False] + + def test_end_to_end_from_a_parsed_mapping(self) -> None: + data = _mapping([_binding(engine_input=_ADULT_INPUT)]).to_dict() + (binding,) = data["bindings"] + binding["transform"] = {"kind": "coresident_adult", "min_age": 18} + mapping = ConceptMapping.from_dict(json.loads(json.dumps(data))) + assert mapping.bindings[0].transform == CoresidentAdult(min_age=18) + tables = { + "person": pd.DataFrame( + { + "person_id": [40, 10, 30, 20], + "person_household_id": [8, 3, 8, 3], + "age": [70.0, 12.0, 16.0, np.nan], + } + ), + "household": pd.DataFrame({"household_id": [8, 3]}), + } + out = mapping.encode(tables).tables["person"] + assert out["person_id"].tolist() == [40, 10, 30, 20] + assert out[_ADULT_INPUT].tolist() == [False, False, True, False] + + def test_a_frame_without_age_skips_the_input(self) -> None: + tables = { + "person": pd.DataFrame({"person_id": [1], "person_household_id": [1]}), + "household": pd.DataFrame({"household_id": [1]}), + } + out = _adult_mapping(18).encode(tables).tables["person"] + assert _ADULT_INPUT not in out.columns + + def test_a_household_id_naming_no_household_row_still_groups(self) -> None: + tables = { + "person": pd.DataFrame( + { + "person_id": [1, 2, 3, 4], + "person_household_id": [7, 7, 9, 8], + "age": [30.0, 5.0, 40.0, 50.0], + } + ), + "household": pd.DataFrame({"household_id": [9]}), + } + out = _adult_mapping(18).encode(tables).tables["person"] + # Ids 7 and 8 both name no household row, and they stay apart. + assert out[_ADULT_INPUT].tolist() == [False, True, False, False] + + @pytest.mark.parametrize("dtype", ["Int64", "UInt64"]) + def test_a_null_household_id_keeps_ids_beyond_2_53_apart(self, dtype) -> None: + # The null makes pandas offer these ids as float64, where they're + # one number. + big = 2**62 + tables = { + "person": pd.DataFrame( + { + "person_id": [1, 2, 3, 4, 5], + "person_household_id": pd.array( + [big, big, big + 1, big + 1, pd.NA], dtype=dtype + ), + "age": [10.0, 10.0, 40.0, 40.0, 40.0], + } + ), + "household": pd.DataFrame({"household_id": [big, big + 1]}), + } + out = _adult_mapping(18).encode(tables).tables["person"] + assert out[_ADULT_INPUT].tolist() == [False, False, True, True, False] + + def test_a_null_household_id_shares_a_household_with_nobody(self) -> None: + tables = { + "person": pd.DataFrame( + { + "person_id": [1, 2, 3], + "person_household_id": pd.array([pd.NA, pd.NA, 4], dtype="Int64"), + "age": [30.0, 40.0, 50.0], + } + ), + "household": pd.DataFrame({"household_id": [4]}), + } + out = _adult_mapping(18).encode(tables).tables["person"] + assert out[_ADULT_INPUT].tolist() == [False, False, False] diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json index 40bf20145e..bfa6eaad6e 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/cgt_asset_type_facts.json @@ -2,70 +2,70 @@ "resource": "synthetic-cgt-asset-type.json", "resource_sha256": "synthetic", "source_commit": "synthetic", - "table4_all_gains": 6472476.363235764, + "table4_all_gains": 6567779.158835469, "table4_all_tax": 0.0, - "table4_all_taxpayers": 15.64584768489452, + "table4_all_taxpayers": 15.645847684894523, "table4_bands": [ { - "gains": 6343.7876538201135, + "gains": 6262.290969943808, "lower_bound": 0, "tax": null, - "taxpayers": 1.4508598323557498, + "taxpayers": 1.4320098873010005, "upper_bound": 10000 }, { - "gains": 31485.760340906432, + "gains": 24063.64355992752, "lower_bound": 10000, "tax": null, - "taxpayers": 1.9244306390596129, + "taxpayers": 1.4653704559490115, "upper_bound": 25000 }, { - "gains": 63324.14855305699, + "gains": 81614.98942021298, "lower_bound": 25000, "tax": null, - "taxpayers": 1.7239151594793525, + "taxpayers": 2.2495857610440857, "upper_bound": 50000 }, { - "gains": 140800.40954871886, + "gains": 134940.71583113162, "lower_bound": 50000, "tax": null, - "taxpayers": 2.0175072572478596, + "taxpayers": 1.9395983558176588, "upper_bound": 100000 }, { - "gains": 155344.30651445186, + "gains": 142317.70165223547, "lower_bound": 100000, "tax": null, - "taxpayers": 0.9869230277893157, + "taxpayers": 0.9050403178705543, "upper_bound": 250000 }, { - "gains": 630694.061491824, + "gains": 622123.2583176545, "lower_bound": 250000, "tax": null, - "taxpayers": 1.7500749317552278, + "taxpayers": 1.725490737653384, "upper_bound": 500000 }, { - "gains": 790243.0554791468, + "gains": 848903.2550118314, "lower_bound": 500000, "tax": null, - "taxpayers": 1.1378960035535624, + "taxpayers": 1.2211988651862962, "upper_bound": 1000000 }, { - "gains": 4654240.833653839, + "gains": 4707553.304072532, "lower_bound": 1000000, "tax": null, - "taxpayers": 4.654240833653839, + "taxpayers": 4.7075533040725315, "upper_bound": null } ], - "table4_individuals_gains": 6472476.363235764, + "table4_individuals_gains": 6567779.158835469, "table4_individuals_tax": 0.0, - "table4_individuals_taxpayers": 15.64584768489452, + "table4_individuals_taxpayers": 15.645847684894523, "table4_trusts_gains": 0.0, "table4_trusts_tax": 0.0, "table7_total_disposals": 2743095.2380952383, @@ -115,11 +115,11 @@ } ], "table8a_disposals_total": 29.50359849151538, - "table8a_gains_total": 36909134.810149446, - "table8a_tax_total": 7381826.962029889, + "table8a_gains_total": 37385992.48877222, + "table8a_tax_total": 7477198.497754444, "table8a_taxpayers_total": 26.82145317410489, - "table8b_all_gains": 36909134.810149446, + "table8b_all_gains": 37385992.48877222, "table8b_all_taxpayers": 26.82145317410489, - "table8b_individuals_gains": 36909134.810149446, + "table8b_individuals_gains": 37385992.48877222, "table8b_individuals_taxpayers": 26.82145317410489 } diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json index ed88f8626c..f882d0778c 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/fixture.json @@ -2456,8 +2456,8 @@ "locator": "pension.tab", "role": "frs_table", "runtime_sha256_required": true, - "sha256": "7090be19cac198c6fc4545266764d267f9e39073b83c5411d0615eda2ac47e9c", - "size_bytes": 3597, + "sha256": "79ba6767e1300e1bb5d3de808706cb4ee1d86e4694a26e9fd94958e821858f33", + "size_bytes": 3875, "table": "pension", "vintage": "synthetic-h2" } @@ -2475,6 +2475,7 @@ "loss_relief", "ni_class_4_losses_brought_forward", "private_pension_income", + "annuity_and_trust_income", "individual_savings_account_interest_income", "savings_interest_income", "dividend_income", @@ -2575,6 +2576,7 @@ "loss_relief", "ni_class_4_losses_brought_forward", "private_pension_income", + "annuity_and_trust_income", "individual_savings_account_interest_income", "savings_interest_income", "dividend_income", @@ -3275,7 +3277,7 @@ "hmrc_spi_total_investment_income", "hmrc_spi_assessable_income" ], - "notes": "Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes.", + "notes": "Runs the SPI-trained income QRFs on the raw-spine support channel, drawing for its claimants and partners aged 16 and over so dependants aged 16 to 19 keep their FRS twin's values (uk-data#504, microcosm#1095), initializes FRS charity columns to zero, trains FRS-only stage 2 on the FRS rows' reported values, flags the rows it drew (person_is_spi_income_recipient) so later stages tell tape-concept rows from FRS-concept ones without re-deriving the recipient rule (microcosm#840), leaves every FRS-channel income as reported (no base-channel redraw of dividends; uk-data#498, microcosm#1095), and emits a sidecar-only 208-fact replay report for the spine path. Stage 2 also draws trading_loss, the year's trading loss the tape does not carry, from the FRS rows (uk-data#528), and a drawn row whose self_employment_income is positive keeps no loss, so profit and loss never both hold an amount, as on the FRS rows (microcosm#1095). The chain draws self_employment_income net of the tape's losses brought forward (LOSSBF), as the tape holds profits, and last of all, so no earlier draw moves, the year's profit before them and the losses. After the FRS-only fill and the HMRC aggregates the stage moves the losses out of the profit into loss_relief and ni_class_4_losses_brought_forward, the inputs policyengine-uk relieves them against (income tax under ITA 2007 s.83, Class 4 under SSCBA 1992 Sch 2 para 3), so Universal Credit, HBAI and market income read the year's profit; where the drawn net profit is positive the losses are its gap to the year's profit and where it is zero they are at least that profit, so the profit after the relief is the drawn net profit on every row, which the HMRC aggregates and the HMRC self-employment rows read (uk-data#528, microcosm#1095). The engine carries both losses into each projected year at their nominal value while the profit grows with its index. Stage 2 draws the six owner-manager inputs last, the five flags as 0 or 1 and then the income share, so each follows the drawn incomes; the root stage's rules then hold on the drawn rows (an owner works in the company, its other inputs need an owner, and a company carries on a trade or a property business, never both), since the tape carries no director answers (microcosm#1095). A drawn row's annual income descriptors follow its drawn incomes. The tape records the tax year's income, so its pay, profit and private pension shares are 1, and its contributory benefits, stage-2 draws on the current concept with no spell of their own, take share 1 too. It keeps its twin's other-spell pay only where it drew no pay, and its twin's ceased self-employment only where it drew no profit, since the bridge draws a record without pay for a twin who left a job in the year. An undrawn copy keeps its twin's descriptors with its twin's incomes. A drawn row's annuity and trust descriptor is zero, since the tape's private pension excludes those payments and books them as other income (microcosm#1428).", "operations": [ { "artifact_roles": [ @@ -3478,7 +3480,7 @@ "hmrc_spi_state_pension_income": "srp_regular_code5", "hmrc_spi_taxable_termination_pay": null, "hmrc_spi_unemployment_benefit_income": "hmrc_spi_unemployment_benefit_income", - "other_investment_income": null, + "other_investment_income": "other_investment_income", "private_pension_income": "private_pension_income", "property_finance_costs": null, "property_income": "property_income", @@ -4076,7 +4078,8 @@ "self_employment_income_annual_share", "self_employment_income_other_spells", "private_pension_income_annual_share", - "contributory_benefits_annual_share" + "contributory_benefits_annual_share", + "annuity_and_trust_income" ], "source": "https://assets.publishing.service.gov.uk/media/69f1f12d2fae53a03709682f/Collated_Tables_3_1_to_3_11_2324.ods", "stage": "hmrc_spi_income_spine", @@ -7002,6 +7005,54 @@ "stage": "student_loans", "survey": "Family Resources Survey 2024-25 and Student Loans Company borrower forecasts for England" }, + "trading_allowance_receipts": { + "artifacts": [], + "grain": "person", + "nonnegative_outputs": [ + "self_employment_gross_receipts" + ], + "notes": "The last spine stage (microcosm#1428). policyengine-uk applies the trading allowance against self_employment_gross_receipts, which neither the FRS nor the SPI tape records; without receipts a rise in the allowance relieves only profits up to the new allowance, in full, and misses its main base, the traders who already claim the GBP 1,000 allowance against larger receipts. Under current law a claimant's receipts are their profit plus GBP 1,000 exactly. Each trader with a positive profit is flagged a claimant at their profit band's rate, drawn on their own person_id: a claimant's receipts are their profit plus GBP 1,000, any other trader's their profit plus GBP 3,000 (expenses at the raised allowance, so the raise does not relieve them; the costing books switchers as behaviour), and a person with no positive profit keeps zero, which the engine reads as unknown. Every trader with a positive profit is treated as filing, as SPI Table 3.10's counts, which bind the frame's traders, are of filers, so a profit of GBP 1,000 or less is now taxed where the engine used to relieve it in full. The rates are calibrated to HMRC's policy paper until HMRC publishes claimant counts. The engine uprates receipts with profit, so a claimant's GBP 1,000 grows with the mixed income index while the allowance is nominal: the raise relieves GBP 1,932 more in 2027-28, falling to GBP 1,758 by 2031-32, 3.4% to 12.1% below GBP 2,000. The other traders' stored GBP 3,000 grows the same way, so an allowance above GBP 3,000 times that index relieves them from the stored expense, not from data: allowances above GBP 3,000 are mis-scored until policyengine-uk#2765 lets the stage store the claim status (microcosm#1439; Mar\u00eda's ruling of 2026-11-01).", + "operations": [ + { + "calibration": "HMRC's policy paper on the Budget 2026 trading allowance raise: about 400,000 taxpayers with a lower bill, by about GBP 380 on average, measured on policyengine-uk for the microcosm#1428 national from 9f70c71e7 at 2028-29 prices; the rates drift with each national (microcosm#1439), until HMRC publishes claimant counts (Mar\u00eda's choices of 2026-10-31 and 2026-11-01)", + "claimant_bands": [ + { + "rate": 0.72, + "upper_inclusive": 4500 + }, + { + "rate": 0.14, + "upper_inclusive": 9000 + }, + { + "rate": 0 + } + ], + "claimant_expenses": 1000, + "draw": "trading_allowance_claimant", + "kind": "assign_trading_allowance_receipts", + "other_expenses": 3000, + "output": "self_employment_gross_receipts", + "profit": "self_employment_income", + "rule": "a person with a positive self_employment_income claims the allowance where their uniform falls below their profit band's rate; a claimant's receipts are their profit plus claimant_expenses, any other trader's their profit plus other_expenses, and a person with no positive profit keeps zero", + "seed": 0 + }, + { + "declared_factor": 1, + "entity": "household", + "gate_coupling": "The terminal family gate requires a valid mass-conserving MassChangeRecord carrying exactly this stage-specific reason.", + "kind": "record_mass_conservation_receipt", + "reason": "Self-employed gross receipts stored on the source spine: household weights pass through unchanged and total household mass is conserved." + } + ], + "outputs": [ + "self_employment_gross_receipts" + ], + "rewrites": [], + "source": "self_employment_income after the SPI income stage; HMRC's published gainers of the raise to GBP 3,000, about 400,000 taxpayers with a lower bill by about GBP 380 on average", + "stage": "trading_allowance_receipts", + "survey": "The self-employed's own profit on the final spine, and HMRC's policy paper on the Budget 2026 trading allowance raise (calibration)" + }, "uc_capital_coherence": { "artifacts": [], "grain": "benunit", @@ -7349,9 +7400,9 @@ "minimum_pool_sources": 30, "not_drawn": "keeps its stored flag, except a unit keeping income-related ESA, which claims none", "output": "would_claim_uc", - "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it", + "pooling": "adjacent bands within a family type, lowest first, until the drawn units rest on minimum_pool_sources distinct household_source_id values; a short last pool joins the one before it. Then, lowest first, a pool that cannot meet DWP's count (its undrawn entitled units' expected claims exceed the count, or the count exceeds them plus the weight of every drawn unit) is held at the nearer of those ends and passes its gap to the other pools, nearest first, the one with more room first at equal distance and the lower on a tie, each taking what its room allows; a gap no pool can take leaves the family type unreachable", "population": "uc_age_eligible", - "residual_rate": "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too", + "residual_rate": "(T - F) / D, clipped to [0, 1]; T DWP's calendar-2025 mean count of the pool's bands after any gaps passed to or from it, D the weight of the pool's drawn units and F the expected claims of its other entitled units, over Great Britain at the stage's household weights; realized by the drawn units claiming in the order of their uniform until their weight is nearest T - F, and applied at that uniform to Northern Ireland's drawn units too", "seed": 0, "solve_scope": "great_britain", "targets": "DWP Stat-Xplore Households on Universal Credit by family type and monthly award band, mean of April to December 2025", diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/pension.tab b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/pension.tab index 7b8df74533..da8ce3e7ce 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/pension.tab +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/frs_raw/pension.tab @@ -1,136 +1,136 @@ -SERNUM BENUNIT PERSON PENPAY PTAMT PTINC POAMT POINC PENOTH -1 1 1 10.0 2.0 2 3.0 2 0 -2 1 1 10.0 2.0 2 3.0 2 0 -3 1 1 10.0 2.0 2 3.0 2 0 -4 1 1 10.0 2.0 2 3.0 2 0 -5 1 1 10.0 2.0 2 3.0 2 0 -6 1 1 10.0 2.0 2 3.0 2 0 -7 1 1 10.0 2.0 2 3.0 2 0 -8 1 1 10.0 2.0 2 3.0 2 0 -9 1 1 10.0 2.0 2 3.0 2 0 -10 1 1 10.0 2.0 2 3.0 2 0 -11 1 1 10.0 2.0 2 3.0 2 0 -12 1 1 10.0 2.0 2 3.0 2 0 -13 1 1 10.0 2.0 2 3.0 2 0 -14 1 1 10.0 2.0 2 3.0 2 0 -15 1 1 10.0 2.0 2 3.0 2 0 -16 1 1 10.0 2.0 2 3.0 2 0 -17 1 1 10.0 2.0 2 3.0 2 0 -18 1 1 10.0 2.0 2 3.0 2 0 -19 1 1 10.0 2.0 2 3.0 2 0 -20 1 1 10.0 2.0 2 3.0 2 0 -21 1 1 10.0 2.0 2 3.0 2 0 -22 1 1 10.0 2.0 2 3.0 2 0 -23 1 1 10.0 2.0 2 3.0 2 0 -24 1 1 10.0 2.0 2 3.0 2 0 -25 1 1 10.0 2.0 2 3.0 2 0 -26 1 1 10.0 2.0 2 3.0 2 0 -27 1 1 10.0 2.0 2 3.0 2 0 -28 1 1 10.0 2.0 2 3.0 2 0 -29 1 1 10.0 2.0 2 3.0 2 0 -30 1 1 10.0 2.0 2 3.0 2 0 -31 1 1 10.0 2.0 2 3.0 2 0 -32 1 1 10.0 2.0 2 3.0 2 0 -33 1 1 10.0 2.0 2 3.0 2 0 -34 1 1 10.0 2.0 2 3.0 2 0 -35 1 1 10.0 2.0 2 3.0 2 0 -36 1 1 10.0 2.0 2 3.0 2 0 -37 1 1 10.0 2.0 2 3.0 2 0 -38 1 1 10.0 2.0 2 3.0 2 0 -39 1 1 10.0 2.0 2 3.0 2 0 -40 1 1 10.0 2.0 2 3.0 2 0 -41 1 1 10.0 2.0 2 3.0 2 0 -42 1 1 10.0 2.0 2 3.0 2 0 -43 1 1 10.0 2.0 2 3.0 2 0 -44 1 1 10.0 2.0 2 3.0 2 0 -45 1 1 10.0 2.0 2 3.0 2 0 -46 1 1 10.0 2.0 2 3.0 2 0 -47 1 1 10.0 2.0 2 3.0 2 0 -48 1 1 10.0 2.0 2 3.0 2 0 -49 1 1 10.0 2.0 2 3.0 2 0 -50 1 1 10.0 2.0 2 3.0 2 0 -51 1 1 10.0 2.0 2 3.0 2 0 -52 1 1 10.0 2.0 2 3.0 2 0 -53 1 1 10.0 2.0 2 3.0 2 0 -54 1 1 10.0 2.0 2 3.0 2 0 -55 1 1 10.0 2.0 2 3.0 2 0 -56 1 1 10.0 2.0 2 3.0 2 0 -57 1 1 10.0 2.0 2 3.0 2 0 -58 1 1 10.0 2.0 2 3.0 2 0 -59 1 1 10.0 2.0 2 3.0 2 0 -60 1 1 10.0 2.0 2 3.0 2 0 -61 1 1 10.0 2.0 2 3.0 2 0 -62 1 1 10.0 2.0 2 3.0 2 0 -63 1 1 10.0 2.0 2 3.0 2 0 -64 1 1 10.0 2.0 2 3.0 2 0 -65 1 1 10.0 2.0 2 3.0 2 0 -66 1 1 10.0 2.0 2 3.0 2 0 -67 1 1 10.0 2.0 2 3.0 2 0 -68 1 1 10.0 2.0 2 3.0 2 0 -69 1 1 10.0 2.0 2 3.0 2 0 -70 1 1 10.0 2.0 2 3.0 2 0 -71 1 1 10.0 2.0 2 3.0 2 0 -72 1 1 10.0 2.0 2 3.0 2 0 -73 1 1 10.0 2.0 2 3.0 2 0 -74 1 1 10.0 2.0 2 3.0 2 0 -75 1 1 10.0 2.0 2 3.0 2 0 -76 1 1 10.0 2.0 2 3.0 2 0 -77 1 1 10.0 2.0 2 3.0 2 0 -78 1 1 10.0 2.0 2 3.0 2 0 -79 1 1 10.0 2.0 2 3.0 2 0 -80 1 1 10.0 2.0 2 3.0 2 0 -81 1 1 10.0 2.0 2 3.0 2 0 -82 1 1 10.0 2.0 2 3.0 2 0 -83 1 1 10.0 2.0 2 3.0 2 0 -84 1 1 10.0 2.0 2 3.0 2 0 -85 1 1 10.0 2.0 2 3.0 2 0 -86 1 1 10.0 2.0 2 3.0 2 0 -87 1 1 10.0 2.0 2 3.0 2 0 -88 1 1 10.0 2.0 2 3.0 2 0 -89 1 1 10.0 2.0 2 3.0 2 0 -90 1 1 10.0 2.0 2 3.0 2 0 -91 1 1 10.0 2.0 2 3.0 2 0 -92 1 1 10.0 2.0 2 3.0 2 0 -93 1 1 10.0 2.0 2 3.0 2 0 -94 1 1 10.0 2.0 2 3.0 2 0 -95 1 1 10.0 2.0 2 3.0 2 0 -96 1 1 10.0 2.0 2 3.0 2 0 -97 1 1 10.0 2.0 2 3.0 2 0 -98 1 1 10.0 2.0 2 3.0 2 0 -99 1 1 10.0 2.0 2 3.0 2 0 -100 1 1 10.0 2.0 2 3.0 2 0 -101 1 1 10.0 2.0 2 3.0 2 0 -102 1 1 10.0 2.0 2 3.0 2 0 -103 1 1 10.0 2.0 2 3.0 2 0 -104 1 1 10.0 2.0 2 3.0 2 0 -105 1 1 10.0 2.0 2 3.0 2 0 -106 1 1 10.0 2.0 2 3.0 2 0 -107 1 1 10.0 2.0 2 3.0 2 0 -108 1 1 10.0 2.0 2 3.0 2 0 -109 1 1 10.0 2.0 2 3.0 2 0 -110 1 1 10.0 2.0 2 3.0 2 0 -111 1 1 10.0 2.0 2 3.0 2 0 -112 1 1 10.0 2.0 2 3.0 2 0 -113 1 1 10.0 2.0 2 3.0 2 0 -114 1 1 10.0 2.0 2 3.0 2 0 -115 1 1 10.0 2.0 2 3.0 2 0 -116 1 1 10.0 2.0 2 3.0 2 0 -117 1 1 10.0 2.0 2 3.0 2 0 -118 1 1 10.0 2.0 2 3.0 2 0 -119 1 1 10.0 2.0 2 3.0 2 0 -120 1 1 10.0 2.0 2 3.0 2 0 -121 1 1 10.0 2.0 2 3.0 2 0 -122 1 1 10.0 2.0 2 3.0 2 0 -123 1 1 10.0 2.0 2 3.0 2 0 -124 1 1 10.0 2.0 2 3.0 2 0 -125 1 1 10.0 2.0 2 3.0 2 0 -126 1 1 10.0 2.0 2 3.0 2 0 -127 1 1 10.0 2.0 2 3.0 2 0 -128 1 1 10.0 2.0 2 3.0 2 0 -129 1 1 10.0 2.0 2 3.0 2 0 -130 1 1 10.0 2.0 2 3.0 2 0 -131 1 1 10.0 2.0 2 3.0 2 0 -132 1 1 10.0 2.0 2 3.0 2 0 -133 1 1 10.0 2.0 2 3.0 2 0 -134 1 1 10.0 2.0 2 3.0 2 0 -135 1 1 10.0 2.0 2 3.0 2 0 +SERNUM BENUNIT PERSON PENTYPE PENPAY PTAMT PTINC POAMT POINC PENOTH +1 1 1 1 10.0 2.0 2 3.0 2 0 +2 1 1 1 10.0 2.0 2 3.0 2 0 +3 1 1 1 10.0 2.0 2 3.0 2 0 +4 1 1 1 10.0 2.0 2 3.0 2 0 +5 1 1 5 10.0 2.0 2 3.0 2 0 +6 1 1 1 10.0 2.0 2 3.0 2 0 +7 1 1 1 10.0 2.0 2 3.0 2 0 +8 1 1 1 10.0 2.0 2 3.0 2 0 +9 1 1 1 10.0 2.0 2 3.0 2 0 +10 1 1 5 10.0 2.0 2 3.0 2 0 +11 1 1 1 10.0 2.0 2 3.0 2 0 +12 1 1 1 10.0 2.0 2 3.0 2 0 +13 1 1 1 10.0 2.0 2 3.0 2 0 +14 1 1 1 10.0 2.0 2 3.0 2 0 +15 1 1 5 10.0 2.0 2 3.0 2 0 +16 1 1 1 10.0 2.0 2 3.0 2 0 +17 1 1 1 10.0 2.0 2 3.0 2 0 +18 1 1 1 10.0 2.0 2 3.0 2 0 +19 1 1 1 10.0 2.0 2 3.0 2 0 +20 1 1 5 10.0 2.0 2 3.0 2 0 +21 1 1 1 10.0 2.0 2 3.0 2 0 +22 1 1 1 10.0 2.0 2 3.0 2 0 +23 1 1 1 10.0 2.0 2 3.0 2 0 +24 1 1 1 10.0 2.0 2 3.0 2 0 +25 1 1 5 10.0 2.0 2 3.0 2 0 +26 1 1 1 10.0 2.0 2 3.0 2 0 +27 1 1 1 10.0 2.0 2 3.0 2 0 +28 1 1 1 10.0 2.0 2 3.0 2 0 +29 1 1 1 10.0 2.0 2 3.0 2 0 +30 1 1 5 10.0 2.0 2 3.0 2 0 +31 1 1 1 10.0 2.0 2 3.0 2 0 +32 1 1 1 10.0 2.0 2 3.0 2 0 +33 1 1 1 10.0 2.0 2 3.0 2 0 +34 1 1 1 10.0 2.0 2 3.0 2 0 +35 1 1 5 10.0 2.0 2 3.0 2 0 +36 1 1 1 10.0 2.0 2 3.0 2 0 +37 1 1 1 10.0 2.0 2 3.0 2 0 +38 1 1 1 10.0 2.0 2 3.0 2 0 +39 1 1 1 10.0 2.0 2 3.0 2 0 +40 1 1 5 10.0 2.0 2 3.0 2 0 +41 1 1 1 10.0 2.0 2 3.0 2 0 +42 1 1 1 10.0 2.0 2 3.0 2 0 +43 1 1 1 10.0 2.0 2 3.0 2 0 +44 1 1 1 10.0 2.0 2 3.0 2 0 +45 1 1 5 10.0 2.0 2 3.0 2 0 +46 1 1 1 10.0 2.0 2 3.0 2 0 +47 1 1 1 10.0 2.0 2 3.0 2 0 +48 1 1 1 10.0 2.0 2 3.0 2 0 +49 1 1 1 10.0 2.0 2 3.0 2 0 +50 1 1 5 10.0 2.0 2 3.0 2 0 +51 1 1 1 10.0 2.0 2 3.0 2 0 +52 1 1 1 10.0 2.0 2 3.0 2 0 +53 1 1 1 10.0 2.0 2 3.0 2 0 +54 1 1 1 10.0 2.0 2 3.0 2 0 +55 1 1 5 10.0 2.0 2 3.0 2 0 +56 1 1 1 10.0 2.0 2 3.0 2 0 +57 1 1 1 10.0 2.0 2 3.0 2 0 +58 1 1 1 10.0 2.0 2 3.0 2 0 +59 1 1 1 10.0 2.0 2 3.0 2 0 +60 1 1 5 10.0 2.0 2 3.0 2 0 +61 1 1 1 10.0 2.0 2 3.0 2 0 +62 1 1 1 10.0 2.0 2 3.0 2 0 +63 1 1 1 10.0 2.0 2 3.0 2 0 +64 1 1 1 10.0 2.0 2 3.0 2 0 +65 1 1 5 10.0 2.0 2 3.0 2 0 +66 1 1 1 10.0 2.0 2 3.0 2 0 +67 1 1 1 10.0 2.0 2 3.0 2 0 +68 1 1 1 10.0 2.0 2 3.0 2 0 +69 1 1 1 10.0 2.0 2 3.0 2 0 +70 1 1 5 10.0 2.0 2 3.0 2 0 +71 1 1 1 10.0 2.0 2 3.0 2 0 +72 1 1 1 10.0 2.0 2 3.0 2 0 +73 1 1 1 10.0 2.0 2 3.0 2 0 +74 1 1 1 10.0 2.0 2 3.0 2 0 +75 1 1 5 10.0 2.0 2 3.0 2 0 +76 1 1 1 10.0 2.0 2 3.0 2 0 +77 1 1 1 10.0 2.0 2 3.0 2 0 +78 1 1 1 10.0 2.0 2 3.0 2 0 +79 1 1 1 10.0 2.0 2 3.0 2 0 +80 1 1 5 10.0 2.0 2 3.0 2 0 +81 1 1 1 10.0 2.0 2 3.0 2 0 +82 1 1 1 10.0 2.0 2 3.0 2 0 +83 1 1 1 10.0 2.0 2 3.0 2 0 +84 1 1 1 10.0 2.0 2 3.0 2 0 +85 1 1 5 10.0 2.0 2 3.0 2 0 +86 1 1 1 10.0 2.0 2 3.0 2 0 +87 1 1 1 10.0 2.0 2 3.0 2 0 +88 1 1 1 10.0 2.0 2 3.0 2 0 +89 1 1 1 10.0 2.0 2 3.0 2 0 +90 1 1 5 10.0 2.0 2 3.0 2 0 +91 1 1 1 10.0 2.0 2 3.0 2 0 +92 1 1 1 10.0 2.0 2 3.0 2 0 +93 1 1 1 10.0 2.0 2 3.0 2 0 +94 1 1 1 10.0 2.0 2 3.0 2 0 +95 1 1 5 10.0 2.0 2 3.0 2 0 +96 1 1 1 10.0 2.0 2 3.0 2 0 +97 1 1 1 10.0 2.0 2 3.0 2 0 +98 1 1 1 10.0 2.0 2 3.0 2 0 +99 1 1 1 10.0 2.0 2 3.0 2 0 +100 1 1 5 10.0 2.0 2 3.0 2 0 +101 1 1 1 10.0 2.0 2 3.0 2 0 +102 1 1 1 10.0 2.0 2 3.0 2 0 +103 1 1 1 10.0 2.0 2 3.0 2 0 +104 1 1 1 10.0 2.0 2 3.0 2 0 +105 1 1 5 10.0 2.0 2 3.0 2 0 +106 1 1 1 10.0 2.0 2 3.0 2 0 +107 1 1 1 10.0 2.0 2 3.0 2 0 +108 1 1 1 10.0 2.0 2 3.0 2 0 +109 1 1 1 10.0 2.0 2 3.0 2 0 +110 1 1 5 10.0 2.0 2 3.0 2 0 +111 1 1 1 10.0 2.0 2 3.0 2 0 +112 1 1 1 10.0 2.0 2 3.0 2 0 +113 1 1 1 10.0 2.0 2 3.0 2 0 +114 1 1 1 10.0 2.0 2 3.0 2 0 +115 1 1 5 10.0 2.0 2 3.0 2 0 +116 1 1 1 10.0 2.0 2 3.0 2 0 +117 1 1 1 10.0 2.0 2 3.0 2 0 +118 1 1 1 10.0 2.0 2 3.0 2 0 +119 1 1 1 10.0 2.0 2 3.0 2 0 +120 1 1 5 10.0 2.0 2 3.0 2 0 +121 1 1 1 10.0 2.0 2 3.0 2 0 +122 1 1 1 10.0 2.0 2 3.0 2 0 +123 1 1 1 10.0 2.0 2 3.0 2 0 +124 1 1 1 10.0 2.0 2 3.0 2 0 +125 1 1 5 10.0 2.0 2 3.0 2 0 +126 1 1 1 10.0 2.0 2 3.0 2 0 +127 1 1 1 10.0 2.0 2 3.0 2 0 +128 1 1 1 10.0 2.0 2 3.0 2 0 +129 1 1 1 10.0 2.0 2 3.0 2 0 +130 1 1 5 10.0 2.0 2 3.0 2 0 +131 1 1 1 10.0 2.0 2 3.0 2 0 +132 1 1 1 10.0 2.0 2 3.0 2 0 +133 1 1 1 10.0 2.0 2 3.0 2 0 +134 1 1 1 10.0 2.0 2 3.0 2 0 +135 1 1 5 10.0 2.0 2 3.0 2 0 diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv index aabce4126d..5651513d26 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/person.csv @@ -1,163 +1,163 @@ -person_id,person_benunit_id,person_household_id,age,gender,months_since_last_birthday,marital_status,hours_worked,care_hours,frs_care_hours_in_household,is_household_head,is_benunit_head,is_parent,is_blind,employment_income,self_employment_income,trading_loss,loss_relief,ni_class_4_losses_brought_forward,private_pension_income,individual_savings_account_interest_income,savings_interest_income,dividend_income,other_investment_income,stands_as_sole_owner_or_partner_of_company,is_engaged_in_owned_company_trade,owned_company_is_main_employment,owned_company_carries_on_trade,owned_company_carries_on_property_business,owned_company_income_share,frs_bonus_amount,frs_company_car_price_band,frs_company_car_fuel_code,frs_company_car_private_fuel,frs_company_car_contribution,property_income,reports_rent_from_other_property,maintenance_income,spousal_maintenance_income,miscellaneous_income,private_transfer_income,lump_sum_income,student_loan_repayments,statutory_sick_pay,statutory_maternity_pay,statutory_paternity_pay,student_loans,access_fund,education_grants,healthy_start_vouchers,free_school_breakfasts,free_school_fruit_veg,free_school_meals,child_benefit_reported,income_support_reported,housing_benefit_reported,attendance_allowance_reported,dla_sc_reported,dla_m_reported,iidb_reported,carers_allowance_reported,sda_reported,afcs_reported,ssmg_reported,pension_credit_reported,child_tax_credit_reported,working_tax_credit_reported,state_pension_reported,winter_fuel_allowance_reported,incapacity_benefit_reported,universal_credit_reported,pip_m_reported,pip_dl_reported,jsa_contrib_reported,jsa_income_reported,esa_contrib_reported,esa_income_reported,esa_includes_support_component,bsp_reported,widowed_parents_allowance_reported,war_widows_pension_reported,would_claim_carers_allowance,council_tax_benefit_reported,maintenance_expenses,childcare_expenses,personal_pension_contributions,employee_pension_contributions,pension_contributions_via_salary_sacrifice,salary_sacrifice_reported,salary_sacrifice_asked,is_uc_claimant,rent_paid_as_boarder,rent_paid_as_lodger,is_claimant_or_partner,is_hbai_dependent_child,uc_is_in_startup_period,uc_is_in_gainful_self_employment,__stratum__ -1001,101,1,80,FEMALE,5.9_9999999999921663e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.2_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -2001,201,2,22,MALE,1.0_0509554140127424e+01,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.3_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -3001,301,3,23,FEMALE,1.9_5569620253164977e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.3_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -4001,401,4,24,MALE,1.0_0377358490566309e+01,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.4_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -5001,501,5,25,FEMALE,1.9_6875000000004219e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.4_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -5002,501,5,13,FEMALE,9.5_4545454545455918e-01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -6001,601,6,26,MALE,1.0_0248447204969420e+01,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.5_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -7001,701,7,27,FEMALE,1.0_0185185185185510e+01,SINGLE,1.4_0400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,5.5_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,8,2,True,1.5_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -8001,801,8,28,MALE,1.9_8773006134973951e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.6_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -9001,901,9,29,FEMALE,1.0_0060975609756149e+01,MARRIED,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.6_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -10001,1001,10,30,MALE,1.9_9999999999997891e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.7_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -10002,1001,10,10,MALE,5.0_2941176470588047e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -11001,1101,11,31,FEMALE,2.0_0602409638553958e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.7_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -12001,1201,12,32,MALE,9.9_8802395209581917e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.8_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -13001,1301,13,33,FEMALE,9.9_8214285714285587e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.8_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -14001,1401,14,34,MALE,2.0_2366863905325678e+00,SINGLE,1.7_6800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,5.9_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -15001,1501,15,35,FEMALE,9.9_7058823529413729e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.9_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -15002,1501,15,15,FEMALE,1.1_0142857142857142e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -16001,1601,16,36,MALE,9.9_6491228070176049e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.0_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -17001,1701,17,37,FEMALE,9.9_5930232558133888e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.0_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,10,6,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -18001,1801,18,38,MALE,9.9_5375722543345631e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.1_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default -19001,1901,19,39,FEMALE,2.0_5172413793092900e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.1_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -20001,2001,20,40,MALE,9.9_4285714285704536e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.2_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -20002,2001,20,12,MALE,1.4_9999999999999800e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -21001,2101,21,41,FEMALE,2.0_6249999999993028e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,6.2_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -22001,2201,22,42,MALE,2.0_6779661016939098e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.3_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -23001,2301,23,43,FEMALE,9.9_2696629213474324e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.3_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -24001,2401,24,44,MALE,9.9_2178770949715272e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.4_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -25001,2501,25,45,FEMALE,9.9_1666666666655239e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.5_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -25002,2501,25,9,FEMALE,6.4_8484848484848264e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -26001,2601,26,46,MALE,5.9_9999999999964206e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.5_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -27001,2701,27,47,FEMALE,5.9_9999999999982769e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.6_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -28001,2801,28,48,MALE,5.9_9999999999974420e+00,SINGLE,1.1_9600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,6.6_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -29001,2901,29,49,FEMALE,5.9_9999999999966072e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.7_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -30001,3001,30,50,MALE,5.9_9999999999984190e+00,MARRIED,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.7_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -30002,3001,30,14,MALE,1.0_4705882352941195e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -31001,3101,31,51,FEMALE,5.9_9999999999976019e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.8_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -32001,3201,32,52,MALE,5.9_9999999999967848e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.8_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -33001,3301,33,53,FEMALE,5.9_9999999999985523e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.9_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -34001,3401,34,54,MALE,5.9_9999999999977529e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.9_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -35001,3501,35,55,FEMALE,5.9_9999999999969624e+00,SINGLE,1.5_6000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,7.0_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -35002,3501,35,11,FEMALE,6.4_5714285714285818e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -36001,3601,36,56,MALE,5.9_9999999999986855e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.0_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -37001,3701,37,57,FEMALE,5.9_9999999999979039e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.1_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -38001,3801,38,58,MALE,5.9_9999999999971401e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.1_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -39001,3901,39,59,FEMALE,5.9_9999999999963762e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.2_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -40001,4001,40,60,MALE,5.9_9999999999980638e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.2_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -40002,4001,40,8,MALE,5.5_5555555555555536e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -41001,4101,41,61,FEMALE,5.9_9999999999972999e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.3_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -42001,4201,42,62,MALE,5.9_9999999999965539e+00,MARRIED,1.9_2400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,7.3_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -43001,4301,43,63,FEMALE,5.9_9999999999981970e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.4_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -44001,4401,44,64,MALE,5.9_9999999999974509e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.4_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -45001,4501,45,65,FEMALE,5.9_9999999999967137e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.5_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -45002,4501,45,13,FEMALE,3.2_2727272727272707e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -46001,4601,46,66,MALE,5.9_9999999999983213e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.5_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -47001,4701,47,67,FEMALE,5.9_9999999999975842e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.6_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -48001,4801,48,68,MALE,5.9_9999999999968736e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.6_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -49001,4901,49,69,FEMALE,5.9_9999999999984368e+00,SINGLE,2.2_8800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,7.7_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -50001,5001,50,70,MALE,5.9_9999999999954525e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.8_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -50002,5001,50,10,MALE,1.0_6764705882352917e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -51001,5101,51,71,FEMALE,5.9_9999999999947597e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.8_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -52001,5201,52,72,MALE,5.9_9999999999940758e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.9_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -53001,5301,53,73,FEMALE,5.9_9999999999934008e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.9_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -54001,5401,54,74,MALE,5.9_9999999999971578e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.0_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -55001,5501,55,20,FEMALE,5.9_9999999999997691e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.0_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -55002,5501,55,15,FEMALE,1.3_2857142857142363e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -56001,5601,56,21,MALE,6.0_0000000000001776e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,8.1_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -57001,5701,57,22,FEMALE,6.0_0000000000000355e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.1_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -58001,5801,58,23,MALE,5.9_9999999999998668e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.2_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -59001,5901,59,24,FEMALE,6.0_0000000000002487e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.2_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -60001,6001,60,25,MALE,6.0_0000000000006217e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.3_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -60002,6001,60,12,MALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -61001,6101,61,26,FEMALE,6.0_0000000000010125e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.3_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -62001,6201,62,27,MALE,6.0_0000000000013856e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.4_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -63001,6301,63,28,FEMALE,6.0_0000000000007194e+00,MARRIED,1.7_1600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,8.4_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -64001,6401,64,29,MALE,6.0_0000000000000533e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.5_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -65001,6501,65,30,FEMALE,6.0_0000000000004263e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.5_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -65002,6501,65,9,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -66001,6601,66,31,MALE,5.9_9999999999997602e+00,MARRIED,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.6_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -67001,6701,67,32,FEMALE,6.0_0000000000001332e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.6_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -68001,6801,68,33,MALE,6.0_0000000000004796e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.7_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -69001,6901,69,34,FEMALE,5.9_9999999999998401e+00,MARRIED,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.7_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -70001,7001,70,35,MALE,6.0_0000000000001954e+00,SINGLE,2.0_8000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,8.8_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,5.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -70002,7001,70,14,MALE,6.9_4117647058824527e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -71001,7101,71,36,FEMALE,5.9_9999999999995648e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.8_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -72001,7201,72,37,MALE,5.9_9999999999979394e+00,MARRIED,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.9_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -73001,7301,73,38,FEMALE,5.9_9999999999973177e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.9_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -74001,7401,74,39,MALE,5.9_9999999999986677e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.0_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -75001,7501,75,40,FEMALE,5.9_9999999999980460e+00,MARRIED,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.1_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -75002,7501,75,11,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -76001,7601,76,41,MALE,5.9_9999999999974420e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.1_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -77001,7701,77,42,FEMALE,5.9_9999999999987654e+00,SINGLE,1.1_4400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.2_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -78001,7801,78,43,MALE,5.9_9999999999981615e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.2_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -79001,7901,79,44,FEMALE,5.9_9999999999975664e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.3_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -80001,8001,80,45,MALE,5.9_9999999999988631e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.3_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -80002,8001,80,8,MALE,2.0_0000000000000000e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -81001,8101,81,46,FEMALE,5.9_9999999999982592e+00,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.4_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -82001,8201,82,47,MALE,5.9_9999999999976730e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.4_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -83001,8301,83,48,FEMALE,5.9_9999999999989519e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.5_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -84001,8401,84,49,MALE,5.9_9999999999983658e+00,MARRIED,1.5_0800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.5_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -85001,8501,85,50,FEMALE,5.9_9999999999977796e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.6_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -85002,8501,85,13,FEMALE,6.2_2727272727273107e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -86001,8601,86,51,MALE,5.9_9999999999990408e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.6_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -87001,8701,87,52,FEMALE,5.9_9999999999984635e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.7_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -88001,8801,88,53,MALE,5.9_9999999999979039e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.7_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -89001,8901,89,54,FEMALE,5.9_9999999999973355e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.8_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -90001,9001,90,55,MALE,5.9_9999999999985700e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.8_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default -90002,9001,90,10,MALE,7.6_7647058823529171e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -91001,9101,91,56,FEMALE,5.9_9999999999980105e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.9_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -92001,9201,92,57,MALE,5.9_9999999999974509e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.9_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -93001,9301,93,58,FEMALE,5.9_9999999999986589e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_0360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -94001,9401,94,59,MALE,5.9_9999999999980993e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_0880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -95001,9501,95,60,FEMALE,5.9_9999999999975575e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_1400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -95002,9501,95,15,FEMALE,8.3_5714285714286120e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -96001,9601,96,61,MALE,5.9_9999999999987477e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_1920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -97001,9701,97,62,FEMALE,5.9_9999999999982059e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_2440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -98001,9801,98,63,MALE,5.9_9999999999976552e+00,SINGLE,2.2_3600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.0_2960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -99001,9901,99,64,FEMALE,5.9_9999999999988365e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_3480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -100001,10001,100,65,MALE,5.9_9999999999982947e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_4000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -100002,10001,100,12,MALE,5.4_9999999999999734e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -101001,10101,101,66,FEMALE,5.9_9999999999977796e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_4520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -102001,10201,102,67,MALE,5.9_9999999999989164e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_5040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -103001,10301,103,68,FEMALE,5.9_9999999999984013e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_5560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -104001,10401,104,69,MALE,5.9_9999999999978506e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_6080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -105001,10501,105,70,FEMALE,5.9_9999999999990141e+00,MARRIED,1.3_0000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,1.0_6600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -105002,10501,105,9,FEMALE,2.4_8484848484848486e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -106001,10601,106,71,MALE,5.9_9999999999968203e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_7120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -107001,10701,107,72,FEMALE,5.9_9999999999962874e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_7640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -108001,10801,108,73,MALE,5.9_9999999999957989e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_8160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -109001,10901,109,74,FEMALE,5.9_9999999999953104e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_8680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -110001,11001,110,20,MALE,6.0_0000000000000799e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_9200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -110002,11001,110,14,MALE,2.4_7058823529412130e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -111001,11101,111,21,FEMALE,5.9_9999999999999467e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_9720000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -112001,11201,112,22,MALE,4.0_5095541401272818e+00,SINGLE,1.6_6400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_0240000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -113001,11301,113,23,FEMALE,7.9_5569620253166043e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_0760000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -114001,11401,114,24,MALE,4.0_3773584905660687e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_1280000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -115001,11501,115,25,FEMALE,7.9_6875000000006217e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_1800000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -115002,11501,115,11,FEMALE,2.4_5714285714285419e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -116001,11601,116,26,MALE,4.0_2484472049693398e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.1_2320000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -117001,11701,117,27,FEMALE,4.0_1851851851857766e+00,MARRIED,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_2840000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default -118001,11801,118,28,MALE,7.9_8773006134971375e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_3360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -119001,11901,119,29,FEMALE,4.0_0609756097560155e+00,SINGLE,2.0_2800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_3880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -120001,12001,120,30,MALE,7.9_9999999999998934e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_4400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -120002,12001,120,8,MALE,9.5_5555555555555713e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -121001,12101,121,31,FEMALE,8.0_0602409638551649e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.1_4920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -122001,12201,122,32,MALE,3.9_8802395209580407e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_5440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -123001,12301,123,33,FEMALE,3.9_8214285714287186e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_5960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default -124001,12401,124,34,MALE,8.0_2366863905323768e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_6480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -125001,12501,125,35,FEMALE,3.9_7058823529411775e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_7000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -125002,12501,125,13,FEMALE,9.9_5454545454545148e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -126001,12601,126,36,MALE,3.9_6491228070177248e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_7520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default -127001,12701,127,37,FEMALE,3.9_5930232558138151e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_8040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -128001,12801,128,38,MALE,3.9_5375722543343144e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_8560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -129001,12901,129,39,FEMALE,8.0_5172413793090058e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_9080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -130001,13001,130,40,MALE,3.9_4285714285708488e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_9600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default -130002,13001,130,10,MALE,2.0_2941176470588092e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default -131001,13101,131,41,FEMALE,8.0_6249999999993783e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.2_0120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default -132001,13201,132,42,MALE,8.0_6779661016936700e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.2_0640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -133001,13301,133,43,FEMALE,3.9_2696629213477744e+00,SINGLE,1.4_5600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.2_1160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -134001,13401,134,44,MALE,3.9_2178770949712296e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.2_1680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default -135001,13501,135,45,FEMALE,3.9_1666666666655283e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.2_2200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default -135002,13501,135,15,FEMALE,4.6_7142857142856904e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +person_id,person_benunit_id,person_household_id,age,gender,months_since_last_birthday,marital_status,hours_worked,care_hours,frs_care_hours_in_household,is_household_head,is_benunit_head,is_parent,is_blind,employment_income,self_employment_income,trading_loss,loss_relief,ni_class_4_losses_brought_forward,private_pension_income,annuity_and_trust_income,individual_savings_account_interest_income,savings_interest_income,dividend_income,other_investment_income,stands_as_sole_owner_or_partner_of_company,is_engaged_in_owned_company_trade,owned_company_is_main_employment,owned_company_carries_on_trade,owned_company_carries_on_property_business,owned_company_income_share,frs_bonus_amount,frs_company_car_price_band,frs_company_car_fuel_code,frs_company_car_private_fuel,frs_company_car_contribution,property_income,reports_rent_from_other_property,maintenance_income,spousal_maintenance_income,miscellaneous_income,private_transfer_income,lump_sum_income,student_loan_repayments,statutory_sick_pay,statutory_maternity_pay,statutory_paternity_pay,student_loans,access_fund,education_grants,healthy_start_vouchers,free_school_breakfasts,free_school_fruit_veg,free_school_meals,child_benefit_reported,income_support_reported,housing_benefit_reported,attendance_allowance_reported,dla_sc_reported,dla_m_reported,iidb_reported,carers_allowance_reported,sda_reported,afcs_reported,ssmg_reported,pension_credit_reported,child_tax_credit_reported,working_tax_credit_reported,state_pension_reported,winter_fuel_allowance_reported,incapacity_benefit_reported,universal_credit_reported,pip_m_reported,pip_dl_reported,jsa_contrib_reported,jsa_income_reported,esa_contrib_reported,esa_income_reported,esa_includes_support_component,bsp_reported,widowed_parents_allowance_reported,war_widows_pension_reported,would_claim_carers_allowance,council_tax_benefit_reported,maintenance_expenses,childcare_expenses,personal_pension_contributions,employee_pension_contributions,pension_contributions_via_salary_sacrifice,salary_sacrifice_reported,salary_sacrifice_asked,is_uc_claimant,rent_paid_as_boarder,rent_paid_as_lodger,is_claimant_or_partner,is_hbai_dependent_child,uc_is_in_startup_period,uc_is_in_gainful_self_employment,__stratum__ +1001,101,1,80,FEMALE,5.9_9999999999921663e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.2_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +2001,201,2,22,MALE,1.0_0509554140127424e+01,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.3_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +3001,301,3,23,FEMALE,1.9_5569620253164977e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.3_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +4001,401,4,24,MALE,1.0_0377358490566309e+01,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.4_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +5001,501,5,25,FEMALE,1.9_6875000000004219e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.4_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +5002,501,5,13,FEMALE,9.5_4545454545455918e-01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +6001,601,6,26,MALE,1.0_0248447204969420e+01,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.5_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +7001,701,7,27,FEMALE,1.0_0185185185185510e+01,SINGLE,1.4_0400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,5.5_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,8,2,True,1.5_0000000000000000e+03,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +8001,801,8,28,MALE,1.9_8773006134973951e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.6_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +9001,901,9,29,FEMALE,1.0_0060975609756149e+01,MARRIED,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.6_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +10001,1001,10,30,MALE,1.9_9999999999997891e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.7_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +10002,1001,10,10,MALE,5.0_2941176470588047e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +11001,1101,11,31,FEMALE,2.0_0602409638553958e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,5.7_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +12001,1201,12,32,MALE,9.9_8802395209581917e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.8_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +13001,1301,13,33,FEMALE,9.9_8214285714285587e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,5.8_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +14001,1401,14,34,MALE,2.0_2366863905325678e+00,SINGLE,1.7_6800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,5.9_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +15001,1501,15,35,FEMALE,9.9_7058823529413729e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,5.9_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +15002,1501,15,15,FEMALE,1.1_0142857142857142e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +16001,1601,16,36,MALE,9.9_6491228070176049e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.0_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +17001,1701,17,37,FEMALE,9.9_5930232558133888e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.0_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,10,6,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +18001,1801,18,38,MALE,9.9_5375722543345631e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.1_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default +19001,1901,19,39,FEMALE,2.0_5172413793092900e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.1_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +20001,2001,20,40,MALE,9.9_4285714285704536e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.2_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +20002,2001,20,12,MALE,1.4_9999999999999800e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +21001,2101,21,41,FEMALE,2.0_6249999999993028e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,6.2_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +22001,2201,22,42,MALE,2.0_6779661016939098e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.3_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +23001,2301,23,43,FEMALE,9.9_2696629213474324e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.3_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +24001,2401,24,44,MALE,9.9_2178770949715272e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.4_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +25001,2501,25,45,FEMALE,9.9_1666666666655239e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.5_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +25002,2501,25,9,FEMALE,6.4_8484848484848264e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +26001,2601,26,46,MALE,5.9_9999999999964206e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.5_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +27001,2701,27,47,FEMALE,5.9_9999999999982769e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.6_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +28001,2801,28,48,MALE,5.9_9999999999974420e+00,SINGLE,1.1_9600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,6.6_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +29001,2901,29,49,FEMALE,5.9_9999999999966072e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.7_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +30001,3001,30,50,MALE,5.9_9999999999984190e+00,MARRIED,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,6.7_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +30002,3001,30,14,MALE,1.0_4705882352941195e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +31001,3101,31,51,FEMALE,5.9_9999999999976019e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,6.8_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +32001,3201,32,52,MALE,5.9_9999999999967848e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.8_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +33001,3301,33,53,FEMALE,5.9_9999999999985523e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.9_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +34001,3401,34,54,MALE,5.9_9999999999977529e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,6.9_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +35001,3501,35,55,FEMALE,5.9_9999999999969624e+00,SINGLE,1.5_6000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,7.0_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +35002,3501,35,11,FEMALE,6.4_5714285714285818e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +36001,3601,36,56,MALE,5.9_9999999999986855e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.0_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +37001,3701,37,57,FEMALE,5.9_9999999999979039e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.1_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +38001,3801,38,58,MALE,5.9_9999999999971401e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.1_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +39001,3901,39,59,FEMALE,5.9_9999999999963762e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.2_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +40001,4001,40,60,MALE,5.9_9999999999980638e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.2_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +40002,4001,40,8,MALE,5.5_5555555555555536e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +41001,4101,41,61,FEMALE,5.9_9999999999972999e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.3_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +42001,4201,42,62,MALE,5.9_9999999999965539e+00,MARRIED,1.9_2400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,7.3_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +43001,4301,43,63,FEMALE,5.9_9999999999981970e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.4_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +44001,4401,44,64,MALE,5.9_9999999999974509e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.4_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +45001,4501,45,65,FEMALE,5.9_9999999999967137e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.5_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +45002,4501,45,13,FEMALE,3.2_2727272727272707e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +46001,4601,46,66,MALE,5.9_9999999999983213e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.5_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +47001,4701,47,67,FEMALE,5.9_9999999999975842e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.6_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +48001,4801,48,68,MALE,5.9_9999999999968736e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.6_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +49001,4901,49,69,FEMALE,5.9_9999999999984368e+00,SINGLE,2.2_8800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,7.7_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +50001,5001,50,70,MALE,5.9_9999999999954525e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,7.8_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +50002,5001,50,10,MALE,1.0_6764705882352917e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +51001,5101,51,71,FEMALE,5.9_9999999999947597e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,7.8_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +52001,5201,52,72,MALE,5.9_9999999999940758e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.9_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +53001,5301,53,73,FEMALE,5.9_9999999999934008e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,7.9_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +54001,5401,54,74,MALE,5.9_9999999999971578e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.0_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +55001,5501,55,20,FEMALE,5.9_9999999999997691e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.0_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +55002,5501,55,15,FEMALE,1.3_2857142857142363e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +56001,5601,56,21,MALE,6.0_0000000000001776e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,8.1_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +57001,5701,57,22,FEMALE,6.0_0000000000000355e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.1_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +58001,5801,58,23,MALE,5.9_9999999999998668e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.2_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +59001,5901,59,24,FEMALE,6.0_0000000000002487e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.2_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +60001,6001,60,25,MALE,6.0_0000000000006217e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.3_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +60002,6001,60,12,MALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +61001,6101,61,26,FEMALE,6.0_0000000000010125e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.3_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +62001,6201,62,27,MALE,6.0_0000000000013856e+00,SINGLE,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.4_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +63001,6301,63,28,FEMALE,6.0_0000000000007194e+00,MARRIED,1.7_1600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,8.4_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +64001,6401,64,29,MALE,6.0_0000000000000533e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.5_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +65001,6501,65,30,FEMALE,6.0_0000000000004263e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,8.5_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +65002,6501,65,9,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +66001,6601,66,31,MALE,5.9_9999999999997602e+00,MARRIED,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.6_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +67001,6701,67,32,FEMALE,6.0_0000000000001332e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.6_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +68001,6801,68,33,MALE,6.0_0000000000004796e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.7_3600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +69001,6901,69,34,FEMALE,5.9_9999999999998401e+00,MARRIED,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.7_8800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +70001,7001,70,35,MALE,6.0_0000000000001954e+00,SINGLE,2.0_8000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,8.8_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,5.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +70002,7001,70,14,MALE,6.9_4117647058824527e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +71001,7101,71,36,FEMALE,5.9_9999999999995648e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,8.8_9200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +72001,7201,72,37,MALE,5.9_9999999999979394e+00,MARRIED,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.9_4400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +73001,7301,73,38,FEMALE,5.9_9999999999973177e+00,SINGLE,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,8.9_9600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +74001,7401,74,39,MALE,5.9_9999999999986677e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.0_4800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +75001,7501,75,40,FEMALE,5.9_9999999999980460e+00,MARRIED,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.1_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.1_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +75002,7501,75,11,FEMALE,1.0_0000000000000000e+01,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +76001,7601,76,41,MALE,5.9_9999999999974420e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.1_5200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +77001,7701,77,42,FEMALE,5.9_9999999999987654e+00,SINGLE,1.1_4400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.2_0400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +78001,7801,78,43,MALE,5.9_9999999999981615e+00,MARRIED,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.2_5600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +79001,7901,79,44,FEMALE,5.9_9999999999975664e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.3_0800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +80001,8001,80,45,MALE,5.9_9999999999988631e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.3_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,8.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +80002,8001,80,8,MALE,2.0_0000000000000000e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +81001,8101,81,46,FEMALE,5.9_9999999999982592e+00,MARRIED,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.4_1200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +82001,8201,82,47,MALE,5.9_9999999999976730e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.4_6400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +83001,8301,83,48,FEMALE,5.9_9999999999989519e+00,SINGLE,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.5_1600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +84001,8401,84,49,MALE,5.9_9999999999983658e+00,MARRIED,1.5_0800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.5_6800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +85001,8501,85,50,FEMALE,5.9_9999999999977796e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.6_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,7.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +85002,8501,85,13,FEMALE,6.2_2727272727273107e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +86001,8601,86,51,MALE,5.9_9999999999990408e+00,SINGLE,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,9.6_7200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +87001,8701,87,52,FEMALE,5.9_9999999999984635e+00,MARRIED,1.6_6400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.7_2400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +88001,8801,88,53,MALE,5.9_9999999999979039e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.7_7600000000000000e+03,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +89001,8901,89,54,FEMALE,5.9_9999999999973355e+00,SINGLE,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.8_2800000000000000e+03,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +90001,9001,90,55,MALE,5.9_9999999999985700e+00,MARRIED,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,9.8_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.1_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,True,default +90002,9001,90,10,MALE,7.6_7647058823529171e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +91001,9101,91,56,FEMALE,5.9_9999999999980105e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,9.9_3200000000000000e+03,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +92001,9201,92,57,MALE,5.9_9999999999974509e+00,SINGLE,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,9.9_8400000000000000e+03,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +93001,9301,93,58,FEMALE,5.9_9999999999986589e+00,MARRIED,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_0360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +94001,9401,94,59,MALE,5.9_9999999999980993e+00,SINGLE,2.0_2800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_0880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +95001,9501,95,60,FEMALE,5.9_9999999999975575e+00,SINGLE,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_1400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.0_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +95002,9501,95,15,FEMALE,8.3_5714285714286120e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +96001,9601,96,61,MALE,5.9_9999999999987477e+00,MARRIED,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_1920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +97001,9701,97,62,FEMALE,5.9_9999999999982059e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_2440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +98001,9801,98,63,MALE,5.9_9999999999976552e+00,SINGLE,2.2_3600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.0_2960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +99001,9901,99,64,FEMALE,5.9_9999999999988365e+00,MARRIED,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_3480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +100001,10001,100,65,MALE,5.9_9999999999982947e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_4000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,7.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +100002,10001,100,12,MALE,5.4_9999999999999734e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +101001,10101,101,66,FEMALE,5.9_9999999999977796e+00,SINGLE,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_4520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +102001,10201,102,67,MALE,5.9_9999999999989164e+00,MARRIED,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_5040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +103001,10301,103,68,FEMALE,5.9_9999999999984013e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_5560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +104001,10401,104,69,MALE,5.9_9999999999978506e+00,SINGLE,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_6080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +105001,10501,105,70,FEMALE,5.9_9999999999990141e+00,MARRIED,1.3_0000000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,True,True,1.0_6600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,6.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +105002,10501,105,9,FEMALE,2.4_8484848484848486e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +106001,10601,106,71,MALE,5.9_9999999999968203e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_7120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +107001,10701,107,72,FEMALE,5.9_9999999999962874e+00,SINGLE,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_7640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +108001,10801,108,73,MALE,5.9_9999999999957989e+00,MARRIED,1.4_5600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_8160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +109001,10901,109,74,FEMALE,5.9_9999999999953104e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.0_8680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +110001,11001,110,20,MALE,6.0_0000000000000799e+00,SINGLE,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.0_9200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,1.0_0000000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +110002,11001,110,14,MALE,2.4_7058823529412130e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +111001,11101,111,21,FEMALE,5.9_9999999999999467e+00,MARRIED,1.6_1200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.0_9720000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +112001,11201,112,22,MALE,4.0_5095541401272818e+00,SINGLE,1.6_6400000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_0240000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +113001,11301,113,23,FEMALE,7.9_5569620253166043e+00,SINGLE,1.7_1600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_0760000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +114001,11401,114,24,MALE,4.0_3773584905660687e+00,MARRIED,1.7_6800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_1280000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +115001,11501,115,25,FEMALE,7.9_6875000000006217e+00,SINGLE,1.8_2000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_1800000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,9.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +115002,11501,115,11,FEMALE,2.4_5714285714285419e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +116001,11601,116,26,MALE,4.0_2484472049693398e+00,SINGLE,1.8_7200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.1_2320000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +117001,11701,117,27,FEMALE,4.0_1851851851857766e+00,MARRIED,1.9_2400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_2840000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,False,default +118001,11801,118,28,MALE,7.9_8773006134971375e+00,SINGLE,1.9_7600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_3360000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +119001,11901,119,29,FEMALE,4.0_0609756097560155e+00,SINGLE,2.0_2800000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_3880000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +120001,12001,120,30,MALE,7.9_9999999999998934e+00,MARRIED,2.0_8000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_4400000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,6.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +120002,12001,120,8,MALE,9.5_5555555555555713e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +121001,12101,121,31,FEMALE,8.0_0602409638551649e+00,SINGLE,2.1_3200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.1_4920000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.2_5880000000000018e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,True,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +122001,12201,122,32,MALE,3.9_8802395209580407e+00,SINGLE,2.1_8400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_5440000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +123001,12301,123,33,FEMALE,3.9_8214285714287186e+00,MARRIED,2.2_3600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_5960000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,True,True,default +124001,12401,124,34,MALE,8.0_2366863905323768e+00,SINGLE,2.2_8800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_6480000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +125001,12501,125,35,FEMALE,3.9_7058823529411775e+00,SINGLE,1.0_4000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_7000000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,1.2_5600000000000000e+03,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +125002,12501,125,13,FEMALE,9.9_5454545454545148e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +126001,12601,126,36,MALE,3.9_6491228070177248e+00,MARRIED,1.0_9200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.1_7520000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,True,False,default +127001,12701,127,37,FEMALE,3.9_5930232558138151e+00,SINGLE,1.1_4400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_8040000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +128001,12801,128,38,MALE,3.9_5375722543343144e+00,SINGLE,1.1_9600000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_8560000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +129001,12901,129,39,FEMALE,8.0_5172413793090058e+00,MARRIED,1.2_4800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.1_9080000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +130001,13001,130,40,MALE,3.9_4285714285708488e+00,SINGLE,1.3_0000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.1_9600000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,True,False,1.0_0000000000000000e+03,9.0_0000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,True,default +130002,13001,130,10,MALE,2.0_2941176470588092e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default +131001,13101,131,41,FEMALE,8.0_6249999999993783e+00,SINGLE,1.3_5200000000000000e+03,3.5_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,False,1.2_0120000000000000e+04,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,True,default +132001,13201,132,42,MALE,8.0_6779661016936700e+00,MARRIED,1.4_0400000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.2_0640000000000000e+04,1.0_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +133001,13301,133,43,FEMALE,3.9_2696629213477744e+00,SINGLE,1.4_5600000000000000e+03,2.0_0000000000000000e+01,0.0_0000000000000000e+00,True,True,False,True,1.2_1160000000000000e+04,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,5.2_0000000000000000e+01,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +134001,13401,134,44,MALE,3.9_2178770949712296e+00,SINGLE,1.5_0800000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,False,False,1.2_1680000000000000e+04,2.0_8000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,0.0_0000000000000000e+00,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,False,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,1.0_4000000000000000e+02,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,0.0_0000000000000000e+00,5.2_0000000000000000e+01,True,False,False,False,default +135001,13501,135,45,FEMALE,3.9_1666666666655283e+00,MARRIED,1.5_6000000000000000e+03,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,True,True,False,1.2_2200000000000000e+04,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,7.8_0000000000000000e+02,7.8_0000000000000000e+02,5.2_0000000000000000e+01,1.3_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,8.5_6000000000000000e+02,0,0,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,True,1.0_4000000000000000e+02,7.2_8000000000000000e+02,2.1_3200000000000000e+03,2.0_8000000000000000e+03,2.0_0000000000000000e+01,1.0_4000000000000000e+02,5.2_0000000000000000e+01,2.6_0000000000000000e+01,1.3_0000000000000000e+01,5.0_0000000000000000e+02,5.2_0000000000000000e+01,5.0_0000000000000000e+00,2.6_0000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,3.6_4000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,5.2_0000000000000000e+01,0.0_0000000000000000e+00,0.0_0000000000000000e+00,4.1_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,1.0_4000000000000000e+02,1.5_6000000000000000e+02,2.0_8000000000000000e+02,2.6_0000000000000000e+02,True,0.0_0000000000000000e+00,3.1_2000000000000000e+02,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,1.0_4000000000000000e+02,2.6_0000000000000000e+02,2.0_8000000000000000e+02,1.0_4000000000000000e+02,1.5_6000000000000000e+02,1.0_0000000000000000e+00,1.0_0000000000000000e+00,True,5.2_0000000000000000e+01,0.0_0000000000000000e+00,True,False,False,False,default +135002,13501,135,15,FEMALE,4.6_7142857142856904e+00,SINGLE,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,False,False,False,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0,0,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,2.0_8000000000000000e+02,1.0_4000000000000000e+02,5.2_0000000000000000e+01,1.5_6000000000000000e+02,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,True,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,0.0_0000000000000000e+00,0.0_0000000000000000e+00,False,True,False,False,default diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json index a5635a61a1..304aee05a0 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/sources/schema.json @@ -32,6 +32,7 @@ "access_fund": "float64", "afcs_reported": "float64", "age": "int64", + "annuity_and_trust_income": "float64", "attendance_allowance_reported": "float64", "bsp_reported": "float64", "care_hours": "float64", diff --git a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json index 2c8641c8d4..aa8f8946fa 100644 --- a/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json +++ b/packages/microcosm-graph/tests/fixtures/parity/uk_spine/uk_spine.json @@ -1 +1 @@ -{"country":"uk","nodes":[{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Load the source-bound UK FRS root population.","id":"create_uk_frs","inputs":[],"kernel":"uk.create@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_care_hours_in_household","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_price_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_fuel_code","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_private_fuel","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_contribution","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"sample_fraction":1.0,"sample_seed":578,"stage_contract_sha256":"b42cf05141094627d8e155d53101eced0b0c3ba018a729ae5ed55a504726801b","time_period":"2024"},"population":null,"sources":["frs"],"structural":"create","weights":null},{"base":"create_uk_frs","citation":"","description":"Ownership boundary for the source-assembling root stage.","id":"frs_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Claim the cells assembled by the UK FRS root transform.","id":"frs_spine","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_care_hours_in_household","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_price_band","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_fuel_code","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_private_fuel","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_contribution","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{},"population":"frs_spine.boundary","sources":[],"structural":"none","weights":null},{"base":"frs_spine.boundary","citation":"","description":"Ownership boundary before age_tail rewrites.","id":"age_tail.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage age_tail.","id":"age_tail","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["external_child_payments","region"],"entity":"household","rows":"all"},{"columns":["gender"],"entity":"person","rows":"all"}],"kernel":"uk.stage.age_tail@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"age_tail","stage_contract_sha256":"963a34f38caede2525e3b8735f904bb70a1bbef5a272f0eefd4346343444484f","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_relationships.","id":"frs_relationships","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_household_head"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_relationships@1","mass":"conserve","outputs":[{"column":"relationship_to_head","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_role","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_looked_after_by_local_authority","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_household_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_relationships","stage_contract_sha256":"85aca92dcc0590c2147cfc7e0886664f26cd8e1bc0b1de728d11fa567e9fd8b4","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_employment.","id":"frs_employment","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_employment@1","mass":"conserve","outputs":[{"column":"employment_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_sector","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"sic_industry_division","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_employment","stage_contract_sha256":"ddbefaf05b44788d794a6e4b0e8926c14318d66e50d2f11f50ca549538bbf60c","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_council_tax.","id":"frs_council_tax","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","sic_industry_division"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_council_tax@1","mass":"conserve","outputs":[{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_council_tax","stage_contract_sha256":"06804f54c12d25f2afcb31eec27789802f663cb42689a932dc32f3ba5fc05fff","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_disability.","id":"frs_disability","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax","region"],"entity":"household","rows":"all"},{"columns":["afcs_reported","age","attendance_allowance_reported","dla_m_reported","dla_sc_reported","esa_contrib_reported","esa_income_reported","iidb_reported","incapacity_benefit_reported","pip_dl_reported","pip_m_reported","sda_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_disability@1","mass":"conserve","outputs":[{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_disability","stage_contract_sha256":"ac500b4cb1bc04d4fb72d198592dd376d61da8c150921a6ac53914ac18be0508","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education.","id":"frs_education","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","esa_contrib_reported","esa_income_reported","is_severely_disabled_for_benefits","jsa_contrib_reported","jsa_income_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education@1","mass":"conserve","outputs":[{"column":"current_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"highest_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_non_advanced_education","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_approved_training","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_started_or_accepted_current_education_or_training","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_before_universal_credit_qualifying_young_person_terminal_date","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"adult_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_outstanding_student_loan","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_left_full_time_education","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education","stage_contract_sha256":"592ddc77703f19bb3e1d48b6aecffc98b4e2abd3379db84a06e011bde4fa5549","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_legacy_proxies.","id":"frs_legacy_proxies","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_legacy_proxies@1","mass":"conserve","outputs":[{"column":"legacy_jobseeker_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_health_condition_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_support_group_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_legacy_proxies","stage_contract_sha256":"1ecf761cf3fa7180da15659e138e67a8654e58272b4fde28344aa27a874ad0aa","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"age_tail.boundary","citation":"","description":"Ownership boundary before frs_education_grant_split rewrites.","id":"frs_education_grant_split.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education_grant_split.","id":"frs_education_grant_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education_grant_split@1","mass":"conserve","outputs":[{"column":"disabled_students_allowance_eligible_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education_grant_split","stage_contract_sha256":"8718f014b90498c2cc7c754289775ca4a41452d9b978d8cbc5f34b64cbdc7df2","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_take_up.","id":"frs_take_up","inputs":[{"columns":["frs_benunit_capital","is_married"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","child_benefit_reported","education_grants","is_uc_claimant","months_since_last_birthday","pension_credit_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_take_up","stage_contract_sha256":"78aec80408c50455b37308e5a977fb70df3ecf915d6c1e8f80715ad9b58e62cf","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_person_draws.","id":"frs_person_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employment_income","employment_status","max_free_entitlement_hours_used"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_person_draws@1","mass":"conserve","outputs":[{"column":"would_claim_marriage_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_scp","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"attends_private_school_random_draw","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_childcare_spend_routed_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_apprentice","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_person_draws","stage_contract_sha256":"112c502d702c640dedbc2dca7d1cfe5ae43e0f0e3ba6acfe49c738dbbfb7e693","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_household_draws.","id":"frs_household_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_household_draws@1","mass":"conserve","outputs":[{"column":"household_owns_tv","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"would_evade_tv_licence_fee","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residential_property_purchased_is_first_home","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"property_purchased","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_household_draws","stage_contract_sha256":"c74c63b09264319c4bf0049dabba00ecd0ce660beb7b53d6dae71518434bc949","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_brma.","id":"frs_brma","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_brma@1","mass":"conserve","outputs":[{"column":"brma","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_brma","stage_contract_sha256":"4285376b37299d375ed583b7f6b1747bd8b7cb1c8c0d19a36481156b5314a854","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"frs_education_grant_split.boundary","citation":"","description":"Freeze the assembled-spine gate population.","id":"frs_brma.checkpoint","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_hmrc_spine_leaves.","id":"frs_hmrc_spine_leaves","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["brma","region"],"entity":"household","rows":"all"},{"columns":["age","employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_hmrc_spine_leaves@1","mass":"conserve","outputs":[{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ossben_identifiable_subset","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"srp_regular_code5","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_hmrc_spine_leaves","stage_contract_sha256":"6b2e0264fbac47dae5e1fc4fa9e980c5c2caf7f12f165129649a559f3ad7a154","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_annual_income_spells.","id":"frs_annual_income_spells","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employer_pension_contributions","employment_income","gender","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_annual_income_spells@1","mass":"conserve","outputs":[{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_annual_income_spells","stage_contract_sha256":"2475738aee1e2bba3d93a759ee77b7b1a62e6a87feb07ac7b86c9150d2769009","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"frs_brma.checkpoint","citation":"","description":"Run structural UK stage spi_support_channel.","id":"spi_support_channel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_support_channel@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","source_household_id","int64"],["household","source_year","int64"],["household","source_household_key","string"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_support_channel","stage_contract_sha256":"2c682605139c0a8f96e8ba45a2c03f506d3f758ef437841066a8fdb8b74269b6","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_support_channel.","id":"spi_support_channel.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"source_household_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_household_key","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["person.person_source_id","person.person_support_channel","person.person_support_clone_index","benunit.benunit_source_id","benunit.benunit_support_channel","benunit.benunit_support_clone_index","household.source_household_id","household.source_year","household.source_household_key","household.household_source_id","household.household_support_channel","household.household_support_clone_index","household.household_is_spi_synthetic"]},"population":"spi_support_channel","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"spi_support_channel","citation":"","description":"Run structural UK stage spi_income_band_donors.","id":"spi_income_band_donors","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_income_band_donors@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"],["household","household_is_spi_income_band_donor","bool"],["household","spi_income_band_donor_lower_bound","float64"],["person","person_is_spi_income_band_carrier","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_income_band_donors","stage_contract_sha256":"4754ace499836c44b00c1c53a9ef5fd686d3a29108d0d546d7a11dcc37ee8807","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_income_band_donors.","id":"spi_income_band_donors.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_income_band_donor","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"spi_income_band_donor_lower_bound","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"person_is_spi_income_band_carrier","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_spi_income_band_donor","household.spi_income_band_donor_lower_bound","person.person_is_spi_income_band_carrier"]},"population":"spi_income_band_donors","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_spi_income_spine.","id":"hmrc_spi_income_spine","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","rent_paid_as_boarder","rent_paid_as_lodger","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","maintenance_expenses","childcare_expenses","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","ssmg_reported","incapacity_benefit_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","ossben_identifiable_subset","srp_regular_code5","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_spi_income_spine@1","mass":"conserve","outputs":[{"column":"charitable_investment_gifts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"gift_aid","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_employment_benefits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_social_security_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_taxable_termination_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_miscellaneous_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_state_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employed_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_earned_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_assessable_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_is_spi_income_recipient","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_spi_income_spine","stage_contract_sha256":"4cfa88bc1897159389224fd95f5f17af00a3fb4c95f1ae204e5e766f485d074b","time_period":"2024"},"population":"spi_income_band_donors","sources":["frs"],"structural":"none","weights":null},{"base":"spi_income_band_donors","citation":"","description":"Ownership boundary before company_cars rewrites.","id":"company_cars.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage company_cars.","id":"company_cars","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.stage.company_cars@1","mass":"conserve","outputs":[{"column":"company_car_list_price","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_co2_emissions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_fuel_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_electric_range","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_capital_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_private_fuel_provided","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"company_cars","stage_contract_sha256":"a4e0348ecb76f8550486df0682d4f2d6b7d2dee3038f5bbcf6bd0a347b7dfa6a","time_period":"2024"},"population":"company_cars.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"company_cars.boundary","citation":"","description":"Ownership boundary before spi_housing_shell rewrites.","id":"spi_housing_shell.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_housing_shell.","id":"spi_housing_shell","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax_single_adult_raw","household_support_channel","ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","individual_savings_account_interest_income","is_household_head","other_investment_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported","uc_is_in_gainful_self_employment"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_housing_shell@1","mass":"conserve","outputs":[{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_housing_shell","stage_contract_sha256":"524549b7dfbd0fceb505311eb0c3b923cfe3b11a8acd5ecfbfbcbb477e142eb1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_wealth.","id":"was_wealth","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_wealth@1","mass":"conserve","outputs":[{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"corporate_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"private_pension_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gross_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"net_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"savings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"num_vehicles","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cash_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"consumer_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"student_loan_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"directly_held_shares","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"unit_and_investment_trusts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_wealth","stage_contract_sha256":"e648f94320deffd15d4e7c2f51e044e8b3572b24bb62d65f157edcb8f31753b5","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_lisa.","id":"was_lisa","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_lisa@1","mass":"conserve","outputs":[{"column":"has_lifetime_isa","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_lifetime_isa_balance","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_lisa","stage_contract_sha256":"bf0389b9b72cd952ff1290dc190f2860497f6c68bb08dc2fa6f523bb33f59ab1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_housing_shell.boundary","citation":"","description":"Ownership boundary before regional_property_uprating rewrites.","id":"regional_property_uprating.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_property_uprating.","id":"regional_property_uprating","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_lifetime_isa_balance","household_support_channel","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_property_uprating@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_property_uprating","stage_contract_sha256":"f45db95fde3f93731c0925b9bf8c12021921df2e4908770acdec1e3c97889277","time_period":"2024"},"population":"regional_property_uprating.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"regional_property_uprating.boundary","citation":"","description":"Run structural UK stage high_value_home_support.","id":"high_value_home_support","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.high_value_home_support@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_high_value_support_copy","bool"],["household","high_value_support_copies","int64"],["household","high_value_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"high_value_home_support","stage_contract_sha256":"174f4b38228d98107bee1639d1a297a2748bb618e87c7bd0a6c869c6ab06f8fa","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by high_value_home_support.","id":"high_value_home_support.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_high_value_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_high_value_support_copy","household.high_value_support_copies","household.high_value_support_copy_index"]},"population":"high_value_home_support","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_home_values.","id":"regional_home_values","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["high_value_support_copy_index","household_is_high_value_support_copy","household_source_id","region","tenure_type"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_home_values@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"main_residence_value_rank_basis","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_home_values","stage_contract_sha256":"48e8a622c8830a54a4c48d9d8cb4f011751aa05d7cb5f6c7f0e06e1121b720b1","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_components.","id":"property_components","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["main_residence_value_rank_basis","non_residential_property_value","other_residential_property_value","region","subrent"],"entity":"household","rows":"all"},{"columns":["age","is_household_head","person_is_spi_income_recipient","person_support_channel"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_components@1","mass":"conserve","outputs":[{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_rental_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_components","stage_contract_sha256":"5022c27a480f057f8b8a4f87d9305ad00b1b9c724b225e37b02403b79b99f82e","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_purchases.","id":"property_purchases","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_purchases@1","mass":"conserve","outputs":[{"column":"additional_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_purchases","stage_contract_sha256":"7d0075d0020b21ceaf0e677d1a363737a2e29425e601269e9d5d9713dbc2fb45","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage nts_bus_travel.","id":"nts_bus_travel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.nts_bus_travel@1","mass":"conserve","outputs":[{"column":"local_bus_use_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_in_london_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_pass_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_single_fare_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_local_bus_trips","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"nts_bus_travel","stage_contract_sha256":"f96c01de0180936596838a5cfb586e398ac33e521b4e2e58f6ed10c0dfd2fea8","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage lcfs_consumption.","id":"lcfs_consumption","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.lcfs_consumption@1","mass":"conserve","outputs":[{"column":"food_and_non_alcoholic_beverages_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"alcohol_and_tobacco_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"clothing_and_footwear_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_water_and_electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_furnishings_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"health_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"transport_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"communication_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"recreation_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"education_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"restaurants_and_hotels_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"miscellaneous_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"petrol_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"diesel_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_fare_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_energy_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gas_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"liquid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"solid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"has_fuel_consumption","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"uses_energy_prepayment_meter","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"beer_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cider_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"wine_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"spirits_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_fermented_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"beer_draught_share","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cider_draught_share","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cigarettes_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"hand_rolling_tobacco_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cigars_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_tobacco_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_gaming_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"pool_betting_net_receipts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bingo_net_receipts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"national_lottery_ticket_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"land_based_casino_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_lower_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_standard_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_higher_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"land_based_fixed_odds_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_uk_horseracing_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_other_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"betting_exchange_commission","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"horse_and_dog_pool_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"lcfs_consumption","stage_contract_sha256":"5e250659703c5adff30913542045ec0a0a78993db0d097137cea9a69f912de99","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_vat.","id":"etb_vat","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_vat@1","mass":"conserve","outputs":[{"column":"full_rate_vat_expenditure_rate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_vat","stage_contract_sha256":"216b28835eba7a952243134dffbb45a1b3a0cdff2e3e7d0e94e2acbf754052b5","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_services.","id":"etb_services","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_services@1","mass":"conserve","outputs":[{"column":"dfe_education_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_usage","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"a_and_e_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"admitted_patient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"outpatient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_a_and_e_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_admitted_patient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_outpatient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_services","stage_contract_sha256":"2c5f860468ce64c1b7216e15d1f0f832d6dca5039b034af3e71470f4f682d21a","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"base":"high_value_home_support","citation":"","description":"Ownership boundary before uc_reporter_redraw rewrites.","id":"uc_reporter_redraw.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_reporter_redraw.","id":"uc_reporter_redraw","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_reporter_redraw@1","mass":"conserve","outputs":[{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_reporter_redraw","stage_contract_sha256":"b03d4947d6cb0404ba410c548e1850d5abe0c7dae2dc097d419b63eea04920a9","time_period":"2024"},"population":"uc_reporter_redraw.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_reporter_redraw.boundary","citation":"","description":"Ownership boundary before spi_benefit_coherence rewrites.","id":"spi_benefit_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_benefit_coherence.","id":"spi_benefit_coherence","inputs":[{"columns":["benunit_support_channel","frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["aa_category","age","attendance_allowance_reported","dla_m_category","dla_m_reported","dla_sc_category","dla_sc_reported","esa_contrib_reported","incapacity_benefit_reported","is_uc_claimant","person_source_id","person_support_channel","pip_dl_category","pip_dl_reported","pip_m_category","pip_m_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_benefit_coherence@1","mass":"conserve","outputs":[{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_benefit_coherence","stage_contract_sha256":"ad3bfd51b377963c1d976a82416283aeb7b80d9f89b44c0e5db79e3598e815d5","time_period":"2024"},"population":"spi_benefit_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_benefit_coherence.boundary","citation":"","description":"Ownership boundary before uc_capital_coherence rewrites.","id":"uc_capital_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_capital_coherence.","id":"uc_capital_coherence","inputs":[{"columns":["benunit_support_channel","dependent_children","is_married"],"entity":"benunit","rows":"all"},{"columns":["non_residential_property_secured_debt","non_residential_property_value","other_residential_property_secured_debt","other_residential_property_value","owned_land","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","individual_savings_account_interest_income","is_benunit_head","is_household_head","is_parent","other_investment_income","person_support_channel","savings_interest_income","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_capital_coherence@1","mass":"conserve","outputs":[{"column":"uc_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"pension_credit_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_capital_coherence","stage_contract_sha256":"67478de55540a138448d9da387a64e5e2afbb17caf17b244bc3baaa34de56022","time_period":"2024"},"population":"uc_capital_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_capital_coherence.boundary","citation":"","description":"Ownership boundary before uc_take_up rewrites.","id":"uc_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_take_up.","id":"uc_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_take_up","stage_contract_sha256":"2c15ce3414fe792957b99a0f77d2afa31f0140164ec3ff3db0f649e58dbd4cc2","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_legacy_closure_take_up.","id":"uc_legacy_closure_take_up","inputs":[{"columns":["frs_benunit_capital","would_claim_uc"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","region"],"entity":"household","rows":"all"},{"columns":["age","child_tax_credit_reported","esa_income_reported","housing_benefit_reported","income_support_reported","is_claimant_or_partner","jsa_income_reported","universal_credit_reported","working_tax_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_legacy_closure_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc_at_legacy_closure","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_legacy_closure_take_up","stage_contract_sha256":"bd7d87d11fb5271cd5a3e26a0268f2eaacb155fa87a9f4a8f00a6418b6da6b5c","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_take_up.boundary","citation":"","description":"Ownership boundary before pension_credit_take_up rewrites.","id":"pension_credit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage pension_credit_take_up.","id":"pension_credit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.pension_credit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"has_mixed_age_couple_pension_credit_saving","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"pension_credit_take_up","stage_contract_sha256":"e887dbbb186cb79f6d3fc9a629269dbac4a43381b9574df65353b816f01a3a35","time_period":"2024"},"population":"pension_credit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"pension_credit_take_up.boundary","citation":"","description":"Ownership boundary before child_benefit_take_up rewrites.","id":"child_benefit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage child_benefit_take_up.","id":"child_benefit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.child_benefit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"child_benefit_take_up","stage_contract_sha256":"c99071c19d0184440163f7ab49ee33cc19ad0ad4e2f6462ed50c36917b0da364","time_period":"2024"},"population":"child_benefit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"child_benefit_take_up.boundary","citation":"","description":"Ownership boundary before carers_allowance_take_up rewrites.","id":"carers_allowance_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage carers_allowance_take_up.","id":"carers_allowance_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.carers_allowance_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"carers_allowance_take_up","stage_contract_sha256":"dc1f00f90dd7e3f09d7da9601c85b45f3145e4c053d237e1892b280b24d0978f","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_deduction_attributes.","id":"uc_deduction_attributes","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","would_claim_carers_allowance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_deduction_attributes@1","mass":"conserve","outputs":[{"column":"uc_deduction_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_type_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_latent_deduction_rate","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_combination","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_deduction_attributes","stage_contract_sha256":"6bc7e3ec1a5712e23ca1b7d2956e8b17f2526b94431ba3e5a9294b04658e4fe0","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"carers_allowance_take_up.boundary","citation":"","description":"Run structural UK stage cgt_support_split.","id":"cgt_support_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_support_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_support_copy","bool"],["household","cgt_support_copies","int64"],["household","cgt_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_support_split","stage_contract_sha256":"88a0f5974de73dc778a782c9ce6e5f811e9d17e9eb86a30207bc9276134e53af","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_support_split.","id":"cgt_support_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_support_copy","household.cgt_support_copies","household.cgt_support_copy_index"]},"population":"cgt_support_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_support_split","citation":"","description":"Run structural UK stage cgt_incidence_clone.","id":"cgt_incidence_clone","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_clone@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_capital_gains_clone","bool"],["person","capital_gains","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_clone","stage_contract_sha256":"29198953c5522c9b996b981478909916870977a79e9f2feb2db7e9e72ef15de8","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_incidence_clone.","id":"cgt_incidence_clone.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_capital_gains_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_capital_gains_clone","person.capital_gains"]},"population":"cgt_incidence_clone","sources":[],"structural":"none","weights":null},{"base":"cgt_incidence_clone","citation":"","description":"Ownership boundary before hmrc_cgt_gains_spine rewrites.","id":"hmrc_cgt_gains_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_gains_spine.","id":"hmrc_cgt_gains_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cgt_support_copies","corporate_wealth","gross_financial_wealth","household_is_cgt_support_copy","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","individual_savings_account_interest_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_gains_spine@1","mass":"conserve","outputs":[{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_gains_spine","stage_contract_sha256":"b5d27d6b6307acec73a9336a00ef3e4cd900164787362e1157a49ffaa8af50ef","time_period":"2024"},"population":"hmrc_cgt_gains_spine.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"hmrc_cgt_gains_spine.boundary","citation":"","description":"Run structural UK stage cgt_incidence_anchor.","id":"cgt_incidence_anchor","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_is_capital_gains_clone","region"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","dividend_income","employment_income","individual_savings_account_interest_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_anchor@1","mass":"conserve","outputs":[],"params":{"expand_cells":[],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_anchor","stage_contract_sha256":"ed54c55428e56d7597c57c8459b014aa43b2ff9495b903f0b789bd5e4264ca9a","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_incidence_anchor","citation":"","description":"Run structural UK stage cgt_residential_split.","id":"cgt_residential_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_residential_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_residential_clone","bool"],["household","cgt_residential_clone_index","int64"],["person","cgt_residential_probability","float64"],["person","capital_gains_residential_property","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_residential_split","stage_contract_sha256":"57d73fd1e8673d747fed04bb73b3eb1a8b215f73b7d24dd5b191b10ecf1e505f","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_residential_split.","id":"cgt_residential_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_residential_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_probability","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_residential_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_residential_clone","household.cgt_residential_clone_index","person.cgt_residential_probability","person.capital_gains_residential_property"]},"population":"cgt_residential_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_asset_type_spine.","id":"hmrc_cgt_asset_type_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["corporate_wealth","gross_financial_wealth","other_residential_property_value","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","capital_gains_residential_property","dividend_income","property_income","reports_rent_from_other_property","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_asset_type_spine@1","mass":"conserve","outputs":[{"column":"capital_gains_asset_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_badr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_asset_type_spine","stage_contract_sha256":"722e19b00e13d98ce9fde4069ef6ebf3e30ed9143871bec788992a36b94b5e85","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage salary_sacrifice.","id":"salary_sacrifice","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr"],"entity":"person","rows":"all"}],"kernel":"uk.stage.salary_sacrifice@1","mass":"conserve","outputs":[{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_bonus_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_pre_conversion_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"salary_sacrifice","stage_contract_sha256":"d653f391e521528a66aae725488c307945ed870203e3070c89766ecaae392624","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage student_loans.","id":"student_loans","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","age_left_full_time_education","current_education","highest_education","reports_outstanding_student_loan","salary_sacrifice_pre_conversion_pay","student_loan_repayments","student_loans"],"entity":"person","rows":"all"}],"kernel":"uk.stage.student_loans@1","mass":"conserve","outputs":[{"column":"student_loan_plan","dtype":"string","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"student_loans","stage_contract_sha256":"157d9ee607633e4246ed06eeee3aac3cdff98118e72400e18b84c11b3fd2b92b","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"base":"cgt_residential_split","citation":"","description":"Ownership boundary before childcare_copy_take_up rewrites.","id":"childcare_copy_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage childcare_copy_take_up.","id":"childcare_copy_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_uc_childcare","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.childcare_copy_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"childcare_copy_take_up","stage_contract_sha256":"cdbb7e135b16fac7ca1bcd6c54222821e2976b4da99f10a60913efd0ba03c13c","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage private_school_attendance.","id":"private_school_attendance","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.private_school_attendance@1","mass":"conserve","outputs":[{"column":"attends_private_school","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"private_school_attendance","stage_contract_sha256":"7e44379c0331fe4c9de05cd76a075c1a6aa22cf0dec6cd2f91b277e70f14a038","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage isa_subscriptions.","id":"isa_subscriptions","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cash_isa","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","attends_private_school","dividend_income","employment_income","gender","has_lifetime_isa","individual_savings_account_interest_income","lifetime_isa_balance","loss_relief","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.isa_subscriptions@1","mass":"conserve","outputs":[{"column":"cash_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"cash_isa_subscriptions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa_subscriptions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_payments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"isa_subscriptions","stage_contract_sha256":"9fc3e3ecf333df38206c9627470ca0c1a9d8abbea7534f6367e01868fdc3081f","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Content-bound UK FRS and donor fixture/source bundle.","name":"frs"}]} +{"country":"uk","nodes":[{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Load the source-bound UK FRS root population.","id":"create_uk_frs","inputs":[],"kernel":"uk.create@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_care_hours_in_household","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"annuity_and_trust_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_price_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_fuel_code","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_private_fuel","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_company_car_contribution","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"sample_fraction":1.0,"sample_seed":578,"stage_contract_sha256":"879fdd6e1e5832b94af4259b1028f852470bbe2c3ab19b61ce5f92a2e9c12ec4","time_period":"2024"},"population":null,"sources":["frs"],"structural":"create","weights":null},{"base":"create_uk_frs","citation":"","description":"Ownership boundary for the source-assembling root stage.","id":"frs_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"base":null,"citation":"","description":"Claim the cells assembled by the UK FRS root transform.","id":"frs_spine","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"gender","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"months_since_last_birthday","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"marital_status","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hours_worked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"care_hours","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_care_hours_in_household","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_household_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_benunit_head","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_parent","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_blind","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_uc_claimant","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_claimant_or_partner","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_hbai_dependent_child","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_boarder","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent_paid_as_lodger","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"annuity_and_trust_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"spousal_maintenance_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"miscellaneous_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_transfer_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"lump_sum_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loan_repayments","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_sick_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_maternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"statutory_paternity_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"student_loans","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"access_fund","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"healthy_start_vouchers","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_breakfasts","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_fruit_veg","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"free_school_meals","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maintenance_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"childcare_expenses","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_asked","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_bonus_amount","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_price_band","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_fuel_code","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_private_fuel","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_company_car_contribution","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"incapacity_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_married","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dependent_children","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"liable_for_share_of_household_rent","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"region","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_single_adult_raw","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"external_child_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{},"population":"frs_spine.boundary","sources":[],"structural":"none","weights":null},{"base":"frs_spine.boundary","citation":"","description":"Ownership boundary before age_tail rewrites.","id":"age_tail.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage age_tail.","id":"age_tail","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["external_child_payments","region"],"entity":"household","rows":"all"},{"columns":["gender"],"entity":"person","rows":"all"}],"kernel":"uk.stage.age_tail@1","mass":"conserve","outputs":[{"column":"age","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"age_tail","stage_contract_sha256":"963a34f38caede2525e3b8735f904bb70a1bbef5a272f0eefd4346343444484f","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_relationships.","id":"frs_relationships","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_household_head"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_relationships@1","mass":"conserve","outputs":[{"column":"relationship_to_head","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_role","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_family_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_looked_after_by_local_authority","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"ons_household_type","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_relationships","stage_contract_sha256":"85aca92dcc0590c2147cfc7e0886664f26cd8e1bc0b1de728d11fa567e9fd8b4","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_employment.","id":"frs_employment","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_employment@1","mass":"conserve","outputs":[{"column":"employment_status","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_sector","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"sic_industry_division","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_employment","stage_contract_sha256":"ddbefaf05b44788d794a6e4b0e8926c14318d66e50d2f11f50ca549538bbf60c","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_council_tax.","id":"frs_council_tax","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","sic_industry_division"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_council_tax@1","mass":"conserve","outputs":[{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_council_tax","stage_contract_sha256":"06804f54c12d25f2afcb31eec27789802f663cb42689a932dc32f3ba5fc05fff","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_disability.","id":"frs_disability","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax","region"],"entity":"household","rows":"all"},{"columns":["afcs_reported","age","attendance_allowance_reported","dla_m_reported","dla_sc_reported","esa_contrib_reported","esa_income_reported","iidb_reported","incapacity_benefit_reported","pip_dl_reported","pip_m_reported","sda_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_disability@1","mass":"conserve","outputs":[{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_disability","stage_contract_sha256":"ac500b4cb1bc04d4fb72d198592dd376d61da8c150921a6ac53914ac18be0508","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education.","id":"frs_education","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","esa_contrib_reported","esa_income_reported","is_severely_disabled_for_benefits","jsa_contrib_reported","jsa_income_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education@1","mass":"conserve","outputs":[{"column":"current_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"highest_education","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_non_advanced_education","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"is_in_approved_training","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_started_or_accepted_current_education_or_training","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_before_universal_credit_qualifying_young_person_terminal_date","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"adult_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"child_ema","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"reports_outstanding_student_loan","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"age_left_full_time_education","dtype":"int64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education","stage_contract_sha256":"592ddc77703f19bb3e1d48b6aecffc98b4e2abd3379db84a06e011bde4fa5549","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_legacy_proxies.","id":"frs_legacy_proxies","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_legacy_proxies@1","mass":"conserve","outputs":[{"column":"legacy_jobseeker_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_health_condition_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"esa_support_group_proxy","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_legacy_proxies","stage_contract_sha256":"1ecf761cf3fa7180da15659e138e67a8654e58272b4fde28344aa27a874ad0aa","time_period":"2024"},"population":"age_tail.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"age_tail.boundary","citation":"","description":"Ownership boundary before frs_education_grant_split rewrites.","id":"frs_education_grant_split.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_education_grant_split.","id":"frs_education_grant_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_education_grant_split@1","mass":"conserve","outputs":[{"column":"disabled_students_allowance_eligible_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"education_grants","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_education_grant_split","stage_contract_sha256":"8718f014b90498c2cc7c754289775ca4a41452d9b978d8cbc5f34b64cbdc7df2","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_take_up.","id":"frs_take_up","inputs":[{"columns":["frs_benunit_capital","is_married"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","child_benefit_reported","education_grants","is_uc_claimant","months_since_last_birthday","pension_credit_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"would_claim_uc_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_take_up","stage_contract_sha256":"78aec80408c50455b37308e5a977fb70df3ecf915d6c1e8f80715ad9b58e62cf","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_person_draws.","id":"frs_person_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employment_income","employment_status","max_free_entitlement_hours_used"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_person_draws@1","mass":"conserve","outputs":[{"column":"would_claim_marriage_allowance","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"would_claim_scp","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"attends_private_school_random_draw","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"tax_free_childcare_spend_routed_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"is_apprentice","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_person_draws","stage_contract_sha256":"112c502d702c640dedbc2dca7d1cfe5ae43e0f0e3ba6acfe49c738dbbfb7e693","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_household_draws.","id":"frs_household_draws","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_household_draws@1","mass":"conserve","outputs":[{"column":"household_owns_tv","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"would_evade_tv_licence_fee","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residential_property_purchased_is_first_home","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"property_purchased","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_household_draws","stage_contract_sha256":"c74c63b09264319c4bf0049dabba00ecd0ce660beb7b53d6dae71518434bc949","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_brma.","id":"frs_brma","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_brma@1","mass":"conserve","outputs":[{"column":"brma","dtype":"string","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_brma","stage_contract_sha256":"4285376b37299d375ed583b7f6b1747bd8b7cb1c8c0d19a36481156b5314a854","time_period":"2024"},"population":"frs_education_grant_split.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"frs_education_grant_split.boundary","citation":"","description":"Freeze the assembled-spine gate population.","id":"frs_brma.checkpoint","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_hmrc_spine_leaves.","id":"frs_hmrc_spine_leaves","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["brma","region"],"entity":"household","rows":"all"},{"columns":["age","employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_hmrc_spine_leaves@1","mass":"conserve","outputs":[{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"ossben_identifiable_subset","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"srp_regular_code5","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_hmrc_spine_leaves","stage_contract_sha256":"6b2e0264fbac47dae5e1fc4fa9e980c5c2caf7f12f165129649a559f3ad7a154","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage frs_annual_income_spells.","id":"frs_annual_income_spells","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","employer_pension_contributions","employment_income","gender","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.frs_annual_income_spells@1","mass":"conserve","outputs":[{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"frs_annual_income_spells","stage_contract_sha256":"2475738aee1e2bba3d93a759ee77b7b1a62e6a87feb07ac7b86c9150d2769009","time_period":"2024"},"population":"frs_brma.checkpoint","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"frs_brma.checkpoint","citation":"","description":"Run structural UK stage spi_support_channel.","id":"spi_support_channel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_support_channel@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","source_household_id","int64"],["household","source_year","int64"],["household","source_household_key","string"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_support_channel","stage_contract_sha256":"2c682605139c0a8f96e8ba45a2c03f506d3f758ef437841066a8fdb8b74269b6","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_support_channel.","id":"spi_support_channel.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"source_household_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_year","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"source_household_key","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["person.person_source_id","person.person_support_channel","person.person_support_clone_index","benunit.benunit_source_id","benunit.benunit_support_channel","benunit.benunit_support_clone_index","household.source_household_id","household.source_year","household.source_household_key","household.household_source_id","household.household_support_channel","household.household_support_clone_index","household.household_is_spi_synthetic"]},"population":"spi_support_channel","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"spi_support_channel","citation":"","description":"Run structural UK stage spi_income_band_donors.","id":"spi_income_band_donors","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.spi_income_band_donors@1","mass":"declared","outputs":[],"params":{"expand_cells":[["person","person_source_id","int64"],["person","person_support_channel","string"],["person","person_support_clone_index","int64"],["benunit","benunit_source_id","int64"],["benunit","benunit_support_channel","string"],["benunit","benunit_support_clone_index","int64"],["household","household_source_id","int64"],["household","household_support_channel","string"],["household","household_support_clone_index","int64"],["household","household_is_spi_synthetic","bool"],["household","household_is_spi_income_band_donor","bool"],["household","spi_income_band_donor_lower_bound","float64"],["person","person_is_spi_income_band_carrier","bool"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_income_band_donors","stage_contract_sha256":"4754ace499836c44b00c1c53a9ef5fd686d3a29108d0d546d7a11dcc37ee8807","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by spi_income_band_donors.","id":"spi_income_band_donors.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"person_source_id","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_channel","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_support_clone_index","dtype":"int64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_source_id","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_channel","dtype":"string","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"benunit_support_clone_index","dtype":"int64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_source_id","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_channel","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_support_clone_index","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_synthetic","dtype":"bool","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"household_is_spi_income_band_donor","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"spi_income_band_donor_lower_bound","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"person_is_spi_income_band_carrier","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_spi_income_band_donor","household.spi_income_band_donor_lower_bound","person.person_is_spi_income_band_carrier"]},"population":"spi_income_band_donors","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_spi_income_spine.","id":"hmrc_spi_income_spine","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","rent_paid_as_boarder","rent_paid_as_lodger","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","maintenance_expenses","childcare_expenses","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","ssmg_reported","incapacity_benefit_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","ossben_identifiable_subset","srp_regular_code5","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_spi_income_spine@1","mass":"conserve","outputs":[{"column":"charitable_investment_gifts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"gift_aid","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_investment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_employment_benefits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employment_expenses","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_social_security_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_taxable_termination_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_miscellaneous_employment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_other_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_state_pension_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_employed_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_earned_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_total_investment_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"hmrc_spi_assessable_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"savings_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dividend_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employer_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"personal_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"individual_savings_account_interest_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"attendance_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"state_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"carers_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"winter_fuel_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"trading_loss","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"loss_relief","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ni_class_4_losses_brought_forward","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_income_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_pay","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_unemployment_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"hmrc_spi_incapacity_benefit_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"self_employment_income_other_spells","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"private_pension_income_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"contributory_benefits_annual_share","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"annuity_and_trust_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"aa_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_sc_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"dla_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_m_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pip_dl_category","dtype":"string","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_startup_period","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_includes_support_component","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"reports_rent_from_other_property","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"stands_as_sole_owner_or_partner_of_company","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_engaged_in_owned_company_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_is_main_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_trade","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_company_carries_on_property_business","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"person_is_spi_income_recipient","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_spi_income_spine","stage_contract_sha256":"6e31b31f246f166e5812d581ea7b98906c6b5efaa1b76ba2d06adf2e437da18f","time_period":"2024"},"population":"spi_income_band_donors","sources":["frs"],"structural":"none","weights":null},{"base":"spi_income_band_donors","citation":"","description":"Ownership boundary before company_cars rewrites.","id":"company_cars.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage company_cars.","id":"company_cars","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient"],"entity":"person","rows":"all"}],"kernel":"uk.stage.company_cars@1","mass":"conserve","outputs":[{"column":"company_car_list_price","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_co2_emissions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_fuel_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_electric_range","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_capital_contributions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"company_car_private_fuel_provided","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"uc_is_in_gainful_self_employment","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"company_cars","stage_contract_sha256":"a4e0348ecb76f8550486df0682d4f2d6b7d2dee3038f5bbcf6bd0a347b7dfa6a","time_period":"2024"},"population":"company_cars.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"company_cars.boundary","citation":"","description":"Ownership boundary before spi_housing_shell rewrites.","id":"spi_housing_shell.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_housing_shell.","id":"spi_housing_shell","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["council_tax_single_adult_raw","household_support_channel","ons_household_type","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","individual_savings_account_interest_income","is_household_head","other_investment_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported","uc_is_in_gainful_self_employment"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_housing_shell@1","mass":"conserve","outputs":[{"column":"tenure_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"accommodation_type","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_band","dtype":"string","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"num_bedrooms","dtype":"int64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_reported","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"rent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_interest_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"mortgage_capital_repayment","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"structural_insurance_payments","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_service_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"water_and_sewerage_charges","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"domestic_rates","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"subrent","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_rebate","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"housing_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"council_tax_benefit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_housing_shell","stage_contract_sha256":"524549b7dfbd0fceb505311eb0c3b923cfe3b11a8acd5ecfbfbcbb477e142eb1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_wealth.","id":"was_wealth","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_wealth@1","mass":"conserve","outputs":[{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"corporate_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"private_pension_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gross_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"net_financial_wealth","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"savings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"num_vehicles","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cash_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"mortgage_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"consumer_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"student_loan_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"directly_held_shares","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"unit_and_investment_trusts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_secured_debt","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_wealth","stage_contract_sha256":"e648f94320deffd15d4e7c2f51e044e8b3572b24bb62d65f157edcb8f31753b5","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage was_lisa.","id":"was_lisa","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.was_lisa@1","mass":"conserve","outputs":[{"column":"has_lifetime_isa","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_lifetime_isa_balance","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"was_lisa","stage_contract_sha256":"bf0389b9b72cd952ff1290dc190f2860497f6c68bb08dc2fa6f523bb33f59ab1","time_period":"2024"},"population":"spi_housing_shell.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_housing_shell.boundary","citation":"","description":"Ownership boundary before regional_property_uprating rewrites.","id":"regional_property_uprating.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_property_uprating.","id":"regional_property_uprating","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_lifetime_isa_balance","household_support_channel","region"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_property_uprating@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"owned_land","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"other_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"non_residential_property_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_property_uprating","stage_contract_sha256":"f45db95fde3f93731c0925b9bf8c12021921df2e4908770acdec1e3c97889277","time_period":"2024"},"population":"regional_property_uprating.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"regional_property_uprating.boundary","citation":"","description":"Run structural UK stage high_value_home_support.","id":"high_value_home_support","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.high_value_home_support@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_high_value_support_copy","bool"],["household","high_value_support_copies","int64"],["household","high_value_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"high_value_home_support","stage_contract_sha256":"174f4b38228d98107bee1639d1a297a2748bb618e87c7bd0a6c869c6ab06f8fa","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by high_value_home_support.","id":"high_value_home_support.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_high_value_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"high_value_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_high_value_support_copy","household.high_value_support_copies","household.high_value_support_copy_index"]},"population":"high_value_home_support","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage regional_home_values.","id":"regional_home_values","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["high_value_support_copy_index","household_is_high_value_support_copy","household_source_id","region","tenure_type"],"entity":"household","rows":"all"},{"columns":["age"],"entity":"person","rows":"all"}],"kernel":"uk.stage.regional_home_values@1","mass":"conserve","outputs":[{"column":"main_residence_value","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_wealth","dtype":"float64","entity":"household","ownership":"produced","rewrite":true,"rows":"all"},{"column":"main_residence_value_rank_basis","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"regional_home_values","stage_contract_sha256":"48e8a622c8830a54a4c48d9d8cb4f011751aa05d7cb5f6c7f0e06e1121b720b1","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_components.","id":"property_components","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["main_residence_value_rank_basis","non_residential_property_value","other_residential_property_value","region","subrent"],"entity":"household","rows":"all"},{"columns":["age","is_household_head","person_is_spi_income_recipient","person_support_channel"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_components@1","mass":"conserve","outputs":[{"column":"property_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_finance_costs","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"property_rental_income","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_components","stage_contract_sha256":"5022c27a480f057f8b8a4f87d9305ad00b1b9c724b225e37b02403b79b99f82e","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage property_purchases.","id":"property_purchases","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.property_purchases@1","mass":"conserve","outputs":[{"column":"additional_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"non_residential_property_purchased","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"property_purchases","stage_contract_sha256":"7d0075d0020b21ceaf0e677d1a363737a2e29425e601269e9d5d9713dbc2fb45","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage nts_bus_travel.","id":"nts_bus_travel","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.nts_bus_travel@1","mass":"conserve","outputs":[{"column":"local_bus_use_band","dtype":"int64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_in_london_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"other_local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_trips","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"bus_pass_eligible","dtype":"bool","entity":"person","ownership":"produced","rows":"all"},{"column":"local_bus_single_fare_share","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"household_local_bus_trips","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"nts_bus_travel","stage_contract_sha256":"f96c01de0180936596838a5cfb586e398ac33e521b4e2e58f6ed10c0dfd2fea8","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage lcfs_consumption.","id":"lcfs_consumption","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.lcfs_consumption@1","mass":"conserve","outputs":[{"column":"food_and_non_alcoholic_beverages_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"alcohol_and_tobacco_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"clothing_and_footwear_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"housing_water_and_electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"household_furnishings_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"health_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"transport_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"communication_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"recreation_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"education_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"restaurants_and_hotels_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"miscellaneous_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"petrol_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"diesel_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_fare_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"domestic_energy_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"electricity_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"gas_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"liquid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"solid_fuel_consumption","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"has_fuel_consumption","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"uses_energy_prepayment_meter","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"beer_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cider_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"wine_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"spirits_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_fermented_litres","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"beer_draught_share","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cider_draught_share","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cigarettes_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"hand_rolling_tobacco_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"cigars_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"other_tobacco_grams_per_week","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_gaming_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"pool_betting_net_receipts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bingo_net_receipts","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"national_lottery_ticket_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"land_based_casino_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_lower_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_standard_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"machine_games_higher_rate_net_takings","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"land_based_fixed_odds_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_uk_horseracing_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"remote_other_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"betting_exchange_commission","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"horse_and_dog_pool_betting_net_losses","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"lcfs_consumption","stage_contract_sha256":"5e250659703c5adff30913542045ec0a0a78993db0d097137cea9a69f912de99","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_vat.","id":"etb_vat","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_vat@1","mass":"conserve","outputs":[{"column":"full_rate_vat_expenditure_rate","dtype":"float64","entity":"household","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_vat","stage_contract_sha256":"216b28835eba7a952243134dffbb45a1b3a0cdff2e3e7d0e94e2acbf754052b5","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage etb_services.","id":"etb_services","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share"],"entity":"person","rows":"all"}],"kernel":"uk.stage.etb_services@1","mass":"conserve","outputs":[{"column":"dfe_education_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"bus_subsidy_spending","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"rail_usage","dtype":"float64","entity":"household","ownership":"produced","rows":"all"},{"column":"a_and_e_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"admitted_patient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"outpatient_visits","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_a_and_e_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_admitted_patient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"nhs_outpatient_spending","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"etb_services","stage_contract_sha256":"2c5f860468ce64c1b7216e15d1f0f832d6dca5039b034af3e71470f4f682d21a","time_period":"2024"},"population":"high_value_home_support","sources":["frs"],"structural":"none","weights":null},{"base":"high_value_home_support","citation":"","description":"Ownership boundary before uc_reporter_redraw rewrites.","id":"uc_reporter_redraw.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_reporter_redraw.","id":"uc_reporter_redraw","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_reporter_redraw@1","mass":"conserve","outputs":[{"column":"universal_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_reporter_redraw","stage_contract_sha256":"b03d4947d6cb0404ba410c548e1850d5abe0c7dae2dc097d419b63eea04920a9","time_period":"2024"},"population":"uc_reporter_redraw.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_reporter_redraw.boundary","citation":"","description":"Ownership boundary before spi_benefit_coherence rewrites.","id":"spi_benefit_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage spi_benefit_coherence.","id":"spi_benefit_coherence","inputs":[{"columns":["benunit_support_channel","frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["aa_category","age","attendance_allowance_reported","dla_m_category","dla_m_reported","dla_sc_category","dla_sc_reported","esa_contrib_reported","incapacity_benefit_reported","is_uc_claimant","person_source_id","person_support_channel","pip_dl_category","pip_dl_reported","pip_m_category","pip_m_reported","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.spi_benefit_coherence@1","mass":"conserve","outputs":[{"column":"jsa_contrib_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"jsa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"esa_income_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"income_support_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"working_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_tax_credit_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"sda_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"ssmg_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"iidb_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"afcs_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"bsp_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"war_widows_pension_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"widowed_parents_allowance_reported","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_enhanced_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"is_severely_disabled_for_benefits","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"receives_benefits_in_own_right","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"spi_benefit_coherence","stage_contract_sha256":"ad3bfd51b377963c1d976a82416283aeb7b80d9f89b44c0e5db79e3598e815d5","time_period":"2024"},"population":"spi_benefit_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"spi_benefit_coherence.boundary","citation":"","description":"Ownership boundary before uc_capital_coherence rewrites.","id":"uc_capital_coherence.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_capital_coherence.","id":"uc_capital_coherence","inputs":[{"columns":["benunit_support_channel","dependent_children","is_married"],"entity":"benunit","rows":"all"},{"columns":["non_residential_property_secured_debt","non_residential_property_value","other_residential_property_secured_debt","other_residential_property_value","owned_land","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","individual_savings_account_interest_income","is_benunit_head","is_household_head","is_parent","other_investment_income","person_support_channel","savings_interest_income","universal_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_capital_coherence@1","mass":"conserve","outputs":[{"column":"uc_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"pension_credit_reported_capital","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"frs_benunit_capital","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_capital_coherence","stage_contract_sha256":"67478de55540a138448d9da387a64e5e2afbb17caf17b244bc3baaa34de56022","time_period":"2024"},"population":"uc_capital_coherence.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_capital_coherence.boundary","citation":"","description":"Ownership boundary before uc_take_up rewrites.","id":"uc_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_take_up.","id":"uc_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_take_up","stage_contract_sha256":"1f5bb5a59426d5a1f0a8ba40180b744725be29dea741a4e93924f4f55e9a7e11","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_legacy_closure_take_up.","id":"uc_legacy_closure_take_up","inputs":[{"columns":["frs_benunit_capital","would_claim_uc"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","region"],"entity":"household","rows":"all"},{"columns":["age","child_tax_credit_reported","esa_income_reported","housing_benefit_reported","income_support_reported","is_claimant_or_partner","jsa_income_reported","universal_credit_reported","working_tax_credit_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_legacy_closure_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_uc_at_legacy_closure","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_legacy_closure_take_up","stage_contract_sha256":"bd7d87d11fb5271cd5a3e26a0268f2eaacb155fa87a9f4a8f00a6418b6da6b5c","time_period":"2024"},"population":"uc_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"uc_take_up.boundary","citation":"","description":"Ownership boundary before pension_credit_take_up rewrites.","id":"pension_credit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage pension_credit_take_up.","id":"pension_credit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.pension_credit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_pc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"has_mixed_age_couple_pension_credit_saving","dtype":"bool","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"pension_credit_take_up","stage_contract_sha256":"e887dbbb186cb79f6d3fc9a629269dbac4a43381b9574df65353b816f01a3a35","time_period":"2024"},"population":"pension_credit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"pension_credit_take_up.boundary","citation":"","description":"Ownership boundary before child_benefit_take_up rewrites.","id":"child_benefit_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage child_benefit_take_up.","id":"child_benefit_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.child_benefit_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_child_benefit","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"child_benefit_opts_out","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"child_benefit_take_up","stage_contract_sha256":"c99071c19d0184440163f7ab49ee33cc19ad0ad4e2f6462ed50c36917b0da364","time_period":"2024"},"population":"child_benefit_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"base":"child_benefit_take_up.boundary","citation":"","description":"Ownership boundary before carers_allowance_take_up rewrites.","id":"carers_allowance_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage carers_allowance_take_up.","id":"carers_allowance_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.carers_allowance_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_carers_allowance","dtype":"bool","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"carers_allowance_take_up","stage_contract_sha256":"dc1f00f90dd7e3f09d7da9601c85b45f3145e4c053d237e1892b280b24d0978f","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage uc_deduction_attributes.","id":"uc_deduction_attributes","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","would_claim_carers_allowance"],"entity":"person","rows":"all"}],"kernel":"uk.stage.uc_deduction_attributes@1","mass":"conserve","outputs":[{"column":"uc_deduction_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_type_random_draw","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_latent_deduction_rate","dtype":"float64","entity":"benunit","ownership":"produced","rows":"all"},{"column":"uc_deduction_combination","dtype":"string","entity":"benunit","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"uc_deduction_attributes","stage_contract_sha256":"6bc7e3ec1a5712e23ca1b7d2956e8b17f2526b94431ba3e5a9294b04658e4fe0","time_period":"2024"},"population":"carers_allowance_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"carers_allowance_take_up.boundary","citation":"","description":"Run structural UK stage cgt_support_split.","id":"cgt_support_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_support_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_support_copy","bool"],["household","cgt_support_copies","int64"],["household","cgt_support_copy_index","int64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_support_split","stage_contract_sha256":"88a0f5974de73dc778a782c9ce6e5f811e9d17e9eb86a30207bc9276134e53af","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_support_split.","id":"cgt_support_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_support_copy","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copies","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_support_copy_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_support_copy","household.cgt_support_copies","household.cgt_support_copy_index"]},"population":"cgt_support_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_support_split","citation":"","description":"Run structural UK stage cgt_incidence_clone.","id":"cgt_incidence_clone","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_clone@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_capital_gains_clone","bool"],["person","capital_gains","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_clone","stage_contract_sha256":"29198953c5522c9b996b981478909916870977a79e9f2feb2db7e9e72ef15de8","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_incidence_clone.","id":"cgt_incidence_clone.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_capital_gains_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_capital_gains_clone","person.capital_gains"]},"population":"cgt_incidence_clone","sources":[],"structural":"none","weights":null},{"base":"cgt_incidence_clone","citation":"","description":"Ownership boundary before hmrc_cgt_gains_spine rewrites.","id":"hmrc_cgt_gains_spine.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_gains_spine.","id":"hmrc_cgt_gains_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cgt_support_copies","corporate_wealth","gross_financial_wealth","household_is_cgt_support_copy","non_residential_property_value","other_residential_property_value","region"],"entity":"household","rows":"all"},{"columns":["age","dividend_income","employment_income","individual_savings_account_interest_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_gains_spine@1","mass":"conserve","outputs":[{"column":"capital_gains","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_gains_spine","stage_contract_sha256":"b5d27d6b6307acec73a9336a00ef3e4cd900164787362e1157a49ffaa8af50ef","time_period":"2024"},"population":"hmrc_cgt_gains_spine.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"hmrc_cgt_gains_spine.boundary","citation":"","description":"Run structural UK stage cgt_incidence_anchor.","id":"cgt_incidence_anchor","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_is_capital_gains_clone","region"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","dividend_income","employment_income","individual_savings_account_interest_income","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_incidence_anchor@1","mass":"conserve","outputs":[],"params":{"expand_cells":[],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_incidence_anchor","stage_contract_sha256":"ed54c55428e56d7597c57c8459b014aa43b2ff9495b903f0b789bd5e4264ca9a","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":"cgt_incidence_anchor","citation":"","description":"Run structural UK stage cgt_residential_split.","id":"cgt_residential_split","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains"],"entity":"person","rows":"all"}],"kernel":"uk.stage.expand.cgt_residential_split@1","mass":"conserve","outputs":[],"params":{"expand_cells":[["household","household_is_cgt_residential_clone","bool"],["household","cgt_residential_clone_index","int64"],["person","cgt_residential_probability","float64"],["person","capital_gains_residential_property","float64"]],"expand_weight_entity":"household","expand_weight_kind":"importance","numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"cgt_residential_split","stage_contract_sha256":"57d73fd1e8673d747fed04bb73b3eb1a8b215f73b7d24dd5b191b10ecf1e505f","time_period":"2024"},"population":null,"sources":["frs"],"structural":"expand","weights":null},{"base":null,"citation":"","description":"Own the cells materialized by cgt_residential_split.","id":"cgt_residential_split.owned","inputs":[],"kernel":"uk.claim@1","mass":"conserve","outputs":[{"column":"household_is_cgt_residential_clone","dtype":"bool","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_clone_index","dtype":"int64","entity":"household","ownership":"produced","rows":"all"},{"column":"cgt_residential_probability","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_residential_property","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"materialized_expand_outputs":["household.household_is_cgt_residential_clone","household.cgt_residential_clone_index","person.cgt_residential_probability","person.capital_gains_residential_property"]},"population":"cgt_residential_split","sources":[],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage hmrc_cgt_asset_type_spine.","id":"hmrc_cgt_asset_type_spine","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["corporate_wealth","gross_financial_wealth","other_residential_property_value","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","capital_gains","capital_gains_residential_property","dividend_income","property_income","reports_rent_from_other_property","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.hmrc_cgt_asset_type_spine@1","mass":"conserve","outputs":[{"column":"capital_gains_asset_type","dtype":"string","entity":"person","ownership":"produced","rows":"all"},{"column":"capital_gains_badr","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"hmrc_cgt_asset_type_spine","stage_contract_sha256":"722e19b00e13d98ce9fde4069ef6ebf3e30ed9143871bec788992a36b94b5e85","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage salary_sacrifice.","id":"salary_sacrifice","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr"],"entity":"person","rows":"all"}],"kernel":"uk.stage.salary_sacrifice@1","mass":"conserve","outputs":[{"column":"pension_contributions_via_salary_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"pension_contributions_via_bonus_sacrifice","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"employee_pension_contributions","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"employment_income","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"},{"column":"salary_sacrifice_pre_conversion_pay","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"salary_sacrifice","stage_contract_sha256":"d653f391e521528a66aae725488c307945ed870203e3070c89766ecaae392624","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage student_loans.","id":"student_loans","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["region"],"entity":"household","rows":"all"},{"columns":["age","age_left_full_time_education","current_education","highest_education","reports_outstanding_student_loan","salary_sacrifice_pre_conversion_pay","student_loan_repayments","student_loans"],"entity":"person","rows":"all"}],"kernel":"uk.stage.student_loans@1","mass":"conserve","outputs":[{"column":"student_loan_plan","dtype":"string","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"student_loans","stage_contract_sha256":"157d9ee607633e4246ed06eeee3aac3cdff98118e72400e18b84c11b3fd2b92b","time_period":"2024"},"population":"cgt_residential_split","sources":["frs"],"structural":"none","weights":null},{"base":"cgt_residential_split","citation":"","description":"Ownership boundary before childcare_copy_take_up rewrites.","id":"childcare_copy_take_up.boundary","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.identity@1","mass":"conserve","outputs":[],"params":{},"population":null,"sources":[],"structural":"filter","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage childcare_copy_take_up.","id":"childcare_copy_take_up","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_uc_childcare","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.childcare_copy_take_up@1","mass":"conserve","outputs":[{"column":"would_claim_tfc","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_extended_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_universal_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"would_claim_targeted_childcare","dtype":"bool","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"maximum_extended_childcare_hours_usage","dtype":"float64","entity":"benunit","ownership":"produced","rewrite":true,"rows":"all"},{"column":"max_free_entitlement_hours_used","dtype":"float64","entity":"person","ownership":"produced","rewrite":true,"rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"childcare_copy_take_up","stage_contract_sha256":"cdbb7e135b16fac7ca1bcd6c54222821e2976b4da99f10a60913efd0ba03c13c","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage private_school_attendance.","id":"private_school_attendance","inputs":[{"columns":["frs_benunit_capital","is_married","dependent_children","liable_for_share_of_household_rent","would_claim_child_benefit","child_benefit_opts_out","would_claim_pc","would_claim_uc","would_claim_tfc","would_claim_extended_childcare","would_claim_universal_childcare","would_claim_targeted_childcare","would_claim_uc_childcare","maximum_extended_childcare_hours_usage","benunit_source_id","benunit_support_channel","benunit_support_clone_index","uc_reported_capital","pension_credit_reported_capital","would_claim_uc_at_legacy_closure","has_mixed_age_couple_pension_credit_saving","uc_deduction_random_draw","uc_deduction_type_random_draw","uc_latent_deduction_rate","uc_deduction_combination"],"entity":"benunit","rows":"all"},{"columns":["region","tenure_type","accommodation_type","num_bedrooms","council_tax_reported","council_tax_band","council_tax_rebate","council_tax_single_adult_raw","water_and_sewerage_charges","domestic_rates","rent","subrent","mortgage_interest_repayment","mortgage_capital_repayment","structural_insurance_payments","housing_service_charges","external_child_payments","ons_household_type","council_tax","household_owns_tv","would_evade_tv_licence_fee","main_residential_property_purchased_is_first_home","property_purchased","brma","source_household_id","source_year","source_household_key","household_source_id","household_support_channel","household_support_clone_index","household_is_spi_synthetic","household_is_spi_income_band_donor","spi_income_band_donor_lower_bound","owned_land","property_wealth","corporate_wealth","private_pension_wealth","gross_financial_wealth","net_financial_wealth","main_residence_value","other_residential_property_value","non_residential_property_value","savings","num_vehicles","cash_isa","stocks_and_shares_isa","mortgage_debt","consumer_debt","directly_held_shares","unit_and_investment_trusts","other_residential_property_secured_debt","non_residential_property_secured_debt","household_lifetime_isa_balance","household_is_high_value_support_copy","high_value_support_copies","high_value_support_copy_index","main_residence_value_rank_basis","additional_residential_property_purchased","non_residential_property_purchased","household_local_bus_trips","food_and_non_alcoholic_beverages_consumption","alcohol_and_tobacco_consumption","clothing_and_footwear_consumption","housing_water_and_electricity_consumption","household_furnishings_consumption","health_consumption","transport_consumption","communication_consumption","recreation_consumption","education_consumption","restaurants_and_hotels_consumption","miscellaneous_consumption","petrol_spending","diesel_spending","bus_fare_spending","domestic_energy_consumption","electricity_consumption","gas_consumption","liquid_fuel_consumption","solid_fuel_consumption","has_fuel_consumption","uses_energy_prepayment_meter","beer_litres","cider_litres","wine_litres","spirits_litres","other_fermented_litres","beer_draught_share","cider_draught_share","cigarettes_per_week","hand_rolling_tobacco_grams_per_week","cigars_grams_per_week","other_tobacco_grams_per_week","remote_gaming_net_losses","pool_betting_net_receipts","bingo_net_receipts","national_lottery_ticket_spending","land_based_casino_net_losses","machine_games_lower_rate_net_takings","machine_games_standard_rate_net_takings","machine_games_higher_rate_net_takings","land_based_fixed_odds_betting_net_losses","remote_uk_horseracing_betting_net_losses","remote_other_betting_net_losses","betting_exchange_commission","horse_and_dog_pool_betting_net_losses","full_rate_vat_expenditure_rate","dfe_education_spending","rail_subsidy_spending","bus_subsidy_spending","rail_usage","household_is_cgt_support_copy","cgt_support_copies","cgt_support_copy_index","household_is_capital_gains_clone","household_is_cgt_residential_clone","cgt_residential_clone_index"],"entity":"household","rows":"all"},{"columns":["age","gender","months_since_last_birthday","marital_status","hours_worked","care_hours","frs_care_hours_in_household","is_household_head","is_benunit_head","is_parent","is_blind","is_uc_claimant","is_claimant_or_partner","is_hbai_dependent_child","uc_is_in_startup_period","uc_is_in_gainful_self_employment","rent_paid_as_boarder","rent_paid_as_lodger","employment_income","self_employment_income","trading_loss","loss_relief","ni_class_4_losses_brought_forward","private_pension_income","annuity_and_trust_income","individual_savings_account_interest_income","savings_interest_income","dividend_income","other_investment_income","stands_as_sole_owner_or_partner_of_company","is_engaged_in_owned_company_trade","owned_company_is_main_employment","owned_company_carries_on_trade","owned_company_carries_on_property_business","owned_company_income_share","property_income","reports_rent_from_other_property","maintenance_income","spousal_maintenance_income","miscellaneous_income","private_transfer_income","lump_sum_income","student_loan_repayments","statutory_sick_pay","statutory_maternity_pay","statutory_paternity_pay","student_loans","access_fund","education_grants","healthy_start_vouchers","free_school_breakfasts","free_school_fruit_veg","free_school_meals","council_tax_benefit_reported","maintenance_expenses","childcare_expenses","personal_pension_contributions","employee_pension_contributions","pension_contributions_via_salary_sacrifice","salary_sacrifice_reported","salary_sacrifice_asked","frs_bonus_amount","frs_company_car_price_band","frs_company_car_fuel_code","frs_company_car_private_fuel","frs_company_car_contribution","child_benefit_reported","income_support_reported","housing_benefit_reported","attendance_allowance_reported","dla_sc_reported","dla_m_reported","iidb_reported","carers_allowance_reported","would_claim_carers_allowance","sda_reported","afcs_reported","ssmg_reported","pension_credit_reported","child_tax_credit_reported","working_tax_credit_reported","state_pension_reported","winter_fuel_allowance_reported","incapacity_benefit_reported","universal_credit_reported","pip_m_reported","pip_dl_reported","jsa_contrib_reported","jsa_income_reported","esa_contrib_reported","esa_income_reported","esa_includes_support_component","bsp_reported","war_widows_pension_reported","widowed_parents_allowance_reported","relationship_to_head","ons_family_role","ons_family_index","is_looked_after_by_local_authority","employment_status","employment_sector","sic_industry_division","aa_category","dla_sc_category","dla_m_category","pip_m_category","pip_dl_category","is_disabled_for_benefits","is_enhanced_disabled_for_benefits","is_severely_disabled_for_benefits","current_education","highest_education","is_in_non_advanced_education","is_in_approved_training","age_started_or_accepted_current_education_or_training","is_before_universal_credit_qualifying_young_person_terminal_date","adult_ema","child_ema","receives_benefits_in_own_right","reports_outstanding_student_loan","age_left_full_time_education","legacy_jobseeker_proxy","esa_health_condition_proxy","esa_support_group_proxy","disabled_students_allowance_eligible_expenses","max_free_entitlement_hours_used","would_claim_marriage_allowance","would_claim_scp","attends_private_school_random_draw","tax_free_childcare_spend_routed_share","is_apprentice","hmrc_spi_pay","hmrc_spi_unemployment_benefit_income","hmrc_spi_incapacity_benefit_income","ossben_identifiable_subset","srp_regular_code5","employer_pension_contributions","employment_income_annual_share","employment_income_other_spells","self_employment_income_annual_share","self_employment_income_other_spells","private_pension_income_annual_share","contributory_benefits_annual_share","person_source_id","person_support_channel","person_support_clone_index","person_is_spi_income_band_carrier","charitable_investment_gifts","gift_aid","hmrc_spi_employment_benefits","hmrc_spi_employment_expenses","hmrc_spi_other_social_security_income","hmrc_spi_taxable_termination_pay","hmrc_spi_miscellaneous_employment_income","hmrc_spi_other_income","hmrc_spi_state_pension_income","property_finance_costs","hmrc_spi_employed_income","hmrc_spi_total_earned_income","hmrc_spi_total_investment_income","hmrc_spi_assessable_income","person_is_spi_income_recipient","company_car_list_price","company_car_co2_emissions","company_car_fuel_type","company_car_electric_range","company_car_capital_contributions","company_car_private_fuel_provided","student_loan_balance","has_lifetime_isa","lifetime_isa_balance","property_rental_income","local_bus_use_band","bus_in_london_trips","other_local_bus_trips","local_bus_trips","bus_pass_eligible","local_bus_single_fare_share","a_and_e_visits","admitted_patient_visits","outpatient_visits","nhs_a_and_e_spending","nhs_admitted_patient_spending","nhs_outpatient_spending","capital_gains","cgt_residential_probability","capital_gains_residential_property","capital_gains_asset_type","capital_gains_badr","pension_contributions_via_bonus_sacrifice","salary_sacrifice_pre_conversion_pay","student_loan_plan"],"entity":"person","rows":"all"}],"kernel":"uk.stage.private_school_attendance@1","mass":"conserve","outputs":[{"column":"attends_private_school","dtype":"bool","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"private_school_attendance","stage_contract_sha256":"7e44379c0331fe4c9de05cd76a075c1a6aa22cf0dec6cd2f91b277e70f14a038","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage isa_subscriptions.","id":"isa_subscriptions","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["cash_isa","region","stocks_and_shares_isa"],"entity":"household","rows":"all"},{"columns":["age","attends_private_school","dividend_income","employment_income","gender","has_lifetime_isa","individual_savings_account_interest_income","lifetime_isa_balance","loss_relief","miscellaneous_income","private_pension_income","property_income","savings_interest_income","self_employment_income","state_pension_reported"],"entity":"person","rows":"all"}],"kernel":"uk.stage.isa_subscriptions@1","mass":"conserve","outputs":[{"column":"cash_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa_balance","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"cash_isa_subscriptions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"stocks_and_shares_isa_subscriptions","dtype":"float64","entity":"person","ownership":"produced","rows":"all"},{"column":"lifetime_isa_payments","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"isa_subscriptions","stage_contract_sha256":"9fc3e3ecf333df38206c9627470ca0c1a9d8abbea7534f6367e01868fdc3081f","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null},{"artifact_outputs":[{"name":"stage_evidence","type":{"name":"microcosm.stage-evidence","schema_version":1}}],"base":null,"citation":"","description":"Run UK spine stage trading_allowance_receipts.","id":"trading_allowance_receipts","inputs":[{"columns":["frs_benunit_capital"],"entity":"benunit","rows":"all"},{"columns":["household_source_id","region"],"entity":"household","rows":"all"},{"columns":["age","lifetime_isa_payments","self_employment_income"],"entity":"person","rows":"all"}],"kernel":"uk.stage.trading_allowance_receipts@1","mass":"conserve","outputs":[{"column":"self_employment_gross_receipts","dtype":"float64","entity":"person","ownership":"produced","rows":"all"}],"params":{"numerical_dependencies":[["policyengine-uk","2.165.1"],["policyengine-core","3.33.3"],["numpy","2.4.6"],["pandas","3.0.3"],["scikit-learn","1.8.0"],["quantile-forest","1.4.2"]],"stage":"trading_allowance_receipts","stage_contract_sha256":"f91329806570bd874750845816de96b28160e766e8e26bf1174cb0809ad8ff43","time_period":"2024"},"population":"childcare_copy_take_up.boundary","sources":["frs"],"structural":"none","weights":null}],"sources":[{"codec":"csv-tables","description":"Content-bound UK FRS and donor fixture/source bundle.","name":"frs"}]} diff --git a/test_support/microcosm_build/emitter.py b/test_support/microcosm_build/emitter.py new file mode 100644 index 0000000000..e61449b779 --- /dev/null +++ b/test_support/microcosm_build/emitter.py @@ -0,0 +1,295 @@ +"""An in-memory stand-in for the interface package's ``EmitterClient``. + +Build tests hand telemetry events, staging run files and Orrery inputs to it +instead of to the separately installed ``microcosm-emitter`` command. It +answers as the emitter documents those calls, without a process, socket, +database or network request: + +- each accepted ``stage_run_files`` hand-over is committed at once, and + ``hub_files`` holds what the dataset repository would then contain; +- ``read_back_run_files`` compares ``hub_files`` with the bytes this fake + committed, so a test can alter ``hub_files`` to stand for a Hub copy that + differs; +- Orrery inventories measure the named files, and hand-overs answer + ``pending``. + +The emitter's own tests cover the process, its queues and the Hub. +""" + +from __future__ import annotations + +import hashlib +import json +import uuid +from collections.abc import Iterable, Mapping +from pathlib import Path +from typing import Any + +from microcosm_emitter_interface import StageRunFiles +from microcosm_emitter_interface.orrery import ( + PublicationFileRole, + PublicationInventory, + PublicationReceipt, + publication_id_of, + unavailable_receipt, +) +from microcosm_emitter_interface.staging import ( + ReadBackResult, + RunFilesReceipt, + unavailable_read_back, + unavailable_run_files_receipt, +) +from microcosm_emitter_interface.telemetry import ( + TelemetryCommand, + TelemetryRecorder, + telemetry_message, +) + +ALL_MODULES = frozenset({"telemetry", "orrery", "huggingface"}) +LATEST_POINTER_PATH = "latest_staging.json" +RUNS_INDEX_PATH = "runs.json" + + +def fake_publication_inventory( + directory: Path, + roles: Mapping[str, PublicationFileRole], + publication_id: str | None = None, +) -> PublicationInventory: + """Measure the named files as the emitter's inventory does, in name order.""" + return { + "version": 1, + "publication_id": publication_id or uuid.uuid4().hex, + "files": [ + { + "name": name, + "role": role, + "bytes": (Path(directory) / name).stat().st_size, + "sha256": hashlib.sha256( + (Path(directory) / name).read_bytes() + ).hexdigest(), + } + for name, role in sorted(roles.items()) + ], + } + + +class FakeEmitterClient: + """The ``EmitterClient`` calls Microcosm makes, answered in memory. + + ``accept_run_files=False`` stands for an emitter that does not answer a + staging hand-over in time: each one returns an ``unavailable`` receipt, + as the interface does after a timeout. + """ + + emitter_version = "0.7.0" + + def __init__( + self, + *, + modules: Iterable[str] = ALL_MODULES, + accept_run_files: bool = True, + hub_files: dict[tuple[str, str], bytes] | None = None, + ) -> None: + self._modules = frozenset(modules) + self.accept_run_files = accept_run_files + self.closed = False + self.startup_error = None + self.last_failure = None + #: Every call's name, in order. + self.calls: list[str] = [] + self.telemetry_messages: list[dict[str, Any]] = [] + self.run_file_requests: list[StageRunFiles] = [] + self.orrery_requests: list[dict[str, Any]] = [] + #: What the dataset repositories hold: ``(repository, path)`` to bytes. + #: A test may pass a fake Hub's own mapping to share it. + self.hub_files = hub_files if hub_files is not None else {} + #: Override for ``read_back_run_files``, when a test needs one. + self.read_back_answer: ReadBackResult | None = None + self._committed: dict[tuple[str, str], tuple[str, str]] = {} + self._deliveries: dict[tuple[str, str], dict[str, Any]] = {} + self.telemetry = TelemetryRecorder(self) + + @property + def available(self) -> bool: + return bool(self._modules) and not self.closed + + @property + def modules(self) -> frozenset[str]: + return self._modules if self.available else frozenset() + + def paths(self, repository: str) -> list[str]: + return sorted(path for repo, path in self.hub_files if repo == repository) + + def hub_json(self, repository: str, path: str) -> Any: + return json.loads(self.hub_files[(repository, path)]) + + def committed_paths(self, repository: str, run_id: str) -> set[str]: + return { + path + for (repo, path), (owner, _) in self._committed.items() + if repo == repository and owner == run_id + } + + # Telemetry --------------------------------------------------------------- + + def emit_telemetry(self, command: TelemetryCommand) -> bool: + self.calls.append("emit_telemetry") + if "telemetry" not in self.modules: + return False + self.telemetry_messages.append(telemetry_message(command)) + return True + + # Staging run files --------------------------------------------------------- + + def _delivery(self, repository: str, run_id: str) -> dict[str, Any]: + return self._deliveries.setdefault( + (repository, run_id), + { + "files_attempted": 0, + "files_committed": 0, + "commit_attempts": 0, + "commits": 0, + "last_error_code": None, + "last_commit": None, + }, + ) + + def _receipt(self, repository: str, run_id: str) -> RunFilesReceipt: + return { + "status": "recorded", + "repository": repository, + "run_id": run_id, + "pending_files": 0, + **self._delivery(repository, run_id), + } + + def stage_run_files(self, request: StageRunFiles) -> RunFilesReceipt: + self.calls.append("stage_run_files") + self.run_file_requests.append(request) + if "huggingface" not in self.modules or not self.accept_run_files: + return unavailable_run_files_receipt(request.repository, request.run_id) + targets = [ + (f"{request.prefix}/{request.run_id}/{item.relative_path}", item.local_path) + for item in request.files + ] + if request.latest_pointer is not None: + targets.append((LATEST_POINTER_PATH, request.latest_pointer)) + for path_in_repo, local_path in targets: + content = Path(local_path).read_bytes() + self.hub_files[(request.repository, path_in_repo)] = content + self._committed[(request.repository, path_in_repo)] = ( + request.run_id, + hashlib.sha256(content).hexdigest(), + ) + committed = len(targets) + if request.run_index_entry is not None: + self._merge_runs_index(request.repository, dict(request.run_index_entry)) + committed += 1 + delivery = self._delivery(request.repository, request.run_id) + if committed: + delivery["files_attempted"] += committed + delivery["files_committed"] += committed + delivery["commit_attempts"] += 1 + delivery["commits"] += 1 + delivery["last_commit"] = hashlib.sha1( + str(len(self.run_file_requests)).encode() + ).hexdigest() + return self._receipt(request.repository, request.run_id) + + def _merge_runs_index(self, repository: str, entry: dict[str, Any]) -> None: + existing = self.hub_files.get((repository, RUNS_INDEX_PATH)) + runs = [] if existing is None else json.loads(existing).get("runs", []) + runs = [run for run in runs if run.get("run_id") != entry["run_id"]] + runs.append(entry) + runs.sort( + key=lambda run: str( + run.get("updated_at") or run.get("started_at") or run.get("run_id") + ), + reverse=True, + ) + self.hub_files[(repository, RUNS_INDEX_PATH)] = json.dumps( + {"schema_version": 1, "updated_at": entry.get("updated_at"), "runs": runs}, + indent=1, + ).encode() + + def run_files_receipt(self, repository: str, run_id: str) -> RunFilesReceipt: + self.calls.append("run_files_receipt") + if "huggingface" not in self.modules: + return unavailable_run_files_receipt(repository, run_id) + return self._receipt(repository, run_id) + + def read_back_run_files( + self, repository: str, run_id: str, *, wait_seconds: float = 30.0 + ) -> ReadBackResult: + self.calls.append("read_back_run_files") + if "huggingface" not in self.modules: + return unavailable_read_back() + if self.read_back_answer is not None: + return self.read_back_answer + committed = { + path: digest + for (repo, path), (owner, digest) in self._committed.items() + if repo == repository and owner == run_id + } + if not committed: + return { + "status": "failed", + "files": 0, + "mismatched_paths": [], + "error_code": "NO_COMMITTED_FILES", + } + mismatched = [ + path + for path, digest in sorted(committed.items()) + if hashlib.sha256(self.hub_files.get((repository, path), b"")).hexdigest() + != digest + ] + return { + "status": "failed" if mismatched else "passed", + "files": len(committed), + "mismatched_paths": mismatched, + "error_code": None, + } + + # Orrery inputs ------------------------------------------------------------- + + def orrery_inventory( + self, + directory: Path, + roles: Mapping[str, PublicationFileRole], + *, + publication_id: str | None = None, + ) -> PublicationInventory | None: + self.calls.append("orrery_inventory") + if "orrery" not in self.modules: + return None + return fake_publication_inventory(directory, roles, publication_id) + + def hand_over_orrery_inputs( + self, + directory: Path, + inventory: PublicationInventory, + *, + wait_seconds: float = 30.0, + ) -> PublicationReceipt: + self.calls.append("hand_over_orrery_inputs") + publication_id = publication_id_of(inventory) + if "orrery" not in self.modules: + return unavailable_receipt(publication_id) + self.orrery_requests.append( + { + "action": "graph_publication", + "directory": str(directory), + "inventory": inventory, + } + ) + return { + "version": 1, + "publication_id": publication_id, + "status": "pending", + "error_code": None, + } + + def close(self) -> None: + self.calls.append("close") + self.closed = True diff --git a/test_support/microcosm_build/telemetry.py b/test_support/microcosm_build/telemetry.py index 8cd80791be..815a636bd8 100644 --- a/test_support/microcosm_build/telemetry.py +++ b/test_support/microcosm_build/telemetry.py @@ -1,43 +1,63 @@ -"""In-memory telemetry and synthetic graph requests for build tests.""" +"""In-memory telemetry and synthetic graph requests for build tests. + +``FakeTelemetryEmitter`` is Microcosm's real adapter over an in-memory +``EmitterClient`` (:mod:`test_support.microcosm_build.emitter`). Its +``events`` apply the rules the emitter's telemetry service documents for +turning requests into events, so tests can read run outcomes without the +emitter installed: + +- a stage transition finishes the current transition stage, if it is a + different one, and starts the new one; +- the first calibration epoch sent with ``transition`` moves to the + ``calibrating`` stage; +- ``complete`` and ``block`` finish the current stage, ``fail`` fails it, + and each then records the run's outcome; +- requests after the outcome make no events. + +Events carry no timestamps and are not sanitized; the emitter's own tests +cover both. +""" from __future__ import annotations -import hashlib +import sys import uuid -from collections.abc import Mapping +from collections.abc import Callable, Mapping, Sequence from pathlib import Path from typing import Any -from microcosm_emitter.orrery.contracts import ( +from microcosm_emitter_interface.orrery import ( PublicationFileRole, PublicationInventory, PublicationReceipt, ) -from microcosm_emitter.telemetry.service.lifecycle import ( - LifecycleState, - process_request, -) from microcosm.build.telemetry_emitter import LocalTelemetryEmitter, TelemetryRun +from test_support.microcosm_build.emitter import ( + FakeEmitterClient, +) +from test_support.microcosm_build.emitter import ( + fake_publication_inventory as _measured_inventory, +) + +BUILD_COMPLETED_MESSAGE = "Microcosm build completed." +BUILD_BLOCKED_MESSAGE = "Validation checks refused the candidate at {phase}." +#: How the service reads a transition's status. +_TRANSITION_STATUSES = { + "failed": "failed", + "completed": "completed", + "passed": "completed", + "progress": "progress", + "started": "started", + "running": "started", +} def fake_publication_inventory( directory: Path, roles: Mapping[str, PublicationFileRole] ) -> PublicationInventory: - """Measure only synthetic test files without starting an emitter service.""" - return { - "version": 1, - "publication_id": uuid.uuid4().hex, - "files": [ - { - "name": name, - "role": role, - "bytes": (directory / name).stat().st_size, - "sha256": hashlib.sha256((directory / name).read_bytes()).hexdigest(), - } - for name, role in sorted(roles.items()) - ], - } + """Measure only synthetic test files without starting an emitter.""" + return _measured_inventory(directory, roles, uuid.uuid4().hex) def fake_publish_graph( @@ -55,48 +75,203 @@ def fake_publish_graph( } -class FakeTelemetryEmitter(LocalTelemetryEmitter): - """Exercise real lifecycle methods without starting a service or socket.""" +class _Lifecycle: + """The emitter service's request-to-event rules, without its storage.""" - def __init__( - self, run: TelemetryRun, *, close_service_on_finish: bool = True + def __init__(self) -> None: + self.transition_stage: str | None = None + self.last_stage = "created" + self.finished = False + self.events: list[dict[str, Any]] = [] + + def apply(self, request: Mapping[str, Any]) -> None: + if self.finished: + return + command = request["command"] + if command == "emit": + self._add( + request["event_type"], + request["status"], + request.get("stage_id"), + request.get("message"), + request.get("details") or {}, + ) + elif command == "stage": + self._add( + "stage", + request.get("status", "started"), + request["stage_id"], + request.get("message"), + request.get("details") or {}, + ) + elif command == "transition_stage": + self._transition(request) + elif command == "progress": + self._add( + "progress", + "progress", + request["stage_id"], + details={ + "done": request["done"], + "total": request["total"], + "unit": request.get("unit"), + **(request.get("details") or {}), + }, + ) + elif command in {"calibration_progress", "transition_calibration_progress"}: + event = request["event"] + if event.get("kind") == "calibration_epoch": + if ( + command == "transition_calibration_progress" + and self.transition_stage != "calibrating" + ): + self._transition({"stage_id": "calibrating"}) + self._add("calibration", "progress", "calibrating", details=event) + elif command == "fail": + details = { + "error_type": request.get("error_type"), + "failure_class": request.get("failure_class", "build_failure"), + "failed_during": request.get("failed_during") + or self.transition_stage + or self.last_stage, + } + if request.get("error_code") is not None: + details["error_code"] = request["error_code"] + message = request.get("message") + self._close_stage("failed", message, details) + self._add("run", "failed", "failed", message, details) + elif command == "block": + check_ids = list(request["blocking_gate_ids"]) + count = request.get("blocking_failure_count") + details: dict[str, Any] = { + "phase": request["phase"], + "blocking_gate_ids": check_ids, + "blocking_failure_count": len(check_ids) if count is None else count, + } + if request.get("gate_statuses") is not None: + details["gate_statuses"] = dict(request["gate_statuses"]) + self._close_stage() + self._add( + "run", + "blocked", + "blocked", + BUILD_BLOCKED_MESSAGE.format(phase=details["phase"]), + details, + ) + elif command == "complete": + self._close_stage() + self._add("run", "completed", "complete", BUILD_COMPLETED_MESSAGE) + else: + raise ValueError(f"unsupported telemetry command {command!r}") + + def _add( + self, + event_type: str, + status: str, + stage_id: str | None = None, + message: str | None = None, + details: Mapping[str, Any] | None = None, ) -> None: - self.messages: list[Mapping[str, Any]] = [] - self._lifecycle = LifecycleState() - super().__init__( - run=run, - transport=self, - close_service_on_finish=close_service_on_finish, + self.events.append( + { + "event_type": event_type, + "stage_id": stage_id, + "status": status, + "message": message or None, + "details": dict(details or {}), + } + ) + if event_type == "run" and status in {"completed", "failed", "blocked"}: + self.finished = True + self.transition_stage = None + elif stage_id is not None: + self.last_stage = stage_id + + def _transition(self, request: Mapping[str, Any]) -> None: + stage = request["stage_id"] + status = _TRANSITION_STATUSES.get(request.get("status", "running"), "progress") + if status == "started": + if self.transition_stage == stage: + status = "progress" + else: + self._close_stage() + self.transition_stage = stage + elif self.transition_stage == stage: + if status in {"completed", "failed"}: + self.transition_stage = None + else: + self._close_stage() + self._add( + "stage", + status, + stage, + request.get("message"), + request.get("details") or {}, ) - def send(self, payload: Mapping[str, Any]) -> None: - self._lifecycle, events = process_request(self._lifecycle, payload) - self.messages.extend({"action": "event", "event": event} for event in events) + def _close_stage( + self, + status: str = "completed", + message: str | None = None, + details: Mapping[str, Any] | None = None, + ) -> None: + if self.transition_stage is not None: + stage, self.transition_stage = self.transition_stage, None + self._add("stage", status, stage, message, details) + + +def telemetry_events(messages: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]: + """The events the emitter's telemetry service would make of ``messages``.""" + lifecycle = _Lifecycle() + for message in messages: + lifecycle.apply(message) + return lifecycle.events + + +#: Makes the in-memory client of each ``FakeTelemetryEmitter`` built without +#: one; :func:`share_fake_hub` replaces it for one test. +client_factory: Callable[[], FakeEmitterClient] = FakeEmitterClient + + +def share_fake_hub(monkeypatch, hub: Any) -> None: + """Commit the run files every fake emitter receives into ``hub.files``. + + ``hub`` is a fake Hub keyed by ``(repository, path)``; the build's other + uploads (staged dataset bundles, releases) still go to it directly, so a + test sees both in one place. + """ - def close(self) -> None: - self._closed = True + monkeypatch.setattr( + sys.modules[__name__], + "client_factory", + lambda: FakeEmitterClient(hub_files=hub.files), + ) - def publication_inventory( - self, directory: Path, roles: Mapping[str, PublicationFileRole] - ) -> PublicationInventory: - return fake_publication_inventory(directory, roles) - def publish_graph( +class FakeTelemetryEmitter(LocalTelemetryEmitter): + """Microcosm's adapter over an in-memory emitter client.""" + + def __init__( self, - directory: Path, - inventory: PublicationInventory, + run: TelemetryRun, *, - wait_seconds: float = 30.0, - ) -> PublicationReceipt: - self.messages.append( - { - "action": "graph_publication", - "directory": str(directory), - "inventory": inventory, - } + close_service_on_finish: bool = True, + client: FakeEmitterClient | None = None, + ) -> None: + super().__init__( + run=run, + client=client if client is not None else client_factory(), + close_service_on_finish=close_service_on_finish, ) - return fake_publish_graph(directory, inventory, wait_seconds=wait_seconds) @property - def events(self) -> list[Mapping[str, Any]]: - return [message["event"] for message in self.messages if "event" in message] + def events(self) -> list[dict[str, Any]]: + return telemetry_events(self.client.telemetry_messages) + + @property + def messages(self) -> list[Mapping[str, Any]]: + """The events as event messages, then the graph hand-overs.""" + return [ + *({"action": "event", "event": event} for event in self.events), + *self.client.orrery_requests, + ] diff --git a/test_support/microcosm_build/transport_nz_toy.py b/test_support/microcosm_build/transport_nz_toy.py index 90f44a87d8..86148e5fe8 100644 --- a/test_support/microcosm_build/transport_nz_toy.py +++ b/test_support/microcosm_build/transport_nz_toy.py @@ -86,6 +86,9 @@ SCENARIOS = ("S0", "S1", "V1", "V3", "VHF") SHARED_BRIDGE = "nz.as.bridge" FLAGS = ("receives_main", "receives_other", "receives_pension") +#: The receipt strata calibrate every flag, so the holdout rows measure a +#: dedicated eligibility column that no other reference document measures. +HOLDOUT_MEASURE = "toy_main_eligible" GROSS = ("toy_main_annual_gross", "toy_other_annual_gross") DEMOGRAPHY = tuple( (f"toy_demography_{region}_{band}", region, lower, upper) @@ -921,6 +924,8 @@ def make_nz_toy_fixture(root): base = make_entitlement_fixture(root, variants=False) spec = copy.deepcopy(base.spec) r = spec["resources"] + for row in r["holdout_references"]["target_references"]: + row["measure"] = HOLDOUT_MEASURE population = write_population_sources( root / "forty-households", mass=120, @@ -1790,7 +1795,7 @@ def _exemptions(resources): selections = {} for resource, name, entity, measure in ( ("target_references", "toy_parked_calibration", "person", "age"), - ("holdout_references", "toy_parked_tripwire", "person", "receives_main"), + ("holdout_references", "toy_parked_tripwire", "person", HOLDOUT_MEASURE), ): row = reference_row( name, entity=entity, measure=measure, activation_status="pending" diff --git a/test_support/microcosm_build/us_modal_stage_plan_tool.py b/test_support/microcosm_build/us_modal_stage_plan_tool.py index e3ac1f04ab..791e1c5c2a 100644 --- a/test_support/microcosm_build/us_modal_stage_plan_tool.py +++ b/test_support/microcosm_build/us_modal_stage_plan_tool.py @@ -34,6 +34,9 @@ def _load(): plan_lib = _load() +#: What the image's emitter answers to ``microcosm-emitter version``. Tests +#: get this answer instead of running a command at the image's emitter path. +RECORDED_EMITTER_VERSION = {"emitter_version": "0.7.0", "protocol_versions": [1]} def load_app(monkeypatch): @@ -43,7 +46,9 @@ def load_app(monkeypatch): image and functions without reading a plan or contacting Modal; volume calls (commit, reload) are recorded, not performed. Each ``@app.function`` keeps its function and records its Modal options as - ``modal_options``. + ``modal_options``. ``_emitter_version`` answers + ``RECORDED_EMITTER_VERSION``, so no test runs an emitter installed at the + image's path (``/usr/local/bin/microcosm-emitter``) on the test machine. """ from unittest.mock import MagicMock @@ -65,6 +70,9 @@ def load_app(monkeypatch): module = importlib.util.module_from_spec(spec) assert spec.loader is not None spec.loader.exec_module(module) + monkeypatch.setattr( + module, "_emitter_version", lambda: copy.deepcopy(RECORDED_EMITTER_VERSION) + ) return module diff --git a/tools/build_uk_release_input_coverage_manifest.py b/tools/build_uk_release_input_coverage_manifest.py index 598a2d84e5..6d21b13eaf 100644 --- a/tools/build_uk_release_input_coverage_manifest.py +++ b/tools/build_uk_release_input_coverage_manifest.py @@ -932,6 +932,10 @@ def build_manifest( stage_name="isa_subscriptions", candidate_source=candidate_source, ), + "trading_allowance_receipts": _source_stage_family_coverage_contract( + stage_name="trading_allowance_receipts", + candidate_source=candidate_source, + ), # PolicyEngine/uk-autumn-budget-dashboard-2026#316: the company cars # declare their household-mass receipt like every other stage. "company_cars": _source_stage_family_coverage_contract( diff --git a/tools/build_us_acs_local_release.py b/tools/build_us_acs_local_release.py index 36677bfcd3..3804c18c3b 100644 --- a/tools/build_us_acs_local_release.py +++ b/tools/build_us_acs_local_release.py @@ -17,7 +17,9 @@ irs_soi}; ``--soi-mode state`` by default -- Build O's state-geography SOI contract -- with ``totals``, ``full`` and ``state_cd`` (district SOI rows, one vintage per state - concept) as explicit opt-ins), run the household-chunked + concept) as explicit opt-ins), seed ACS-row SNAP/TANF take-up + on the full staging frame (microcosm#1019; the consumer + export re-derives the same flags), run the household-chunked engine pass under the nullable-artifact contract (input-schema projection + reviewed-null fill), add PUMA-ladder population marginals (state + congressional district), assign the CD @@ -40,7 +42,10 @@ weights onto a copy of the staging H5. qa : chunked engine probe of the calibrated artifact recording per-spine SSI incidence and intensity (the microcosm#403 - signature, measured rather than assumed). + signature, measured rather than assumed) and an + informational December-eligible SNAP take-up snapshot + (unit- and person-weighted; not the FNS fiscal-year + participation rate). finalize : release-style gate report (PUMA-ladder gate, calibration gate, spine-composition evidence) + the reviewed-limitations register for this lineage (inherited #507 SSI aged-band @@ -86,6 +91,12 @@ from microcosm.build.us_runtime import target_loss_weights as loss_weighting from microcosm.build.us_runtime.acs_inputs import acs_self_employment_identity_gate from microcosm.build.us_runtime.acs_local_hours import acs_local_hours_signal_gate +from microcosm.build.us_runtime.acs_local_take_up import ( + ACS_LOCAL_TAKE_UP_COLUMNS, + ACS_LOCAL_TAKE_UP_GATE_NAME, + acs_local_take_up_signal_gate, + with_acs_local_take_up_inputs, +) from microcosm.build.us_runtime.acs_pums import ACS_2024_1YR_SPINE from microcosm.build.us_runtime.base_pool import spine_column from microcosm.build.us_runtime.esi_premiums import refuse_unassigned_us_esi_premiums @@ -459,6 +470,18 @@ class UnregisteredNullError(ValueError): """NaN in an engine-input column NOT in reviewed_engine_input_nulls.""" +class DeniedDefaultFillError(ValueError): + """NaN in an engine input whose engine default must never be the fill.""" + + +#: Runtime-owned take-up draws. Their engine default, ``True``, is universal +#: take-up, so a missing cell is a build defect even when the staging register +#: lists the column (microcosm#1019); the ACS take-up stage fills them first. +NEVER_DEFAULT_FILLED = frozenset( + ("spm_unit", column) for column in ACS_LOCAL_TAKE_UP_COLUMNS +) + + class DeclaredSourceInputNullError(UnregisteredNullError): """A declared dataset source input is null or registered for a default fill. @@ -555,13 +578,27 @@ def fill_reviewed_nulls( Every registered (entity, column) has its NaN filled with the pe-us variable's own default; NaN in any engine-input column NOT in the register is a hard error with a per-spine diagnostic — an artifact - defect, surfaced not filled. A declared dataset source input is never - filled: a register that names one, or a null one, raises - :class:`DeclaredSourceInputNullError`. Nor is the ESI employer premium - input, registered or not: a null there refuses the build. ``engine`` and - ``system`` default to the PolicyEngine-US adapter and tax-benefit system. + defect, surfaced not filled. NaN in a :data:`NEVER_DEFAULT_FILLED` + column is refused before anything is filled, registered or not. A + declared dataset source input is never filled: a register that names + one, or a null one, raises :class:`DeclaredSourceInputNullError`. Nor + is the ESI employer premium input, registered or not: a null there + refuses the build. ``engine`` and ``system`` default to the + PolicyEngine-US adapter and tax-benefit system. """ + denied = [ + f"{entity}.{column} ({int(frame.table(entity)[column].isna().sum())} null rows)" + for entity, column in sorted(NEVER_DEFAULT_FILLED) + if column in frame.table(entity) and frame.table(entity)[column].isna().any() + ] + if denied: + raise DeniedDefaultFillError( + "Refusing to default-fill runtime-owned take-up input(s) " + f"{'; '.join(denied)}: the engine default is universal take-up " + "(microcosm#1019). Run the ACS local take-up stage first." + ) + # microcosm#454: the ESI employer premium exists only where the # meps_esi_premiums stage ran (the ASEC donor rows). Refuse before any # fill: a registered null here would become a silent zero on the ACS spine. @@ -1394,6 +1431,40 @@ def _load_staging_frame(path: Path): return _load_base_frame(Path(path)) +def _with_local_take_up(frame, *, seed: int): + """Seed ACS-row SNAP/TANF take-up before any reviewed-null fill (#1019).""" + + frame, receipt = with_acs_local_take_up_inputs(frame, seed=seed) + for column, entry in receipt["programs"].items(): + log( + f"ACS take-up {column}: filled {entry['filled_rows']:,} rows, " + f"weighted ACS share {entry['weighted_take_up_share']:.3f}" + ) + return frame, receipt + + +def _recorded_take_up(identity: dict) -> dict: + """The ACS take-up assignment materialize calibrated against, or refuse. + + The consumer export re-derives the flags with the recorded seed and must + reproduce the recorded digest, so both engine passes see the same flags. + """ + + receipt = identity.get("acs_local_take_up") + if ( + not isinstance(receipt, dict) + or type(receipt.get("seed")) is not int + or not isinstance(receipt.get("assigned_sha256"), str) + ): + raise SystemExit( + "run_identity.json records no ACS local take-up assignment " + "(microcosm#1019): the checkpoint was materialized with every ACS " + "SPM unit default-filled to take up SNAP and TANF. Re-run --stage " + "materialize." + ) + return receipt + + def _cd_holdout_fraction(args) -> float: """The CD holdout fraction this run draws (0 when there is no CD surface).""" @@ -1489,6 +1560,10 @@ def do_materialize(args) -> None: frame = _load_staging_frame(args.staging_h5) _require_local_hours(frame, _load_json(summary_path)) _require_acs_self_employment_identity(frame) + # microcosm#1019: seed ACS take-up on the full staging frame, before + # any development rung is drawn, so a rung keeps the flags the full + # build assigns and the export can re-derive them the same way. + frame, take_up = _with_local_take_up(frame, seed=args.seed) frame, sampling = cd_surface.sample_staging_frame( frame, fraction=args.sample_fraction, seed=args.sample_seed ) @@ -1619,6 +1694,7 @@ def do_materialize(args) -> None: "cd_holdout": holdout_identity, **county_surface.run_metadata(args, county_holdout), "sampling": sampling, + "acs_local_take_up": take_up, }, indent=2, ) @@ -2107,6 +2183,8 @@ def do_calibrate(args) -> None: from microcosm.calibrate import write_calibration_diagnostics identity = _verify_run_identity(args) + # Refuse a pre-#1019 checkpoint before hours of solving, not at export. + _recorded_take_up(identity) _apply_county_solver_profile(args, identity=identity) frame, design_weights, registry, roles, matrix = load_checkpoint_surface( args.checkpoint_dir, identity @@ -2443,9 +2521,17 @@ def _write_calibrated_artifact( from microcosm.frame import Frame, WeightKind, Weights + recorded_take_up = _recorded_take_up(identity) frame = _load_staging_frame(args.staging_h5) _require_local_hours(frame, _load_json(_staging_summary_path(args))) _require_acs_self_employment_identity(frame) + frame, take_up = _with_local_take_up(frame, seed=recorded_take_up["seed"]) + if take_up["assigned_sha256"] != recorded_take_up["assigned_sha256"]: + raise SystemExit( + "The consumer export's ACS take-up assignment differs from the one " + "materialize calibrated against (microcosm#1019). Re-run --stage " + "materialize against this staging file." + ) frame = _resample_like_materialize(frame, identity) staging_ids = frame.table("household")["household_id"].to_numpy() with pd.HDFStore(args.checkpoint_dir / "target_frame_lean.h5", mode="r") as store: @@ -2502,6 +2588,7 @@ def _write_calibrated_artifact( "held_back_total": sum(len(v) for v in dropped.values()), "filled_columns": len(fills), "total_values_filled": sum(f["filled_rows"] for f in fills), + "acs_local_take_up": take_up, "live_stored_inputs": live_inputs.provenance, "note": ( "The engine-pass contract (input-schema projection + " @@ -2556,13 +2643,207 @@ def spine_composition(households: pd.DataFrame, persons: pd.DataFrame, weights): return composition -def do_qa(args) -> None: - """Chunked engine probe: per-spine SSI incidence on the calibrated artifact. +#: Engine variables the QA probe reads for its December-eligible SNAP take-up +#: snapshot (microcosm#1051 review). Informational only. +_QA_SNAP_VARIABLES: tuple[str, ...] = ( + "is_snap_eligible", + "takes_up_snap_if_eligible", + "snap", + "has_usda_elderly_disabled", + "spm_unit_count_children", + "snap_earned_income", +) +#: Household types of the SNAP snapshot. They overlap (a unit with +#: children and earnings is in both); ``childless_adults`` units have neither +#: children nor an elderly or disabled member. +_QA_SNAP_HOUSEHOLD_TYPES: tuple[str, ...] = ( + "elderly_or_disabled", + "with_children", + "childless_adults", + "with_earnings", +) +_QA_SNAP_UNIT_COLUMNS: tuple[str, ...] = ( + "spine", + "state", + "weight", + "persons", + "takes_up", + "receives", + *_QA_SNAP_HOUSEHOLD_TYPES, +) +#: What the QA's SNAP table is, and what it is not (microcosm#1051 review). +SNAP_DECEMBER_SNAPSHOT_LABEL = "December-eligible snapshot (unit- and person-weighted)" +SNAP_DECEMBER_SNAPSHOT_NOT_FNS = ( + "Not the FNS fiscal-year participation rate. USDA FNS participation " + "rates are among eligible people over a federal fiscal year; this " + "snapshot counts the SPM units the engine finds SNAP-eligible in " + "December of the calendar year, and the people in them, and its " + "receiving rates count a positive annual modeled benefit. It is " + "informational and never graded." +) + + +def _qa_snap_eligible_units( + sub_frame, + values, + *, + household_weights: np.ndarray, + position_by_id: pd.Series, +) -> pd.DataFrame: + """One row per SPM unit of a QA chunk that is SNAP-eligible in December. + + PolicyEngine reads the monthly ``is_snap_eligible`` at a year period as + its last month. Each row carries the unit's spine, state, household + weight, member count (``persons``; every member carries the household + weight, as the frame weights people), stored take-up flag, whether its + annual modeled ``snap`` is positive, and the household-type flags of + :data:`_QA_SNAP_HOUSEHOLD_TYPES`. + """ + + from microcosm.build.us_runtime.base_pool import spine_column + + person = sub_frame.table("person") + spm_unit = sub_frame.table("spm_unit") + unit_household = ( + pd.Series( + person["person_household_id"].to_numpy(), + index=person["person_spm_unit_id"].to_numpy(), + ) + .groupby(level=0) + .first() + .reindex(spm_unit["spm_unit_id"].to_numpy()) + ) + if unit_household.isna().any(): + raise ValueError("QA: an SPM unit has no member person.") + persons = ( + person["person_spm_unit_id"] + .value_counts() + .reindex(spm_unit["spm_unit_id"].to_numpy(), fill_value=0) + .to_numpy(dtype=np.int64) + ) + household_ids = unit_household.to_numpy() + positions = position_by_id.reindex(household_ids).to_numpy() + state = ( + pd.Series( + np.asarray(values["state_code_str"]).astype(str), + index=sub_frame.table("household")["household_id"].to_numpy(), + ) + .reindex(household_ids) + .to_numpy() + ) + tag = spine_column("spm_unit") + spine = ( + spm_unit[tag].astype(str).to_numpy() + if tag in spm_unit + else np.full(len(spm_unit), "unknown") + ) + children = np.asarray(values["spm_unit_count_children"], dtype=np.float64) > 0 + elderly_or_disabled = np.asarray(values["has_usda_elderly_disabled"], dtype=bool) + units = pd.DataFrame( + { + "spine": spine, + "state": state, + "weight": household_weights[positions.astype(np.int64)], + "persons": persons, + "takes_up": np.asarray(values["takes_up_snap_if_eligible"], dtype=bool), + "receives": np.asarray(values["snap"], dtype=np.float64) > 0, + "elderly_or_disabled": elderly_or_disabled, + "with_children": children, + "childless_adults": ~children & ~elderly_or_disabled, + "with_earnings": ( + np.asarray(values["snap_earned_income"], dtype=np.float64) > 0 + ), + }, + columns=list(_QA_SNAP_UNIT_COLUMNS), + ) + eligible = np.asarray(values["is_snap_eligible"], dtype=np.float64) > 0 + return units.loc[eligible].reset_index(drop=True) + + +def snap_december_eligible_snapshot(units: pd.DataFrame) -> dict[str, object]: + """SNAP take-up in a December-eligible snapshot, unit- and person-weighted. + + ``units`` holds one row per SPM unit that is SNAP-eligible in December + (:func:`_qa_snap_eligible_units`). Every cell reports two rates over + that population: + + - ``unit_take_up_rate``: the household weight of eligible units whose + stored ``takes_up_snap_if_eligible`` is true, over all eligible unit + weight; + - ``person_take_up_rate``: eligible persons who take up over eligible + persons, weighting each unit by its weight times its member count, as + the frame weights people. + + The ``*_receiving_rate`` fields count a positive annual modeled ``snap`` + instead. This is not the FNS participation rate, which is among + eligible people over a federal fiscal year + (:data:`SNAP_DECEMBER_SNAPSHOT_NOT_FNS`). Reported overall, by household + type, by spine (and type) and by state. Never graded (microcosm#1051 + review). + """ + + def cell(rows: pd.DataFrame) -> dict[str, object]: + unit_weights = rows["weight"].to_numpy(dtype=np.float64) + members = rows["persons"].to_numpy(dtype=np.float64) + takes_up = rows["takes_up"].to_numpy(dtype=bool) + receives = rows["receives"].to_numpy(dtype=bool) + result: dict[str, object] = { + "eligible_units": int(len(rows)), + "eligible_persons": int(members.sum()), + } + for basis, weights in ( + ("unit", unit_weights), + ("person", unit_weights * members), + ): + weight = float(weights.sum()) + taking_up = float(weights[takes_up].sum()) + receiving = float(weights[receives].sum()) + result.update( + { + f"eligible_{basis}_weight": weight, + f"{basis}_take_up_weight": taking_up, + f"{basis}_take_up_rate": ( + taking_up / weight if weight > 0 else None + ), + f"{basis}_receiving_weight": receiving, + f"{basis}_receiving_rate": ( + receiving / weight if weight > 0 else None + ), + } + ) + return result + + def by_type(rows: pd.DataFrame) -> dict[str, object]: + return { + kind: cell(rows.loc[rows[kind].to_numpy(dtype=bool)]) + for kind in _QA_SNAP_HOUSEHOLD_TYPES + } + + return { + "label": SNAP_DECEMBER_SNAPSHOT_LABEL, + "graded": False, + "all": cell(units), + "by_household_type": by_type(units), + "by_spine": { + str(spine): {"all": cell(rows), "by_household_type": by_type(rows)} + for spine, rows in units.groupby("spine", sort=True) + }, + "by_state": { + str(state): cell(rows) for state, rows in units.groupby("state", sort=True) + }, + } + - Loads the packaged artifact bytes PLAIN — no private projection or fill — - so the probe doubles as the proof that ordinary - ``USSingleYearDataset``/``Microsimulation`` consumers can load the file - (the engine-pass contract was applied at export). +def do_qa(args) -> None: + """Chunked engine probe on the calibrated artifact. + + Records per-spine SSI incidence and, informationally, a December-eligible + SNAP take-up snapshot (unit- and person-weighted; not the FNS fiscal-year + participation rate) by spine, state and household type (microcosm#1051 + review). Loads the packaged artifact bytes PLAIN — no + private projection or fill — so the probe doubles as the proof that + ordinary ``USSingleYearDataset``/``Microsimulation`` consumers can load + the file (the engine-pass contract was applied at export). """ from microcosm.build.us_runtime.base_pool import spine_column @@ -2583,14 +2864,23 @@ def do_qa(args) -> None: adapter = PolicyEngineUSEngine() per_spine: dict[str, dict[str, float]] = {} + snap_units: list[pd.DataFrame] = [] n_chunks = (n_households + args.hh_chunk - 1) // args.hh_chunk for chunk_index, low in enumerate(range(0, n_households, args.hh_chunk)): high = min(low + args.hh_chunk, n_households) mask = (person_position >= low) & (person_position < high) sub_frame = projected.select(mask) - ssi = np.asarray( - adapter.materialize(sub_frame, ["ssi"], PERIOD)["ssi"], - dtype=np.float64, + values = adapter.materialize( + sub_frame, ["ssi", *_QA_SNAP_VARIABLES, "state_code_str"], PERIOD + ) + ssi = np.asarray(values["ssi"], dtype=np.float64) + snap_units.append( + _qa_snap_eligible_units( + sub_frame, + values, + household_weights=household_weights, + position_by_id=position_by_id, + ) ) sub_person_household = sub_frame.table("person")[ "person_household_id" @@ -2614,7 +2904,7 @@ def do_qa(args) -> None: entry["ssi_dollars"] += float( (ssi[recipients] * person_weight[recipients]).sum() ) - del sub_frame + del sub_frame, values gc.collect() log(f"qa chunk {chunk_index + 1}/{n_chunks}") @@ -2636,11 +2926,36 @@ def do_qa(args) -> None: "artifact_sha256": _sha256(args.out_h5), "plain_consumption": True, "per_spine": per_spine, + "snap_december_eligible_snapshot": { + "issue": "microcosm#1051 review", + "not_fns_participation_rate": SNAP_DECEMBER_SNAPSHOT_NOT_FNS, + "definition": ( + "SPM units with is_snap_eligible in December (PolicyEngine " + "reads a monthly boolean at a year period as its last month) " + "and the people in them. unit_* fields weight each unit by " + "its household weight; person_* fields weight it by household " + "weight times member count, so person_take_up_rate is " + "eligible persons who take up over eligible persons. " + "*_take_up_rate reads the stored takes_up_snap_if_eligible; " + "*_receiving_rate counts a positive annual modeled snap, a " + "different window from the December eligibility. Household " + "types overlap; childless_adults have no children and no " + "elderly or disabled member." + ), + **snap_december_eligible_snapshot( + pd.concat(snap_units, ignore_index=True) + if snap_units + else pd.DataFrame(columns=list(_QA_SNAP_UNIT_COLUMNS)) + ), + }, "note": ( "microcosm#403 re-measure: per-spine SSI incidence and intensity, " "computed by loading the packaged artifact bytes PLAIN (no " "private projection or fill) — the probe doubles as the " - "consumer-loadability proof. Recorded as evidence, not gated." + "consumer-loadability proof. A December-eligible SNAP take-up " + "snapshot (unit- and person-weighted; not the FNS fiscal-year " + "participation rate) is reported alongside (microcosm#1051 " + "review). Recorded as evidence, not gated." ), } (args.checkpoint_dir / "spine_qa.json").write_text(json.dumps(payload, indent=2)) @@ -2876,6 +3191,25 @@ def finalize_reviewed_limitations( ), "calibration_blocker": False, }, + { + "id": "acs_take_up_engine_defaults", + "status": "reviewed_known_gap", + "affected_spines": ["acs_2024_1yr"], + "reason": ( + "SNAP and TANF take-up on ACS rows are seeded by the local " + "runtime and gated by acs_local_take_up_signal " + "(microcosm#1019). The other runtime-owned takes_up_* flags " + "(EITC, ACA, Medicaid, SSI, Medicare, Head Start and the " + "rest) are neither transferred nor seeded on ACS rows, so " + "they ship at the engine default, universal take-up. The QA " + "probe's SNAP take-up table is a December-eligible snapshot " + "(unit- and person-weighted), informational and never " + "graded; it is not the FNS fiscal-year participation rate, " + "which is among eligible people over a federal fiscal year." + ), + "treatment": "Tracked via microcosm#1022.", + "calibration_blocker": False, + }, { "id": "cd_population_marginal_vintage_2020", "status": "reviewed_vintage", @@ -3146,6 +3480,10 @@ def do_finalize(args) -> None: hours_gate = us_hours_worked_signal_gate( frame, required_columns=US_HOURS_WORKED_POOL_OUTPUT_COLUMNS ) + # microcosm#1019: likewise refuse SNAP/TANF take-up that is missing or + # constant (the engine-default universal take-up) on either spine, or + # unanchored or out of band on the ACS spine this tool seeds. + take_up_gate = acs_local_take_up_signal_gate(frame) del frame gc.collect() if _sha256(args.out_h5) != hours_artifact_sha: @@ -3198,6 +3536,12 @@ def do_finalize(args) -> None: "detail": dict(hours_gate.details), "artifact_sha256": hours_artifact_sha, }, + ACS_LOCAL_TAKE_UP_GATE_NAME: { + "passed": bool(take_up_gate.passed), + "failures": list(take_up_gate.failures), + "detail": dict(take_up_gate.details), + "artifact_sha256": hours_artifact_sha, + }, "calibration": { # The cap criterion alone is near-tautological (the solver clips # per-row losses at the same cap); the solve must also have @@ -3264,7 +3608,11 @@ def do_finalize(args) -> None: "before transfer; the ACS spine inherits required inputs via " "QRF transfer. ACS native GQ-housing / source-universe nulls " "are reviewed_limitations (calibration_blocker: false) and " - "are NOT re-imposed on the ACS spine." + "are NOT re-imposed on the ACS spine. Take-up draws are not " + "transferred: ACS SNAP/TANF take-up is seeded by this tool " + "and gated by acs_local_take_up_signal (microcosm#1019); the " + "other ACS take-up flags are the reviewed limitation " + "acs_take_up_engine_defaults (microcosm#1022)." ), }, "spine_composition": { @@ -3315,6 +3663,7 @@ def do_finalize(args) -> None: "us_puma_ladder_gate", "hours_worked_signal", "acs_local_hours_signal", + ACS_LOCAL_TAKE_UP_GATE_NAME, "calibration", "consumer_ready", ) @@ -3625,6 +3974,19 @@ def do_package(args) -> dict: "certifies different H5 bytes. Re-run --stage finalize against the " "current artifact." ) + # microcosm#1019: a report finalized before the take-up gate existed (or + # against other bytes) cannot vouch for the packaged ACS take-up surface. + take_up_gate = gates.get(ACS_LOCAL_TAKE_UP_GATE_NAME) + if ( + not isinstance(take_up_gate, dict) + or take_up_gate.get("passed") is not True + or take_up_gate.get("artifact_sha256") != h5_sha + ): + raise SystemExit( + f"Packaging requires a present, passing {ACS_LOCAL_TAKE_UP_GATE_NAME} " + "gate bound to the packaged H5; an old simulation_ready summary is " + "insufficient. Re-run --stage finalize against the current artifact." + ) # Old summaries can say simulation_ready despite #765. Recheck the # actual artifact and the source-null evidence before packaging it, and # bind that result to the bytes being packaged: the finalize-time report diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 415b2e8bd1..296a65aa57 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -11647,9 +11647,13 @@ def attach_artifact( self.staging_bundle.attach_artifact(name, path, **details) def fail(self, error: BaseException) -> None: - self.emitter.fail(error) - if self.staging_bundle is not None: - self.staging_bundle.fail(error) + # The staging run's failed state is handed to the emitter before the + # telemetry outcome shuts the emitter down. + try: + if self.staging_bundle is not None: + self.staging_bundle.fail(error) + finally: + self.emitter.fail(error) def complete(self) -> None: if self.staging_bundle is not None: @@ -12361,6 +12365,8 @@ def _build_progress( run_dir=run_dir, repo_id=args.staging_repo_id, path_prefix=args.staging_prefix, + # The build's emitter commits the run files with its own credential. + emitter_client=emitter.client, upload_interval_seconds=args.staging_upload_interval_seconds, ) _ACTIVE_PROGRESS = _BuildProgress( diff --git a/tools/generate_be_target_references.py b/tools/generate_be_target_references.py new file mode 100644 index 0000000000..2d4f36e2a2 --- /dev/null +++ b/tools/generate_be_target_references.py @@ -0,0 +1,2811 @@ +"""Generate Belgium's reviewed reference documents from a pinned Chronicle artifact. + +Run with ``BE_CHRONICLE_ARTIFACT`` or ``--artifact``. References carry selectors +only: observations stay in Chronicle. The separate inventory resource records the +diagnostics the method card asks to publish (ageing ratios, stand-in gaps, the +B.1 checks, the counts behind the quantile surfaces) and every exclusion, and +quantile_surfaces.json holds BE-MC3's band documents. Each choice that shapes +numbers is a proposal of the Belgian method card (BE-MC0 to BE-MC6), pending +Max's ruling d1902; nothing here publishes a number, and Belgium stays inactive. + +``--pin-feed SOURCE_COMMIT`` rewrites ``chronicle_feed.json`` from the loaded +artifact's verified identity before generating; use it only when Chronicle +re-pins (for example once PolicyEngine/chronicle#401 merges). +""" + +from __future__ import annotations + +import argparse +import copy +import hashlib +import json +import os +import re +from collections import Counter +from fractions import Fraction +from pathlib import Path + +from microcosm.build.ledger_artifact import ( + LexicalFloat, + chronicle_feed_identity, + load_ledger_consumer_artifact, + validate_chronicle_feed_pin, +) +from microcosm.build.ledger_targets import fact_matches_selector + +SPEC = ( + Path(__file__).resolve().parents[1] + / "packages/microcosm-build/src/microcosm/build/be" +) +POLICY_YEAR = 2026 +METHOD_CARD_STATUS = "proposed_pending_d1902" +REGIONS = { + "BE1": "Brussels-Capital Region", + "BE2": "Flemish Region", + "BE3": "Walloon Region", +} +AGE_BANDS = ("0_17", "18_64", "65_plus") +SEXES = ("male", "female") +FPB = "fpb.economic_outlook_2026_2031." +STATBEL_POPULATION = "statbel.population_structure.cy{year}.people.by_nuts1_age_sex" +COMMUNE_POPULATION = ( + "statbel.population_structure.cy2025.people.by_commune_nis2025.total" +) +A1 = "statbel.fiscal_income_distribution.income_year2023.{component}.by_income_class_eur1000" +A1_CLASS = "tax_return.net_taxable_income_class" +A1_COMPONENTS = ( + ("professional_income", "professional_income_eur", "in"), + ("immovable_property_income", "immovable_property_income_eur", "gap"), + ( + "capital_and_movable_property_income", + "capital_and_movable_property_income_eur", + "gap", + ), + ("miscellaneous_income", "miscellaneous_income_eur", "gap"), + ("deductible_expenditures", "deductible_expenditures_eur", "gap_subtracted"), +) +B1_VALUES = "statbel.fiscal_income_distribution.b1.decile_values.v1" +B1_PERCENTILES = "statbel.fiscal_income_distribution.b1.top_decile_percentile_values.v1" +B1_BOUNDS = "statbel.fiscal_income_distribution.b1.decile_bounds.v1" +B1_PERCENTILE_BOUNDS = ( + "statbel.fiscal_income_distribution.b1.top_decile_percentile_bounds.v1" +) +B1_GROUPS = ( + *(f"decile_{decile:02d}" for decile in range(1, 10)), + *(f"percentile_{percentile:03d}" for percentile in range(91, 101)), +) +B4 = "statbel.fiscal_income_distribution.b4.declaration_type_age_decile.v1" + +# The d1952 stand-in bands, fixed in advance and before any candidate exists +# (BE-MC5; d1952 option A). Edges are income-year-2023 euros of total net +# taxable income, chosen on A.1's own class edges so every band is an exact sum +# of published EUR 1,000 classes and no cut is interpolated. EUR 10,000 steps +# cover the dense middle of the declaration distribution, which holds B.1's +# deciles 3 to 7 whole (their bounds run from EUR 16,867 to EUR 44,639); above +# EUR 50,000 counts thin, so the steps widen; A.1's open top class (EUR 100,000 +# and more) stays whole. Eight bands give sixteen count and amount +# constraints, the "short list" d1952 asks for, not 101 classes. The +# lowest band is kept so the bands partition A.1's whole positive range and sum +# exactly to B.4's joint plus individual declarations. +STANDIN_BANDS = ( + ("under_10k", 0, 10_000), + ("10k_20k", 10_000, 20_000), + ("20k_30k", 20_000, 30_000), + ("30k_40k", 30_000, 40_000), + ("40k_50k", 40_000, 50_000), + ("50k_75k", 50_000, 75_000), + ("75k_100k", 75_000, 100_000), + ("100k_plus", 100_000, None), +) +STANDIN_MEASUREMENT = "statbel_net_taxable_income_proxy_v1" +STANDIN_MONEY_COLUMN = f"{STANDIN_MEASUREMENT}_eur" +STANDIN_INCOME_COLUMN = f"{STANDIN_MEASUREMENT}_cents" +STANDIN_UNIVERSE_COLUMN = f"{STANDIN_MEASUREMENT}_universe_status" +STANDIN_TABLE = "statbel_a1_standin_bands_iy2023" +STANDIN_REASON = ( + "B4/W3: the d1952 stand-in measurement statbel_net_taxable_income_proxy_v1 " + "(rule-computed net professional income per declaration on the S2-d " + "tax_unit) has no producer, and legal pensions, part of professional " + "income, are not modelled until d1902. The band cuts are income-year-2023 " + "euros: ageing them to 2026 needs a shared operation that scales interval " + "cuts by a declared annual ratio pair. scale_money_and_intervals needs a " + "G8-r2 factor and singleton identity money rows, and G8-r2's resolver needs " + "dated observations through the target period; neither fits FPB's annual " + "2026 projections or summed bands, so reference_profile:aging_index stays " + "deferred. The stand-in is never described as reproducing official " + "taxable income." +) +B4_REASON = ( + "S1/S2-d: the declared tax-unit partition and the BE-MC4 legal-status proxy " + "(partner pointers calibrated to these counts) are not built; joint and " + "individual declaration indicators have no producer. B.4, like A.1, counts " + "only declarations with positive total net taxable income (Statbel's 523,770 " + "zero-income declarations of income year 2023 are outside it), so the " + "indicators must count the same declared filing universe as the A.1 bands " + "(d1952 build item 2), or the target overshoots by up to 7%." +) +DECLARATION_UNIVERSE = ( + "filed declarations with positive total net taxable income; zero-income " + "declarations are outside A.1, B.1 and B.4" +) +B1_REASON = ( + "BE-MC5 activates B.1 only after its tax definition, income ranking and " + "policy year are checked. All three checks fail or cannot be completed from " + "the documents (reference_inventory.json b1_checks), so B.1 stays inactive " + "and unaged at its source period." +) +RULES_REASON = ( + "W3: needs a pinned rulespec-be binding for {module} on the transported " + "frame, the S5 pre-calibration allowlist entry for it, and B4's euro " + "conversion of the donor inputs it reads." +) + +# Declared ratio pairs from the FPB June 2026 outlook. Each pair is one +# published annex row at two periods; its numerator is FPB's 2026 projection +# and its denominator the observed value at the base fact's own period, so +# rolled_forward_by_ratio applies base * numerator / denominator. The reviewed +# lexical tokens are assertions of the feed, never arithmetic inputs. The +# series choice for each pair is a B3 proposal (reported as a finding). +AGEING_PAIRS = { + "fpb_t07_total_population": { + "row": "labour_market.levels.total_population", + "operands": {2023: "11730600", 2026: "11896000"}, + "use": "calibration", + "reason": "Declaration counts follow resident population (August's alignment); A.1 band counts and B.4 type counts share this pair so the bands still sum to B.4's joint plus individual total.", + }, + "fpb_t11_total_resources": { + "row": "household_account.total_resources", + "operands": {2023: "518286000000", 2026: "571010000000"}, + "use": "calibration", + "reason": "Net professional income mixes wages, replacement incomes, pensions and profits; the household account's total resources is the one FPB row spanning them (August's resource alignment).", + }, + "fpb_t11_actual_social_contributions": { + "row": "household_account.actual_social_contributions", + "operands": {2024: "94613000000", 2026: "101300000000"}, + "use": "calibration", + "reason": "Employee personal contributions follow FPB's actual social contributions; gross wages stay free for the wage-headline holdout.", + }, + "fpb_t24_social_security_cash_unemployment": { + "row": "social_benefits_detail.social_security_cash_unemployment", + "operands": {2025: "5602000000", 2026: "4255000000"}, + "use": "calibration", + "reason": "The target's own series, FPB T24 line a., rolled by its 2026/2025 step. unemployment_series_choice in the inventory compares it with the larger line 4.", + }, + "fpb_t24_federal_cash_income_guarantee_for_older_people": { + "row": "social_benefits_detail.federal_government_cash_income_guarantee_for_older_people", + "operands": {2025: "1025000000", 2026: "1034000000"}, + "use": "calibration", + "reason": "The target's own series (GRAPA).", + }, + "fpb_t11_net_mixed_income": { + "row": "household_account.net_mixed_income", + "operands": {2025: "39834000000", 2026: "41044000000"}, + "use": "calibration", + "reason": "The target's own series (BE-MC3 self-employment aggregate).", + }, + "fpb_t17_direct_taxes_households": { + "row": "general_government_account.direct_taxes_households", + "operands": {2025: "77771000000", 2026: "81561000000"}, + "use": "holdout", + "reason": "Government direct taxes on households, the FPB counterpart of D51A_C1.", + }, + "fpb_t06_net_national_disposable_income": { + "row": "national_income_account.net_national_disposable_income", + "operands": {2024: "500699000000", 2026: "534156000000"}, + "use": "holdout", + "reason": "FPB publishes no household disposable income; national net disposable income is the nearest disposable-income row (a proxy).", + }, + "fpb_t11_social_benefits": { + "row": "household_account.social_benefits", + "operands": {2024: "124608000000", 2026: "132674000000"}, + "use": "holdout", + "reason": "The household account row matching Eurostat D62 received.", + }, + "fpb_t11_social_contributions": { + "row": "household_account.social_contributions", + "operands": {2024: "112346000000", 2026: "120094000000"}, + "use": "holdout", + "reason": "The household account row matching Eurostat D61 paid.", + }, + "fpb_t11_current_taxes_on_income_and_wealth": { + "row": "household_account.current_taxes_on_income_and_wealth", + "operands": {2024: "77033000000", 2026: "83113000000"}, + "use": "holdout", + "reason": "The household account row matching Eurostat D5 paid.", + }, + "fpb_t11_gross_wages_and_salaries": { + "row": "household_account.gross_wages_and_salaries", + "operands": {2025: "240536000000", 2026: "247221000000"}, + "use": "holdout", + "reason": "The card's wage-headline comparator (FPB salaires bruts), rolled by its own 2026/2025 step.", + }, +} +# Observed FPB levels the inventory splits each pair at (2025 is the last +# observed year); reviewed like the pair operands. +FPB_OBSERVED_2025 = { + "fpb_t07_total_population": "11850400", + "fpb_t11_total_resources": "554117000000", + "fpb_t11_actual_social_contributions": "98402000000", + "fpb_t06_net_national_disposable_income": "519140000000", + "fpb_t11_social_benefits": "128659000000", + "fpb_t11_social_contributions": "116379000000", + "fpb_t11_current_taxes_on_income_and_wealth": "79273000000", +} +# G8-r2 factors need operands with dated period coverage. FPB's annex facts +# carry none, so the only Belgian operands the resolver can authenticate are +# RSZ's annual wage totals: diagnostic cross-checks of the observed segment of +# the wage-driven pairs, never profile or money-normalization inputs. +# FPB T24 prints unemployment twice. The pair takes line a.; these reviewed 2025 +# levels keep the inventory's comparison with line 4 tied to the feed. +T24_UNEMPLOYMENT_2025 = { + "chosen": ("social_security_cash_unemployment", "5602000000"), + "alternative": ("social_security_cash_unemployment_total", "6510000000"), + "company_supplement": ( + "social_security_cash_unemployment_with_company_supplement", + "167000000", + ), + "career_breaks": ( + "social_security_cash_career_breaks_and_time_credit", + "740000000", + ), +} +RSZ_SOURCE_SHA256 = "7f97f510d332a0966b1afba110ce448f4a4a83d9d58fd5c3bb4d8d36d1aeca97" +RSZ_OPERANDS = {2023: "160796591.5", 2024: "165739460", 2025: "171074878.6"} +RSZ_FACTORS = { + "rsz_ordinary_remuneration_cy2023_to_cy2025_observed": (2023, 1063921), + "rsz_ordinary_remuneration_cy2024_to_cy2025_observed": (2024, 1032192), +} +FACTOR_VALIDITY = { + "declared_on": "2026-11-01", + "valid_from": "2026-11-01", + "valid_until": "2027-06-30", + "as_of": "2026-11-01", +} +# Chronicle labels Statbel's regions NUTS_2024, while the typed geography layer +# names vintage:be_nuts1_2025 and its closed alias set admits no NUTS label. +# Each selector keeps Chronicle's label, and its row names the layer's typed +# authority, so an unreviewed label refuses at generation. +GEOGRAPHY_VINTAGES = { + "nuts1": ("NUTS_2024", "vintage:be_nuts1_2025"), + "commune": ("nis_2025", "vintage:be_nis_2025"), +} +TRANSPORTED_INPUTS = {"employment_income", "nonfarm_self_employment_income"} +# BE-MC3's quantile surfaces (B4a). RSZ T17 counts employees at the end of +# 2026-Q1 by daily-wage class, age and sex; each class spans one record set per +# sex, so a class's row sums its 24 age and sex cells. T17 prints its classes as +# bare labels, so their edges are reviewed here, in EUR a day: each class runs +# from its printed lower bound up to the next class's lower bound. +WAGE_SPEC = "rsz.t17.daily_wage_class.v1" +WAGE_CROSS_CHECK_SPEC = "rsz.t7.daily_wage_class.v1" +WAGE_PERIOD = "2026-Q1" +WAGE_MEASURE = "employed_workers" +WAGE_CLASS = "rsz.daily_wage_class" +WAGE_UNKNOWN_CLASS = "Onbekend-Inconnu" +WAGE_CLASSES = ( + ("lt100", "<100", 0, 100), + ("100_149", "100 - 149", 100, 150), + ("150_199", "150 - 199", 150, 200), + ("200_299", "200 - 299", 200, 300), + ("300_plus", ">= 300", 300, None), +) +WAGE_CONTRACT = "rsz_employed_workers_by_daily_wage_class" +# SFPD group 1: every legal-pension recipient (employees and self-employed), +# all careers, categories and sexes, by gross monthly amount on 1 January 2025. +# Chronicle publishes each band's bounds as universe constraints. +PENSION_RECORD_SET = "sfpd.amount_bands.jan2025.group1.recipients" +PENSION_BAND = "sfpd.monthly_amount_band" +PENSION_AMOUNT = "sfpd.monthly_amount" +PENSION_TOTAL_LABEL = "Totaal" +PENSION_COHORT = { + "sfpd.career": "Alle loopbanen", + "sfpd.pension_category": "Totaal", + "sfpd.population": "Pensioengerechtigden (werknemers en zelfstandigen)", + "sfpd.sex": "Mannen en vrouwen", +} +PENSION_CONTRACT = "sfpd_legal_pension_recipients_by_monthly_amount_band" +PENSION_STATUS = "requires_pension_route_d1902" +PENSION_REASON = ( + "B4a: SFPD's January 2025 amount bands are BE-MC3's legal-pension quantile " + "surface, but nothing may read them until shared rank_only support lands. " + "The shared transport rule drops the donor's public pension, so a shared " + "change, still to be agreed with the NZ hub, must keep the donor's receipt " + "for ranking only, isolated from destination income, before Belgian amounts " + "are assigned. d1902 also settles the pension route and how these monthly " + "amounts are annualized." +) +SURFACE_RESOURCE = "quantile_surfaces.json" +PROVIDERS = { + "statbel": "Statbel", + "fpb": "Federal Planning Bureau", + "onss": "National Social Security Office", + "onem": "National Employment Office", + "eurostat": "Eurostat", + "nbb": "National Bank of Belgium", + "sfpd": "Federal Pension Service", +} +CATEGORIES = { + "statbel.demography": ("statbel", "Demography"), + "statbel.geography_support": ("statbel", "Geography support"), + "onss.wage_distribution": ("onss", "Daily-wage distribution"), + "sfpd.pension_distribution": ("sfpd", "Legal-pension amount distribution"), + "statbel.fiscal_income": ("statbel", "Fiscal income"), + "statbel.income_tax": ("statbel", "Assessed income tax"), + "onss.social_security": ("onss", "Social security contributions"), + "onem.caseloads": ("onem", "Benefit caseloads"), + "fpb.benefit_expenditure": ("fpb", "Benefit expenditure"), + "fpb.self_employment": ("fpb", "Self-employment income"), + "fpb.household_account": ("fpb", "Household account"), + "eurostat.income_tax": ("eurostat", "Income tax revenue"), + "eurostat.household_accounts": ("eurostat", "Household accounts"), + "nbb.national_accounts": ("nbb", "National accounts"), +} +DEFERRED_JRC = ( + "jrc-euromod-be-baseline-statistics-2025 is outside the Chronicle be suite " + "while d1822 (move it to the scorecard, its only consumer) is open; no " + "reference selects JRC. August took two calibration rows from it: the " + "unemployment recipient count, now read from ONEM/RVA's own 2024 count " + "(a different concept, parked), and the RIS amount and recipient count, " + "for which the suite holds no source, so no RIS reference exists." +) + + +def _token(value): + if isinstance(value, LexicalFloat): + return value.lexical_token + if isinstance(value, bool) or not isinstance(value, (int, float)): + raise ValueError(f"Non-numeric fact value {value!r}") + return repr(value) if isinstance(value, float) else str(value) + + +def _belgian(fact, communes=None): + """Refuse any fact outside Belgium before a selector can name it.""" + + geography = fact["geography"] + level, area = geography["level"], geography["id"] + if ( + (level == "country" and area == "BE") + or (level == "nuts1" and area in REGIONS) + or ( + level == "commune" + and re.fullmatch(r"[1-9][0-9]{4}", area) + and (communes is None or area in communes) + ) + ): + return fact + raise ValueError( + f"Belgian selectors read Belgian facts only; got {level} {area!r} " + f"({fact['aggregate_fact_key']})." + ) + + +# _selector, Inventory and _typed_equal follow tools/generate_nz_target_references.py +# (copied, not imported: Belgium must not bind to NZ's generator module). +def _selector(fact, *, pin_key=True): + _belgian(fact) + measure, geography = fact["observed_measure"], fact["geography"] + result = { + "source_name": measure["source_name"], + "source_measure_id": measure["source_measure_id"], + "source_concept": measure["source_concept"], + "entity_name": fact["entity"]["name"], + "period_type": fact["period"]["type"], + "period_value": fact["period"]["value"], + "geography_level": geography["level"], + "geography_id": geography["id"], + "geography_vintage": geography["vintage"], + "record_set_id": fact["layout"]["record_set_id"], + "dimensions": list(fact["dimensions"]), + } + if fact["dimensions"]: + result["dimension_values"] = dict(fact["dimensions"]) + if pin_key: + result["aggregate_fact_key"] = fact["aggregate_fact_key"] + return result + + +class Inventory: + def __init__(self, facts): + self.by_record_set, self.by_spec = {}, {} + for fact in facts: + layout = fact.get("layout", {}) + self.by_record_set.setdefault(layout.get("record_set_id"), []).append(fact) + self.by_spec.setdefault(layout.get("record_set_spec_id"), []).append(fact) + + def cells( + self, + record_set=None, + *, + spec=None, + measure=None, + geography=None, + period=None, + dimensions=None, + ): + result = ( + self.by_record_set.get(record_set, []) + if spec is None + else self.by_spec.get(spec, []) + ) + if measure is not None: + result = [ + f + for f in result + if f["observed_measure"]["source_measure_id"] == measure + ] + if geography is not None: + result = [f for f in result if f["geography"]["id"] == geography] + if period is not None: + result = [f for f in result if f["period"]["value"] == period] + if dimensions is not None: + result = [f for f in result if _typed_equal(f["dimensions"], dimensions)] + return result + + def one(self, *args, **kwargs): + matches = self.cells(*args, **kwargs) + if len(matches) != 1: + raise ValueError( + f"Expected one source cell for {args!r} {kwargs!r}; found {len(matches)}" + ) + return _belgian(matches[0]) + + +def _typed_equal(actual, expected): + return actual.keys() == expected.keys() and all( + type(actual[k]) is type(v) and actual[k] == v for k, v in expected.items() + ) + + +def _eurostat(inventory, spec, period, **dimensions): + matches = [ + fact + for fact in inventory.cells(spec=spec, geography="BE", period=period) + if all( + fact["dimensions"].get(key) == value for key, value in dimensions.items() + ) + ] + if len(matches) != 1: + raise ValueError(f"Expected one Eurostat cell {spec} {period} {dimensions}") + return _belgian(matches[0]) + + +def _fpb(inventory, row, period): + fact = inventory.one( + f"{FPB}cy{period}.{row}", geography="BE", dimensions={}, period=period + ) + if fact["observed_measure"]["source_name"] != "fpb_economic_outlook": + raise ValueError(f"FPB row {row} is not an FPB outlook fact") + return fact + + +def _pair(inventory, pair_id, base_period): + """Return the reviewed numerator/denominator facts of one declared pair.""" + + pair = AGEING_PAIRS[pair_id] + if set(pair["operands"]) != {base_period, POLICY_YEAR}: + raise ValueError(f"{pair_id} is declared for {sorted(pair['operands'])}") + numerator = _fpb(inventory, pair["row"], POLICY_YEAR) + denominator = _fpb(inventory, pair["row"], base_period) + for fact, period, assertion in ( + (numerator, POLICY_YEAR, "source_projection"), + (denominator, base_period, "observation"), + ): + if ( + _token(fact["value"]) != pair["operands"][period] + or fact["assertion"] != assertion + ): + raise ValueError(f"Reviewed FPB operand {pair_id} {period} changed") + if ( + numerator["layout"]["record_set_spec_id"] + != denominator["layout"]["record_set_spec_id"] + or numerator["layout"]["source_row_id"] + != denominator["layout"]["source_row_id"] + or numerator["observed_measure"]["source_concept"] + != denominator["observed_measure"]["source_concept"] + ): + raise ValueError(f"{pair_id} numerator and denominator are not one row") + return numerator, denominator + + +def _operand(role, fact): + selector = _selector(fact) + selector["assertion"] = fact["assertion"] + return {"role": role, **selector} + + +def _roll(reference, pair_id, numerator, denominator, *, base_fact=None, members=None): + base = {"role": "base"} + selector = reference["ledger_selector"] + selector["assertion"] = "observation" + if members is not None: + dimension, values = members + base["expected_member_count"] = len(values) + selector.pop("aggregate_fact_key") + selector["dimension_values"][dimension] = list(values) + reference.update( + { + "value_operation": "rolled_forward_by_ratio", + "value_operands": [ + base, + _operand("numerator", numerator), + _operand("denominator", denominator), + ], + "period": POLICY_YEAR, + "period_match_policy": "latest_not_after", + "assertion_policy": "allow_source_projection", + } + ) + if base_fact is not None and _value(base_fact) == _value(denominator): + # A base equal to the denominator makes the target FPB's 2026 + # projection of the row: declared, not hidden. + reference["metadata"]["ageing_target_equals"] = ( + "FPB's 2026 projection of the base's own row" + if base_fact["aggregate_fact_key"] == denominator["aggregate_fact_key"] + else "FPB's 2026 projection of the pair's row: the base equals its denominator" + ) + reference["metadata"].update( + { + "ageing": "rolled_forward_by_ratio", + "ageing_pair": pair_id, + "ageing_source": "FPB Economic Outlook 2026-2031, June 2026 annex", + "source_period": str(denominator["period"]["value"]), + "target_period": str(POLICY_YEAR), + } + ) + + +def _vintage_authority(fact): + """Return a subnational fact's typed authority; refuse an unreviewed label.""" + + geography = fact["geography"] + if geography["level"] == "country": + return None + vintage, authority = GEOGRAPHY_VINTAGES[geography["level"]] + if geography["vintage"] != vintage: + raise ValueError( + f"{geography['level']} fact carries vintage {geography['vintage']!r}; " + f"the reviewed mapping names {vintage!r}." + ) + return authority + + +def _measure_kind(measure): + if measure.startswith("belgium_"): + return "rules_output" + return "transported_input" if measure in TRANSPORTED_INPUTS else "prepared_column" + + +def _reference( + fact, + *, + name, + contract, + category, + entity, + measure, + family, + reference_set, + status, + method_card, + measure_kind, + reason=None, + filter_column=None, + period=None, + tolerance=None, +): + provider = CATEGORIES[category][0] + role = { + "calibration": "calibration", + "precal": "pre_calibration", + "holdout": "validation", + }[reference_set] + result = { + "name": name, + "ledger_selector": _selector(fact), + "entity": entity, + "measure": measure, + "period": fact["period"]["value"] if period is None else period, + "family": family, + "category_id": category, + "assertion_policy": "observed_only", + "metadata": { + "contract_target_id": contract, + "activation_status": status, + "criticality": "release_blocking" + if reference_set != "holdout" + else "diagnostic", + "measure_kind": measure_kind, + "publisher": PROVIDERS[provider], + "target_role": role, + "reference_set": reference_set, + "method_card_row": method_card, + "method_card_status": METHOD_CARD_STATUS, + }, + } + authority = _vintage_authority(fact) + if authority is not None: + result["metadata"].update( + geography_vintage=fact["geography"]["vintage"], + geography_vintage_authority=authority, + ) + if tolerance is not None: + result["metadata"]["fit_tolerance"] = tolerance + if filter_column is not None: + result["filter"] = filter_column + if reason: + result["metadata"]["parking_reason"] = reason + result["notes"] = reason + return result + + +def _hierarchy(rows, labels): + used = sorted({row["category_id"] for row in rows}) + return { + "providers": { + provider: {"label": PROVIDERS[provider]} + for provider in sorted({CATEGORIES[category][0] for category in used}) + }, + "categories": { + category: { + "provider_id": CATEGORIES[category][0], + "label": CATEGORIES[category][1], + } + for category in used + }, + "target_labels": { + contract: labels[contract] + for contract in sorted( + {row["metadata"]["contract_target_id"] for row in rows} + ) + }, + } + + +def _a1_classes(inventory): + """Read A.1's EUR 1,000 classes and their bounds from Chronicle's constraints.""" + + facts = inventory.cells( + A1.format(component="taxable_income"), measure="declarations", geography="BE" + ) + classes = [] + for fact in facts: + code = fact["dimensions"][A1_CLASS] + if code == "all": + continue + bounds = {"lower": None, "upper": None} + for row in fact["universe_constraints"]["constraints"]: + if row["variable"] != "tax_return.net_taxable_income": + continue + if row.get("unit") != "eur": + raise ValueError(f"A.1 class {code} bound is not in euros") + if row["operator"] in {">", ">="}: + bounds["lower"] = (row["value"], row["operator"]) + elif row["operator"] == "<": + bounds["upper"] = row["value"] + else: + raise ValueError(f"A.1 class {code} has operator {row['operator']}") + classes.append((bounds["lower"], bounds["upper"], code)) + classes.sort(key=lambda row: row[0][0]) + previous = None + for index, ((lower, operator), upper, code) in enumerate(classes): + if index == 0: + if (lower, operator) != (0, ">"): + raise ValueError("A.1's first class must exclude zero income") + elif (lower, operator) != (previous, ">="): + raise ValueError(f"A.1 class {code} leaves a gap or overlap") + previous = upper + if classes[-1][1] is not None or len(classes) != 101: + raise ValueError("A.1 must hold 101 classes ending in an open top class") + return [(lower, upper, code) for (lower, _), upper, code in classes] + + +def _band_members(classes): + members = {} + ends = {code: end for _, end, code in classes} + for band, lower, upper in STANDIN_BANDS: + inside = [ + code + for start, end, code in classes + if start >= lower and (upper is None or (end is not None and end <= upper)) + ] + edges = [start for start, _, code in classes if code in inside] + if not inside or edges[0] != lower or ends[inside[-1]] != upper: + raise ValueError(f"Band {band} does not sit on A.1 class edges") + members[band] = inside + flat = [code for band in members for code in members[band]] + if flat != [code for _, _, code in classes]: + raise ValueError("Stand-in bands must partition A.1's positive classes") + return members + + +def calibration_references(inventory, pairs, members): + rows, labels = [], {} + for region in REGIONS: + for sex in SEXES: + for band in AGE_BANDS: + fact = inventory.one( + STATBEL_POPULATION.format(year=POLICY_YEAR), + geography=region, + dimensions={"person.age_band": band, "person.sex": sex}, + ) + code = region.lower() + rows.append( + _reference( + fact, + name=f"statbel_population_by_region_sex_age__{code}__{sex}__a{band}", + contract="statbel_population_by_region_sex_age", + category="statbel.demography", + entity="person", + measure="people", + family="demography", + reference_set="calibration", + status="active", + method_card="BE-MC6", + measure_kind="prepared_column", + filter_column=f"population_region_{code}_{sex}_age_{band}_indicator", + tolerance="0.02", + ) + ) + rows[-1]["period_match_policy"] = "exact" + rows[-1]["metadata"].update( + { + "ageing": "none: observation for the target year", + "source_snapshot": "1 January 2026 resident population", + "target_period": str(POLICY_YEAR), + } + ) + labels["statbel_population_by_region_sex_age"] = ( + "Statbel resident population on 1 January 2026 by region, sex and age band" + ) + count_num, count_den = pairs["fpb_t07_total_population"] + money_num, money_den = pairs["fpb_t11_total_resources"] + for band, lower, upper in STANDIN_BANDS: + anchor = inventory.one( + A1.format(component="taxable_income"), + measure="declarations", + geography="BE", + dimensions={A1_CLASS: members[band][0]}, + ) + money_anchor = inventory.one( + A1.format(component="taxable_income"), + measure="taxable_income_eur", + geography="BE", + dimensions={A1_CLASS: members[band][0]}, + ) + for kind, fact, contract, measure, numerator, denominator, pair_id in ( + ( + "count", + anchor, + "statbel_a1_standin_declarations_by_band", + "tax_units", + count_num, + count_den, + "fpb_t07_total_population", + ), + ( + "money", + money_anchor, + "statbel_a1_standin_taxable_income_by_band", + STANDIN_MONEY_COLUMN, + money_num, + money_den, + "fpb_t11_total_resources", + ), + ): + row = _reference( + fact, + name=f"{contract.removesuffix('_by_band')}__{band}", + contract=contract, + category="statbel.fiscal_income", + entity="tax_unit", + measure=measure, + family="fiscal_income", + reference_set="calibration", + status="requires_prerequisites", + method_card="BE-MC5", + measure_kind="prepared_column", + reason=STANDIN_REASON, + filter_column=f"statbel_a1_standin_band_{band}_indicator", + tolerance="0.05", + ) + _roll( + row, pair_id, numerator, denominator, members=(A1_CLASS, members[band]) + ) + row["metadata"].update( + { + "reference_value_kind": kind, + "required_reference_profile": "aging_index", + "required_measurement_binding": STANDIN_MEASUREMENT, + "reference_prerequisites": json.dumps( + [ + "reference_profile:aging_index", + f"measurement:{STANDIN_MEASUREMENT}", + ], + separators=(",", ":"), + ), + "interval_table_id": STANDIN_TABLE, + "declaration_universe": DECLARATION_UNIVERSE, + "standin_band": band, + "standin_band_lower_eur_iy2023": str(lower), + "standin_band_upper_eur_iy2023": "open" + if upper is None + else str(upper), + } + ) + rows.append(row) + labels["statbel_a1_standin_declarations_by_band"] = ( + "Stand-in income (d1952): Statbel A.1 declarations by broad band of total " + "net taxable income, rolled to 2026 (parked)" + ) + labels["statbel_a1_standin_taxable_income_by_band"] = ( + "Stand-in income (d1952): Statbel A.1 total net taxable income by broad " + "band, rolled to 2026 (parked)" + ) + for declaration_type in ("joint", "individual"): + fact = inventory.one( + spec=B4, + measure="declarations", + geography="BE", + dimensions={ + "tax_return.age_band": "all", + "tax_return.decile": 1, + "tax_return.declaration_type": declaration_type, + }, + ) + row = _reference( + fact, + name=f"statbel_b4_declarations__{declaration_type}", + contract="statbel_b4_declarations_by_type", + category="statbel.fiscal_income", + entity="tax_unit", + measure="tax_units", + family="fiscal_income", + reference_set="calibration", + status="requires_declared_tax_units", + method_card="BE-MC4", + measure_kind="prepared_column", + reason=B4_REASON, + filter_column=f"{declaration_type}_declaration_indicator", + tolerance="0.05", + ) + _roll( + row, + "fpb_t07_total_population", + count_num, + count_den, + members=("tax_return.decile", list(range(1, 11))), + ) + row["metadata"].update( + reference_value_kind="count", declaration_universe=DECLARATION_UNIVERSE + ) + rows.append(row) + labels["statbel_b4_declarations_by_type"] = ( + "Statbel B.4 joint and individual declarations (all ages, deciles 1-10 " + "summed), rolled to 2026 (parked)" + ) + for group in B1_GROUPS: + fact = inventory.one( + spec=B1_VALUES if group.startswith("decile") else B1_PERCENTILES, + measure="total_tax_eur", + geography="BE", + dimensions={"tax_return.rank_group": group}, + ) + row = _reference( + fact, + name=f"statbel_b1_enrolled_tax__{group}", + contract="statbel_b1_enrolled_tax_by_rank_group", + category="statbel.income_tax", + entity="tax_unit", + measure="statbel_b1_enrolled_tax_proxy_v1_eur", + family="income_tax", + reference_set="calibration", + status="inactive_pending_b1_checks", + method_card="BE-MC5", + measure_kind="prepared_column", + reason=B1_REASON, + filter_column=f"statbel_b1_rank_group_{group}_indicator", + tolerance="0.05", + ) + row["signed"] = True + row["period_match_policy"] = "exact" + row["metadata"].update( + { + "ageing": "none declared: B.1 checks failed", + "reference_value_kind": "money", + "source_period": "2023", + } + ) + rows.append(row) + labels["statbel_b1_enrolled_tax_by_rank_group"] = ( + "Statbel B.1 total enrolled tax by decile 1-9 and top percentiles 91-100, " + "income year 2023 (inactive: checks failed)" + ) + onss = inventory.one( + spec="onss.contributions.worker_personal_contributions.country.v1", + geography="BE", + ) + row = _reference( + onss, + name="onss_worker_personal_contributions", + contract="onss_worker_personal_contributions", + category="onss.social_security", + entity="person", + measure="belgium_worker_article_17_uncapped_component_contribution", + family="social_security", + reference_set="calibration", + status="requires_rules_binding", + method_card="BE-MC6", + measure_kind="rules_output", + reason=RULES_REASON.format( + module="be/statutes/social_security/workers/contribution_rates.yaml" + ), + tolerance="0.05", + ) + _roll( + row, + "fpb_t11_actual_social_contributions", + *pairs["fpb_t11_actual_social_contributions"], + base_fact=onss, + ) + rows.append(row) + labels["onss_worker_personal_contributions"] = ( + "ONSS/RSZ worker-borne personal contributions, 2024, rolled to 2026 (parked)" + ) + onem = inventory.one( + spec="onem_rva.unemployment.complete_unemployment.country.v1", geography="BE" + ) + rows.append( + _reference( + onem, + name="onem_complete_unemployment_recipients", + contract="onem_complete_unemployment_recipients", + category="onem.caseloads", + entity="person", + measure="receives_unemployment_benefit", + family="caseloads", + reference_set="calibration", + status="requires_ageing_ruling_and_receipt_binding", + method_card="BE-MC6", + measure_kind="receipt_flag", + reason=( + "No declared ageing pair: FPB publishes jobseeker levels (BFP " + "unemployment, +0.6% 2026/2025), not benefit recipients, and its " + "unemployment benefit spending falls 24% in 2026, so the two " + "series point opposite ways and neither ages a recipient count. " + "Kept unaged at its 2024 source period. Also needs W3's receipt " + "contract for unemployment." + ), + tolerance="0.05", + ) + ) + rows[-1]["period_match_policy"] = "exact" + rows[-1]["metadata"]["ageing"] = "none declared: no recipient series" + labels["onem_complete_unemployment_recipients"] = ( + "ONEM/RVA complete-unemployment benefit recipients, 2024 monthly average " + "(parked, unaged)" + ) + for ( + name, + pair_id, + category, + entity, + measure, + family, + status, + method_card, + reason, + label, + ) in ( + ( + "fpb_unemployment_benefit_expenditure", + "fpb_t24_social_security_cash_unemployment", + "fpb.benefit_expenditure", + "household", + "belgium_unemployment_ordinary_annual_payable_amount", + "benefit_expenditure", + "requires_receipt_contract_and_rules_binding", + "BE-MC6", + RULES_REASON.format( + module="be/regulations/unemployment/pilot_oracle_pipeline.yaml" + ) + + " Unemployment history inputs and W3's receipt contract are also missing.", + "FPB social-security unemployment benefits, 2025, rolled to 2026 (parked)", + ), + ( + "fpb_grapa_expenditure", + "fpb_t24_federal_cash_income_guarantee_for_older_people", + "fpb.benefit_expenditure", + "person", + "belgium_grapa_income_guarantee_for_elderly_annual_amount", + "benefit_expenditure", + "requires_pension_route_d1902", + "BE-MC6", + "GRAPA is means-tested on pension income, and legal pensions are not " + "modelled until d1902 settles BE-MC3's pension route. " + + RULES_REASON.format( + module="be/statutes/income_guarantee_for_elderly/payable_amount.yaml" + ), + "FPB income guarantee for older people (GRAPA), 2025, rolled to 2026 (parked)", + ), + ( + "fpb_net_mixed_income", + "fpb_t11_net_mixed_income", + "fpb.self_employment", + "person", + "nonfarm_self_employment_income", + "self_employment", + "requires_currency_bridge_b4", + "BE-MC3", + "B4: BE-MC3 gives self-employment income FX and uprating only, then " + "calibrates its aggregate; the euro column has no producer until " + "B4's currency bridge. FPB's net mixed income also covers farm " + "income, which the donor carries separately.", + "FPB household net mixed income, 2025, rolled to 2026 (parked)", + ), + ): + numerator, denominator = pairs[pair_id] + fact = denominator + row = _reference( + fact, + name=name, + contract=name, + category=category, + entity=entity, + measure=measure, + family=family, + reference_set="calibration", + status=status, + method_card=method_card, + measure_kind=_measure_kind(measure), + reason=reason, + tolerance="0.05", + ) + _roll(row, pair_id, numerator, denominator, base_fact=fact) + rows.append(row) + labels[name] = label + return rows, labels + + +def precal_references(communes): + rows = [] + for code in sorted(communes): + fact = _belgian(communes[code], communes) + row = _reference( + fact, + name=f"statbel_population_by_commune__nis{code}", + contract="statbel_population_by_commune", + category="statbel.geography_support", + entity="person", + measure="people", + family="geography_support", + reference_set="precal", + status="active", + method_card="geography_spine", + measure_kind="prepared_column", + ) + row["metadata"].update( + { + "precal_use": "atomic_geography_support", + "ageing": "none: support shares at 1 January 2025", + } + ) + rows.append(row) + labels = { + "statbel_population_by_commune": "Statbel resident population by NIS 2025 commune, 1 January 2025 (atomic geography support)", + } + return rows, labels + + +def _decimal(value): + return Fraction(_token(value)) + + +def _number(value): + """An exact decimal edge as a JSON number: an integer when it is whole.""" + + return int(value) if value.denominator == 1 else float(value) + + +def _member_selector(facts): + """One selector that reads exactly ``facts`` through rosters, without keys. + + The members must agree on every scalar field. Dimensions that vary across + them become rosters and their record sets a list; the roster product must + equal the member count, so the rosters name no cell outside the members. + The resolved-read entry lists the members' keys. + """ + + selector = _selector(facts[0], pin_key=False) + varying = {"record_set_id", "dimension_values"} + for fact in facts[1:]: + other = _selector(fact, pin_key=False) + if {key: other[key] for key in other if key not in varying} != { + key: selector[key] for key in selector if key not in varying + }: + raise ValueError("Summed members disagree outside their dimension values") + selector["record_set_id"] = sorted( + {fact["layout"]["record_set_id"] for fact in facts} + ) + product = 1 + for name in selector["dimensions"]: + values = sorted({fact["dimensions"][name] for fact in facts}, key=str) + selector["dimension_values"][name] = values if len(values) > 1 else values[0] + product *= len(values) + keys = {fact["aggregate_fact_key"] for fact in facts} + if len(keys) != len(facts) or product != len(facts): + raise ValueError("Summed members must fill their roster product exactly once") + return selector + + +def _wage_classes(inventory): + """Return T17's cells at WAGE_PERIOD by class, each class one cell per age and sex. + + The quarter's labels must be exactly the reviewed classes plus unknown pay, + and each class must lie in one record set per sex. + """ + + cells = inventory.cells( + spec=WAGE_SPEC, measure=WAGE_MEASURE, geography="BE", period=WAGE_PERIOD + ) + expected = {label for _, label, _, _ in WAGE_CLASSES} | {WAGE_UNKNOWN_CLASS} + if {fact["dimensions"].get(WAGE_CLASS) for fact in cells} != expected: + raise ValueError(f"RSZ T17's {WAGE_PERIOD} daily-wage classes changed") + if {tuple(sorted(fact["dimensions"])) for fact in cells} != { + ("rsz.age_class", WAGE_CLASS, "rsz.sex") + }: + raise ValueError("RSZ T17 cells must carry exactly age, sex and wage class") + ages = sorted({fact["dimensions"]["rsz.age_class"] for fact in cells}) + sexes = sorted({fact["dimensions"]["rsz.sex"] for fact in cells}) + grid = sorted((age, sex) for age in ages for sex in sexes) + by_class = {} + for label in sorted(expected): + members = [ + _belgian(fact) for fact in cells if fact["dimensions"][WAGE_CLASS] == label + ] + record_sets = {} + for fact in members: + record_sets.setdefault(fact["layout"]["record_set_id"], set()).add( + fact["dimensions"]["rsz.sex"] + ) + if ( + sorted( + (fact["dimensions"]["rsz.age_class"], fact["dimensions"]["rsz.sex"]) + for fact in members + ) + != grid + or len(record_sets) != len(sexes) + or any(len(owned) != 1 for owned in record_sets.values()) + or any(not name.endswith(f".{WAGE_MEASURE}") for name in record_sets) + or any( + fact["entity"]["name"] != "person" + or fact["observed_measure"]["unit"] != "count" + or fact["period"]["type"] != "quarter" + or fact["assertion"] != "observation" + for fact in members + ) + ): + raise ValueError(f"RSZ T17 class {label!r} is not one cell per age and sex") + by_class[label] = members + return by_class, ages, sexes + + +def wage_surface_references(inventory): + """Five precal rows, one per known-pay class, each summing its 24 cells.""" + + by_class, ages, sexes = _wage_classes(inventory) + rows = [] + for slug, label, lower, upper in WAGE_CLASSES: + members = by_class[label] + row = _reference( + members[0], + name=f"{WAGE_CONTRACT}__{slug}", + contract=WAGE_CONTRACT, + category="onss.wage_distribution", + entity="person", + measure="people", + family="wage_distribution", + reference_set="precal", + status="active", + method_card="BE-MC3", + measure_kind="prepared_column", + ) + row["ledger_selector"] = _member_selector(members) + row["value_operation"] = "sum" + row["expected_member_count"] = len(members) + row["period_match_policy"] = "exact" + row["metadata"].update( + { + "precal_use": "quantile_surface:wages", + "quantile_surface_resource": SURFACE_RESOURCE, + "daily_wage_class": label, + "daily_wage_lower_eur": str(lower), + "daily_wage_upper_eur": "open" if upper is None else str(upper), + "ageing": "none: quarter-end stock on 31 March 2026", + "source_snapshot": "RSZ/ONSS employees at the end of 2026-Q1", + } + ) + rows.append(row) + labels = { + WAGE_CONTRACT: ( + "RSZ/ONSS employees on 31 March 2026 by daily-wage class, summed over " + "age and sex (wage quantile surface)" + ) + } + return rows, labels, {"by_class": by_class, "ages": ages, "sexes": sexes} + + +_PENSION_LABEL = re.compile( + r"(?P[0-9.]+,[0-9]{2})(?: - (?P[0-9.]+,[0-9]{2})| en >)" +) + + +def _printed_eur(text): + return Fraction(text.replace(".", "").replace(",", ".")) + + +def _pension_bands(facts): + """Read SFPD's bands from Chronicle's universe constraints, tiled half-open. + + Chronicle bounds each band lower <= amount <= upper in euro cents, and the + top band below only. Each surface band runs from its lower bound to the + next band's, which must sit exactly one cent above its upper bound; the + printed label must state the same bounds. No band may end below its lower + bound, so the floors rise strictly and no surface band is empty. + """ + + cent = Fraction(1, 100) + bands = [] + for fact in facts: + label = fact["dimensions"][PENSION_BAND] + bounds = {} + for row in fact["universe_constraints"]["constraints"]: + if row["variable"] != PENSION_AMOUNT: + continue + if ( + row.get("unit") != "eur" + or row["operator"] not in {">=", "<="} + or row["operator"] in bounds + ): + raise ValueError(f"SFPD band {label!r} has an unexpected bound") + bounds[row["operator"]] = _decimal(row["value"]) + printed = _PENSION_LABEL.fullmatch(label) + if ( + printed is None + or bounds.get(">=") != _printed_eur(printed["lower"]) + or bounds.get("<=") + != (None if printed["upper"] is None else _printed_eur(printed["upper"])) + ): + raise ValueError(f"SFPD band {label!r} disagrees with its constraints") + bands.append((bounds[">="], bounds.get("<="), label, fact)) + bands.sort(key=lambda band: band[0]) + if not bands or bands[0][0] != cent: + raise ValueError("SFPD's first band must start at one cent") + tiled = [] + for index, (lower, last_cent, label, fact) in enumerate(bands): + following = bands[index + 1][0] if index + 1 < len(bands) else None + if last_cent is not None and last_cent < lower: + raise ValueError(f"SFPD band {label!r} ends below its lower bound") + if (following is None) != (last_cent is None) or ( + following is not None and last_cent + cent != following + ): + raise ValueError(f"SFPD band {label!r} leaves a gap or overlap") + tiled.append((lower, following, last_cent, label, fact)) + return tiled + + +def _edge_text(edge): + return str(edge) if edge.denominator == 1 else str(float(edge)) + + +def _edge_slug(edge): + return _edge_text(edge).replace(".", "_") + + +def pension_surface_references(inventory): + """Twenty-six parked precal rows, one per SFPD group 1 amount band.""" + + facts = inventory.cells(PENSION_RECORD_SET, measure="recipients", geography="BE") + for fact in facts: + _belgian(fact) + dimensions = dict(fact["dimensions"]) + dimensions.pop(PENSION_BAND, None) + if ( + dimensions != PENSION_COHORT + or fact["entity"]["name"] != "person" + or fact["observed_measure"]["unit"] != "count" + or fact["period"] != {"type": "month", "value": "2025-01"} + or fact["assertion"] != "observation" + ): + raise ValueError("SFPD group 1 left its reviewed cohort") + (total,) = [ + fact + for fact in facts + if fact["dimensions"][PENSION_BAND] == PENSION_TOTAL_LABEL + ] + bands = _pension_bands([fact for fact in facts if fact is not total]) + if len(bands) != 26 or sum( + (_value(band[-1]) for band in bands), Fraction() + ) != _value(total): + raise ValueError("SFPD's 26 bands must sum to their published total") + rows = [] + for lower, upper, _, label, fact in bands: + row = _reference( + fact, + name=( + f"{PENSION_CONTRACT}__{_edge_slug(lower)}_" + + ("plus" if upper is None else f"to_{_edge_slug(upper)}") + ), + contract=PENSION_CONTRACT, + category="sfpd.pension_distribution", + entity="person", + measure="people", + family="pension_distribution", + reference_set="precal", + status=PENSION_STATUS, + method_card="BE-MC3", + measure_kind="prepared_column", + reason=PENSION_REASON, + ) + row["period_match_policy"] = "exact" + row["metadata"].update( + { + "precal_use": "quantile_surface:legal_pensions", + "quantile_surface_resource": SURFACE_RESOURCE, + "monthly_amount_band": label, + "band_lower_eur": _edge_text(lower), + "band_upper_eur": "open" if upper is None else _edge_text(upper), + "ageing": "none: beneficiary stock on 1 January 2025, monthly amounts", + "source_snapshot": "SFPD legal-pension beneficiaries on 1 January 2025", + } + ) + rows.append(row) + labels = { + PENSION_CONTRACT: ( + "SFPD legal-pension recipients (employees and self-employed) on " + "1 January 2025 by gross monthly amount band (pension quantile " + "surface, parked)" + ) + } + return rows, labels, {"bands": bands, "total": total} + + +def _surface_document(wage_rows, pension_rows, pensions): + """The band resource: each band_document is transport.quantile_map@1's bands.""" + + wage_bands = [ + (row["name"], label, lower, upper) + for row, (_, label, lower, upper) in zip(wage_rows, WAGE_CLASSES, strict=True) + ] + pension_bands = [ + (row["name"], label, lower, upper, last_cent) + for row, (lower, upper, last_cent, label, _) in zip( + pension_rows, pensions["bands"], strict=True + ) + ] + return { + "schema_version": 1, + "country": "be", + "generated_by": "tools/generate_be_target_references.py", + "description": ( + "BE-MC3's quantile-map surfaces (B4a), proposed pending d1902. Each " + "band_document is the bands parameter transport.quantile_map@1 takes " + "verbatim; its references name precal_references.json rows, which " + "compile into the target surface the kernel reads. Everything else " + "stays outside band_document, because the kernel refuses any key " + "beside its band lists. No graph reads this resource: Belgium has no " + "transport_graph.json and stays inactive. Counts stay in Chronicle; " + "reference_inventory.json records the evidence." + ), + "status": METHOD_CARD_STATUS, + "method_card_row": "BE-MC3", + "reference_resource": "precal_references.json", + "wages": { + "status": METHOD_CARD_STATUS, + "activation": ( + "Not read by any graph. Nothing may map donor wages onto these " + "edges until d1902 picks the annual-to-daily conversion and the " + "coverage rule (choices 21 to 23)." + ), + "ranked_entity": "person", + "donor_column": "employment_income", + "unit": "eur_per_day", + "source_period": WAGE_PERIOD, + "source": ( + "RSZ/ONSS quarterly labour-market tables, T17 (daily-wage class, " + f"age and sex), record set spec {WAGE_SPEC}, measure " + f"{WAGE_MEASURE}" + ), + "cohort": ( + "Employees registered with RSZ/ONSS at the end of the first " + "quarter of 2026, a quarter-end stock on 31 March 2026. " + "Chronicle's coverage note: it counts inbound cross-border " + "workers and leaves out posted workers and the self-employed. " + "BE-MC3 records that the classes rank normalized daily pay of the " + "main job, without bonuses, 13th month or double holiday pay. It " + "is not a distribution of resident earners over a year." + ), + "coverage": ( + "The five known-pay classes only. T17's unknown-pay class " + f"({WAGE_UNKNOWN_CLASS}) has no numeric interval and gets no " + "band, so the shares rank known pay only (d1902 choice 22)." + ), + "conversion": ( + "The donor's employment_income is annual gross pay from all " + "employee jobs, bonuses included; these edges are euros a day. " + "Nothing may map donor wages onto them until d1902 picks the " + "annual-to-daily conversion (choice 23)." + ), + "edge_closure": ( + "Left-closed: each class runs from its printed lower bound up to " + "the next class's lower bound, so '100 - 149' is [100, 150)." + ), + "top_band": ( + "Open from EUR 300 a day. Uniform interpolation refuses an open " + "top band; the tail is d1902 choice 24." + ), + "band_provenance": [ + { + "reference": name, + "printed_label": label, + "lower": lower, + "upper": upper, + } + for name, label, lower, upper in wage_bands + ], + "band_document": { + "bands": [ + {"lower": lower, "upper": upper, "reference": name} + for name, _, lower, upper in wage_bands + ] + }, + }, + "legal_pensions": { + "status": METHOD_CARD_STATUS, + "activation": ( + f"Parked: its references carry activation_status {PENSION_STATUS} " + "and refuse compilation until shared rank_only support lands and " + "d1902 settles the pension route (choice 25)." + ), + "ranked_entity": "person", + "donor_column": None, + "donor_column_note": ( + "None yet: the shared transport rule drops the donor's " + "public_pension_income, so no donor column carries pension ranks " + "until shared rank_only support keeps the receipt for ranking only." + ), + "unit": "eur_per_month", + "source_period": "2025-01", + "source": ( + "SFPD Jaarlijkse statistiek 2025, amount bands of group 1, record " + f"set {PENSION_RECORD_SET}" + ), + "cohort": ( + "Legal-pension beneficiaries of the employee and self-employed " + "schemes, all careers, pension categories and sexes, a stock on " + "1 January 2025." + ), + "coverage": ( + "Gross monthly payment. Includes beneficiaries residing abroad and " + "excludes public-sector pension amounts. The Totaal row and the " + "monthly_expenditure_eur measure are not bands." + ), + "annualization": ( + "Monthly euros, not annualized. Multiplying January by 12 repeats " + "one month's amount rather than observing an annual pension; it " + "is d1902's choice (25) and is not applied here." + ), + "edge_closure": ( + "Chronicle bounds each band lower <= amount <= upper in cents; each " + "surface band runs half-open to the next band's lower bound, one " + "cent above, so '0,01 - 124,99' is [0.01, 125)." + ), + "top_band": ( + "Open from EUR 3,125 a month. Uniform interpolation refuses an " + "open top band, and no d1902 choice yet names the pension tail." + ), + "band_provenance": [ + { + "reference": name, + "printed_label": label, + "source_lower_eur": _edge_text(lower), + "source_upper_eur": None + if last_cent is None + else _edge_text(last_cent), + "lower": _number(lower), + "upper": None if upper is None else _number(upper), + } + for name, label, lower, upper, last_cent in pension_bands + ], + "band_document": { + "bands": [ + { + "lower": _number(lower), + "upper": None if upper is None else _number(upper), + "reference": name, + } + for name, _, lower, upper, _ in pension_bands + ] + }, + }, + } + + +def _surface_evidence(inventory, wage_rows, wages, pension_rows, pensions): + """Counts behind the surfaces, so tests can close them without the feed.""" + + def workers(facts): + return sum((_value(fact) for fact in facts), Fraction()) + + by_class = wages["by_class"] + known = sum( + (workers(by_class[label]) for _, label, _, _ in WAGE_CLASSES), Fraction() + ) + unknown = workers(by_class[WAGE_UNKNOWN_CLASS]) + table = workers( + inventory.cells( + spec=WAGE_SPEC, measure=WAGE_MEASURE, geography="BE", period=WAGE_PERIOD + ) + ) + t7 = {} + for fact in inventory.cells( + spec=WAGE_CROSS_CHECK_SPEC, + measure=WAGE_MEASURE, + geography="BE", + period=WAGE_PERIOD, + ): + label = fact["dimensions"][WAGE_CLASS] + t7[label] = t7.get(label, Fraction()) + _value(fact) + total = pensions["total"] + band_sum = sum((_value(band[-1]) for band in pensions["bands"]), Fraction()) + return { + "resource": SURFACE_RESOURCE, + "wages": { + "record_set_spec_id": WAGE_SPEC, + "period": WAGE_PERIOD, + "measure": WAGE_MEASURE, + "age_classes": wages["ages"], + "sexes": wages["sexes"], + "members_per_class": len(wages["ages"]) * len(wages["sexes"]), + "classes": [ + { + "label": label, + "reference": row["name"], + "workers": float(workers(by_class[label])), + } + for row, (_, label, _, _) in zip(wage_rows, WAGE_CLASSES, strict=True) + ], + "unknown_pay": { + "label": WAGE_UNKNOWN_CLASS, + "workers": float(unknown), + "facts": _keyed(by_class[WAGE_UNKNOWN_CLASS], "aggregate_fact_key"), + }, + "known_pay_workers": float(known), + "table_workers": float(table), + "known_plus_unknown_equals_table": known + unknown == table, + "unknown_share_of_table": float(unknown / table), + "t7_cross_check": { + "record_set_spec_id": WAGE_CROSS_CHECK_SPEC, + "workers_by_class": { + label: float(t7[label]) for label in sorted(t7, key=str) + }, + "equals_t17_by_class": t7 + == {label: workers(facts) for label, facts in by_class.items()}, + "use": ( + "Diagnostic only: T7 crosses NACE 2025 activity, worker status " + "and sex; no reference reads it." + ), + }, + "measure_pin": ( + "employed_workers, never jobs: T17's jobs measure shares the " + "person entity, the count unit and the classes, so _surface_bands " + "cannot tell them apart; the generator and the package tests pin " + "the measure." + ), + }, + "legal_pensions": { + "record_set_id": PENSION_RECORD_SET, + "period": "2025-01", + "bands": [ + { + "label": label, + "reference": row["name"], + "recipients": float(_value(fact)), + } + for row, (_, _, _, label, fact) in zip( + pension_rows, pensions["bands"], strict=True + ) + ], + "band_recipients": float(band_sum), + "total_fact": { + "aggregate_fact_key": total["aggregate_fact_key"], + "label": PENSION_TOTAL_LABEL, + "recipients": float(_value(total)), + }, + "bands_sum_to_total": band_sum == _value(total), + "excluded": ( + "The Totaal row, which the bands sum to, and every " + "monthly_expenditure_eur fact. SFPD's other groups are not " + "stacked: groups 2 to 164 split group 1's population by career, " + "pension category and sex, and the FPD-beneficiary and IGO groups " + "count other beneficiary populations." + ), + }, + } + + +def holdout_references(inventory, pairs): + rows, labels = [], {} + d51 = _eurostat( + inventory, + "eurostat.gov_10a_taxag.income_tax_revenue_by_taxpayer.country.v1", + 2025, + na_item="D51A_C1", + sector="S13", + ) + nbb = inventory.one( + spec="nbb.national_accounts.household_disposable_income.country.v1", + geography="BE", + ) + wages = pairs["fpb_t11_gross_wages_and_salaries"][1] + + def nasa(item, direction): + return _eurostat( + inventory, + "eurostat.nasa_10_nf_tr.household_non_financial_transactions.direction.country.v1", + 2024, + na_item=item, + direct=direction, + sector="S14_S15", + ) + + declarations = ( + ( + d51, + "eurostat_d51a_c1_individual_income_tax", + "fpb_t17_direct_taxes_households", + "eurostat.income_tax", + "person", + "belgium_pit_federal_and_local_tax_before_withholding", + "income_tax", + "Eurostat D51A_C1 taxes on individual or household income, 2025, rolled to 2026", + "Accrual national-accounts revenue held out against assessed tax (BE-MC5). " + + RULES_REASON.format( + module="be/statutes/income_tax/individual/final_tax.yaml" + ), + ), + ( + nbb, + "nbb_household_gross_disposable_income", + "fpb_t06_net_national_disposable_income", + "nbb.national_accounts", + "household", + "household_gross_disposable_income_eur", + "national_accounts", + "NBB household gross disposable income (B6G), 2024, rolled to 2026", + "No producer: rulespec-be's disposable-income policy is a narrow worker bridge, not integrated disposable income.", + ), + ( + nasa("B6G", "RECV"), + "eurostat_household_gross_disposable_income", + "fpb_t06_net_national_disposable_income", + "eurostat.household_accounts", + "household", + "household_gross_disposable_income_eur", + "household_accounts", + "Eurostat household and NPISH gross disposable income (B6G), 2024, rolled to 2026", + "No producer, as for NBB's B6G. Eurostat's S14_S15 sector adds non-profit institutions to NBB's household figure.", + ), + ( + nasa("D62", "RECV"), + "eurostat_household_social_benefits_received", + "fpb_t11_social_benefits", + "eurostat.household_accounts", + "household", + "household_social_benefits_received_eur", + "household_accounts", + "Eurostat household social benefits received (D62), 2024, rolled to 2026", + "No producer: pensions (d1902), child benefits (not modelled at level) and unemployment receipts (W3) are missing.", + ), + ( + nasa("D61", "PAID"), + "eurostat_household_social_contributions_paid", + "fpb_t11_social_contributions", + "eurostat.household_accounts", + "household", + "household_social_contributions_paid_eur", + "household_accounts", + "Eurostat household social contributions paid (D61), 2024, rolled to 2026", + "No producer: employer and self-employed contributions are not bound (W3).", + ), + ( + nasa("D5", "PAID"), + "eurostat_household_current_taxes_paid", + "fpb_t11_current_taxes_on_income_and_wealth", + "eurostat.household_accounts", + "household", + "household_current_taxes_on_income_paid_eur", + "household_accounts", + "Eurostat household current taxes on income and wealth paid (D5), 2024, rolled to 2026", + "No producer: needs the PIT binding (W3) aggregated to households.", + ), + ( + wages, + "fpb_gross_wages_and_salaries", + "fpb_t11_gross_wages_and_salaries", + "fpb.household_account", + "person", + "employment_income", + "household_accounts", + "FPB gross wages and salaries (salaires bruts), 2025, rolled to 2026", + "The card's wage-headline comparator (BE-MC5): gross wages, not compensation including employer contributions. The euro wage column has no producer until B4's currency bridge.", + ), + ) + for ( + fact, + name, + pair_id, + category, + entity, + measure, + family, + label, + reason, + ) in declarations: + row = _reference( + fact, + name=name, + contract=name, + category=category, + entity=entity, + measure=measure, + family=family, + reference_set="holdout", + status="requires_holdout_measure", + method_card="BE-MC5", + measure_kind=_measure_kind(measure), + reason="Held out of calibration; compared, never fitted. " + reason, + ) + _roll(row, pair_id, *pairs[pair_id], base_fact=fact) + row["metadata"]["holdout_use"] = "validation_comparator" + rows.append(row) + labels[name] = label + return rows, labels + + +def _interval_document(classes, members): + bands = [] + bands.append( + { + "id": "nil", + "kind": "nil", + "indicator": "statbel_a1_standin_nil_indicator", + "source_label": "zero total net taxable income (outside A.1)", + } + ) + edges = {code: (lower, upper) for lower, upper, code in classes} + for band, lower, upper in STANDIN_BANDS: + if edges[members[band][0]][0] != lower or ( + edges[members[band][-1]][1] != upper + ): + raise ValueError(f"Band {band} edges differ from its member classes") + bands.append( + { + "id": band, + "kind": "positive", + "upper_cent": None if upper is None else upper * 100, + "indicator": f"statbel_a1_standin_band_{band}_indicator", + "source_label": f"A.1 classes {members[band][0]} to {members[band][-1]}", + } + ) + return { + "schema_version": 1, + "country": "be", + "description": "Generated by tools/generate_be_target_references.py from the class bounds Chronicle publishes on Statbel A.1 (universe constraints), checked to tile A.1's positive range without gaps.", + "disclosure": ( + "Statbel's labels ('Minder dan 1', '1-2', '100 en meer') do not state a " + "closure; Chronicle's A.1 universe constraints do: 0 < t < 1,000, then " + "lower <= t < upper, and t >= 100,000 for the open top class. The " + "table follows them: left-closed positive bands, a nil band for " + "t == 0 (Statbel counts zero-income declarations outside A.1, and " + "no reference fits the nil band, because the proxy's zeros are not " + "Statbel's zeros), negative proxy income floored to zero, integer " + "cents. Cuts are income-year-2023 euros and are not aged: no shared " + "operation scales them by a declared annual ratio pair, so the A.1 " + "references stay parked (BE-MC5, d1952; proposed pending d1902)." + ), + "tables": [ + { + "id": STANDIN_TABLE, + "entity": "tax_unit", + "currency": "EUR", + "input_unit": "integer_cent", + "income_column": STANDIN_INCOME_COLUMN, + "universe_column": STANDIN_UNIVERSE_COLUMN, + "source_period": 2023, + "target_period": POLICY_YEAR, + "positive_band_closure": "left", + "nil_band": "present", + "negative_income_policy": "floor_zero", + "first_lower_cut_cents": 0, + "source_locator": "Chronicle statbel.fiscal_income_distribution.a1.by_income_class_eur1000.v1, Belgium, taxable income classes", + "description": "The eight d1952 stand-in bands of total net taxable income, income year 2023, each an exact sum of A.1 EUR 1,000 classes.", + "diagnostics": { + "boundary_window_cents": 100, + "alternative_positive_band_closure": "right", + }, + "bands": bands, + } + ], + } + + +def _reference_profiles(): + return { + "schema_version": 1, + "factor_context_resource": "reference_aging.json", + "interval_resource": "reference_intervals.json", + "dimensions": { + "aging_index": { + "default": "central", + "profiles": { + "central": { + "deferred": True, + "notes": ( + "Declared but not executable: ageing the A.1 stand-in " + "band cuts to 2026 needs a shared operation that scales " + "interval cuts by a declared annual ratio pair, and " + "reference_aging.json holds no profile_input factor for " + "it. The profile is deferred, so the resolver applies " + "no transformation and the A.1 rows keep both " + "prerequisites." + ), + } + }, + } + }, + } + + +def _factor_validation(fact): + return { + "unit": fact["observed_measure"]["unit"], + "source_sha256": fact["source"]["source_sha256"], + "source_vintage": fact["source"]["vintage"], + "entity_role": fact["entity"]["role"], + "provenance_class": fact["provenance_class"], + "assertion": fact["assertion"], + "period_coverage": { + key: fact["period_coverage"][key] for key in ("start_date", "end_date") + }, + "source_column_id": fact["layout"]["source_column_id"], + } + + +def _rsz(inventory, year): + fact = inventory.one( + f"rsz.annual_wages.year{year}.ordinary_remuneration", + geography="BE", + dimensions={"rsz.annual_worker_type_sex": "total"}, + ) + if ( + _token(fact["value"]) != RSZ_OPERANDS[year] + or fact["source"]["source_sha256"] != RSZ_SOURCE_SHA256 + or fact["assertion"] != "observation" + ): + raise ValueError(f"Reviewed RSZ operand changed for {year}") + return fact + + +def build_aging_declarations(inventory, feed_identity): + """Declare the G8-r2 factors whose operands carry dated coverage.""" + + declarations = [] + target = _rsz(inventory, 2025) + for factor_id, (source_year, expected) in RSZ_FACTORS.items(): + source = _rsz(inventory, source_year) + + def slot(fact, *, is_target=False): + row = { + "selector": {**_selector(fact), "assertion": "observation"}, + "validation": _factor_validation(fact), + "weight": "1", + "sequence": 0, + } + if is_target: + row["projection_offset"] = 0 + return row + + declarations.append( + { + "schema_version": 1, + "id": factor_id, + "operation": "projected_period_average_ratio", + "operation_version": 1, + "purpose": "diagnostic", + "feed_identity": copy.deepcopy(feed_identity), + "source_period": source_year, + "target_period": 2025, + "source_schedule": [slot(source)], + "target_schedule": [slot(target, is_target=True)], + "growth": None, + "subperiods_per_year": 1, + "projection_policy": "observed_preferred_latest_contiguous", + "rounding": {"digits": 6, "mode": "nearest_half_even"}, + "expected_operational_factor": { + "numerator": expected, + "denominator": 1000000, + }, + "validity": dict(FACTOR_VALIDITY), + "evidence": [ + "RSZ/ONSS annual wages key figures (Kerncijfers), ordinary " + "remuneration, all employees, calendar years; pre-publication " + "raw data, 2024-2025 not final", + "Diagnostic cross-check of the observed segment of FPB " + "wage-driven ratio pairs; never a profile or money " + "normalization input", + ], + "decision_references": [ + "BE-MC0 (proposed pending d1902): targets rolled to 2026 by FPB June 2026 ratio pairs", + "G8-r2 factor resolver: projected_period_average_ratio@1", + ], + } + ) + return declarations + + +def build_reference_aging(inventory, feed_identity): + from microcosm.build.reference_factors import resolve_reference_factor + + factors = [] + for declaration in build_aging_declarations(inventory, feed_identity): + factor, receipt = resolve_reference_factor( + declaration, + [fact for rows in inventory.by_spec.values() for fact in rows], + feed_identity, + ) + factors.append( + { + "declaration": declaration, + "operational_factor": factor, + "receipt": receipt, + } + ) + return {"schema_version": 1, "feed_identity": feed_identity, "factors": factors} + + +def _value(fact): + return Fraction(_token(fact["value"])) + + +def _share(part, whole): + return float(part / whole) + + +def _standin_gaps(inventory, members): + def component(name, measure, codes): + return sum( + ( + _value( + inventory.one( + A1.format(component=name), + measure=measure, + geography="BE", + dimensions={A1_CLASS: code}, + ) + ) + for code in codes + ), + Fraction(), + ) + + def row(codes, label): + total = component("taxable_income", "taxable_income_eur", codes) + declarations = component("taxable_income", "declarations", codes) + shares = { + name: _share(component(name, measure, codes), total) + for name, measure, _ in A1_COMPONENTS + } + identity = component("professional_income", "professional_income_eur", codes) + for name, measure, role in A1_COMPONENTS[1:]: + value = component(name, measure, codes) + identity += -value if role == "gap_subtracted" else value + return { + "band": label, + "declarations_iy2023": float(declarations), + "taxable_income_eur_iy2023": float(total), + "component_shares_of_taxable_income": shares, + "omitted_share_gross": sum( + shares[name] for name, _, role in A1_COMPONENTS if role != "in" + ), + "omitted_share_net": 1 - shares["professional_income"], + "identity_residual_eur": float(identity - total), + } + + national = row(["all"], "all") + bands = [row(members[band], band) for band, _, _ in STANDIN_BANDS] + professional = _value( + inventory.one( + A1.format(component="professional_income"), + measure="declarations", + geography="BE", + dimensions={A1_CLASS: "all"}, + ) + ) + zero = _value( + inventory.one( + "statbel.fiscal_income_distribution.income_year2023.zero_income_declarations", + geography="BE", + ) + ) + return { + "measure": STANDIN_MEASUREMENT, + "unit": "tax declaration (S2-d tax_unit); joint declarations count once", + "in_measure": "net professional income, rule-computed from transported gross amounts", + "published_gaps": "Components of Statbel's total net taxable income left out of the stand-in, as shares of it (method card BE-MC5; d1952). Within bands they can be larger than nationally.", + "national": national, + "bands": bands, + "declarations_with_taxable_but_no_professional_income": float( + Fraction(national["declarations_iy2023"]) - professional + ), + "zero_income_declarations_outside_a1": float(zero), + "zero_handling": "The proxy's zeros (no professional income, or losses floored to zero) are not Statbel's zero-income declarations; the nil band is not fitted.", + "stress_test": "Declared, not executable in B3: rerun with unemployment and sickness benefits left out of the measure (d1952); a measurement variant owed by B4/W3.", + "pension_gap": "Legal pensions are part of net professional income but are not modelled until d1902 settles BE-MC3's pension route, so the proxy cannot yet represent pensioner declarations.", + } + + +def _b1_checks(inventory): + """Run the three BE-MC5 checks the artifact allows; B.1 activates only if all pass.""" + + def b1(spec, measure, group): + return _value( + inventory.one( + spec=spec, + measure=measure, + geography="BE", + dimensions={"tax_return.rank_group": group}, + ) + ) + + total_tax = b1(B1_VALUES, "total_tax_eur", "all") + spf = _value( + inventory.one( + spec="spf_finances.pit.tax_before_withholding.country.v1", geography="BE" + ) + ) + deciles = [f"decile_{decile:02d}" for decile in range(1, 11)] + decile_tax = sum((b1(B1_VALUES, "total_tax_eur", g) for g in deciles), Fraction()) + percentile_tax = sum( + ( + b1(B1_PERCENTILES, "total_tax_eur", f"percentile_{p:03d}") + for p in range(91, 101) + ), + Fraction(), + ) + negative = [g for g in deciles if b1(B1_VALUES, "total_tax_eur", g) < 0] + bounds = [b1(B1_BOUNDS, "upper_bound_eur", f"decile_{d:02d}") for d in range(1, 10)] + top_bounds = [ + b1(B1_PERCENTILE_BOUNDS, "upper_bound_eur", f"percentile_{p:03d}") + for p in range(91, 100) + ] + b1_income = b1(B1_VALUES, "taxable_income_eur", "all") + a1_income = _value( + inventory.one( + A1.format(component="taxable_income"), + measure="taxable_income_eur", + geography="BE", + dimensions={A1_CLASS: "all"}, + ) + ) + shares = sum( + (b1(B1_VALUES, "taxable_income_share", g) for g in deciles), Fraction() + ) + decile_10 = b1(B1_VALUES, "total_tax_eur", "decile_10") + note = inventory.one( + spec=B1_VALUES, + measure="total_tax_eur", + geography="BE", + dimensions={"tax_return.rank_group": "all"}, + )["concept_alignment"]["evidence_notes"] + cent = Fraction(1, 10) + asserted = { + "b1_total_matches_spf_total": abs(total_tax - spf) <= cent, + "b1_deciles_sum_to_total": abs(decile_tax - total_tax) <= cent, + "top_percentiles_sum_to_decile_10": abs(percentile_tax - decile_10) <= cent, + "decile_bounds_strictly_increase": all( + a < b for a, b in zip(bounds, bounds[1:], strict=False) + ), + "percentile_bounds_strictly_increase": all( + a < b for a, b in zip(top_bounds, top_bounds[1:], strict=False) + ), + "decile_9_bound_below_percentile_91_bound": bounds[-1] < top_bounds[0], + "b1_and_a1_taxable_income_totals_match": abs(b1_income - a1_income) <= cent, + "chronicle_states_zero_income_exclusion": ( + "excludes declarations with zero total net taxable income" in note + ), + } + if not all(asserted.values()): + raise ValueError(f"Reviewed B.1 evidence changed: {asserted}") + checks = { + "tax_definition": { + "evidence": { + "b1_total_enrolled_tax_eur": float(total_tax), + "spf_finances_total_taxes_eur": float(spf), + "difference_eur": float(total_tax - spf), + "b1_deciles_sum_minus_total_eur": float(decile_tax - total_tax), + "top_percentiles_sum_minus_decile_10_eur": float( + percentile_tax - decile_10 + ), + "negative_deciles": negative, + }, + "passed": [ + "B.1's total enrolled tax equals the total taxes in Chronicle's spf-finances-pit-2023 package to EUR 0.06. That fact carries Statbel's concept and evidence URL, so the match reads one administrative total twice and corroborates nothing independently.", + "B.1's deciles sum to its total, and percentiles 91-100 sum to decile 10, within EUR 0.10.", + ], + "missing": [ + "rulespec-be's candidate output belgium_pit_federal_and_local_tax_before_withholding (final_tax.yaml at 530849e) adds article 134 federal tax and the articles 465-466 local additions but not regional_surcharge.yaml's regional additional tax. No document in the suite says whether Statbel's total taxes include the regional additional tax.", + "B.1 counts declarations (joint = one); every rulespec-be PIT output is per Person, and the couple pipeline needs relation bindings (S2-d) that are not built.", + "That output is also the D51A_C1 holdout's measure: a B.1 producer must be a separately bound declaration-level measure, because S5 refuses a pre-calibration stage whose module produces a holdout measure.", + ], + }, + "income_ranking": { + "evidence": { + "decile_upper_bounds_strictly_increase": asserted[ + "decile_bounds_strictly_increase" + ], + "percentile_upper_bounds_strictly_increase": asserted[ + "percentile_bounds_strictly_increase" + ], + "decile_9_bound_below_percentile_91_bound": asserted[ + "decile_9_bound_below_percentile_91_bound" + ], + "b1_minus_a1_total_taxable_income_eur": float(b1_income - a1_income), + "decile_taxable_income_shares_sum": float(shares), + "chronicle_concept_note": note, + }, + "passed": [ + "Chronicle's B.1 facts state that B.1 excludes zero-income declarations, as A.1 does; B.1's and A.1's taxable-income totals agree to EUR 0.02, and the published bounds increase.", + ], + "missing": [ + "The stand-in ranks declarations by net professional income only; 42,007 declarations with taxable but no professional income, and every pensioner while pensions are unmodelled (d1902), would rank differently from Statbel's total net taxable income.", + "B.1 publishes no declaration counts by decile; classifying model declarations needs either model-side ranking or the published bounds, and the bounds are income-year-2023 euros that need the same unavailable cut ageing as A.1.", + ], + }, + "policy_year": { + "evidence": { + "b1_legal_vintage": "income_year_2023_assessment_year_2024", + "model_policy_year": POLICY_YEAR, + "rulespec_be_final_tax_effective_from": "2025-01-01", + "negative_deciles": negative, + }, + "passed": [], + "missing": [ + "B.1 is assessed under income-year-2023 law; the model applies 2026 law (BE-MC0). rulespec-be defines its PIT outputs from 2025-01-01 (its article 134 module states income year 2025 parameters), so B.1's own year cannot be reproduced, and no document bridges 2023 to 2026 tax law: ageing a 2023 tax mass by an FPB ratio would mix growth with law changes.", + "Deciles 1 and 2 are negative (refundable credits) and rolled_forward_by_ratio refuses a negative base, so the declared ageing route cannot carry them to 2026.", + ], + }, + } + for check in checks.values(): + check["result"] = "fail" if check["missing"] else "pass" + passing = all(check["result"] == "pass" for check in checks.values()) + return { + "verdict": "B.1 may activate." + if passing + else "B.1 stays inactive: no check passes completely from the documents.", + "asserted_evidence": asserted, + **checks, + } + + +def _digest(payload): + encoded = json.dumps( + payload, ensure_ascii=False, separators=(",", ":"), sort_keys=True + ) + return hashlib.sha256(encoded.encode()).hexdigest() + + +def selector_digest(row): + """Digest everything a reference row selects, however it is spelled.""" + + return _digest( + {key: row[key] for key in ("ledger_selector", "value_operands") if key in row} + ) + + +def factor_digest(declaration): + """Digest the selectors of one factor declaration's two schedules.""" + + return _digest( + [ + slot["selector"] + for schedule in ("source_schedule", "target_schedule") + for slot in declaration[schedule] + ] + ) + + +def _matching(inventory, selector): + record_sets = selector["record_set_id"] + pool = [ + fact + for record_set in ( + record_sets if isinstance(record_sets, list) else [record_sets] + ) + for fact in inventory.by_record_set.get(record_set, []) + ] + return [fact for fact in pool if fact_matches_selector(fact, selector)] + + +def _partition_total(inventory, row): + """Return the published total a row's bands or rank groups add up to.""" + + if row["metadata"].get("interval_table_id") == STANDIN_TABLE: + return inventory.one( + A1.format(component="taxable_income"), + measure=row["ledger_selector"]["source_measure_id"], + geography="BE", + dimensions={A1_CLASS: "all"}, + ) + if row["metadata"]["contract_target_id"] == "statbel_b1_enrolled_tax_by_rank_group": + return inventory.one( + spec=B1_VALUES, + measure="total_tax_eur", + geography="BE", + dimensions={"tax_return.rank_group": "all"}, + ) + if row["metadata"]["contract_target_id"] == PENSION_CONTRACT: + return inventory.one( + PENSION_RECORD_SET, + measure="recipients", + geography="BE", + dimensions={**PENSION_COHORT, PENSION_BAND: PENSION_TOTAL_LABEL}, + ) + return None + + +def _keyed(facts, field): + """List distinct keys under the field name package scans admit as fact keys.""" + + return [{field: key} for key in sorted({fact[field] for fact in facts})] + + +def _resolved_row(inventory, row, reference_set): + base = _matching(inventory, row["ledger_selector"]) + operands = [ + fact + for operand in row.get("value_operands", []) + if operand.get("role") != "base" + for fact in _matching( + inventory, {key: value for key, value in operand.items() if key != "role"} + ) + ] + entry = { + "name": row["name"], + "reference_set": reference_set, + "selector_sha256": selector_digest(row), + "base_facts": _keyed(base, "aggregate_fact_key"), + "operand_facts": _keyed(operands, "aggregate_fact_key"), + "semantic_facts": _keyed([*base, *operands], "semantic_fact_key"), + } + total = _partition_total(inventory, row) + if total is not None: + entry["partition_total"] = {"semantic_fact_key": total["semantic_fact_key"]} + return entry + + +def _resolved_factor(inventory, declaration): + facts = [ + fact + for schedule in ("source_schedule", "target_schedule") + for slot in declaration[schedule] + for fact in _matching(inventory, slot["selector"]) + ] + return { + "name": f"factor:{declaration['id']}", + "reference_set": "factor_context", + "selector_sha256": factor_digest(declaration), + "base_facts": [], + "operand_facts": _keyed(facts, "aggregate_fact_key"), + "semantic_facts": _keyed(facts, "semantic_fact_key"), + } + + +def resolved_reads(inventory, documents): + """Bind each row and factor to the facts its selectors resolve to in the feed. + + CI holds no artifact, so it checks each digest against the committed row, each + pinned key against its entry and the listed keys for disjointness. The feed + audit proves every listed key, roster selectors included. + """ + + rows = [ + _resolved_row(inventory, row, document["reference_set"]) + for filename in ( + "target_references.json", + "precal_references.json", + "holdout_references.json", + ) + for document in (documents[filename],) + for row in document["target_references"] + ] + factors = [ + _resolved_factor(inventory, entry["declaration"]) + for entry in documents["reference_aging.json"]["factors"] + ] + return [*rows, *factors] + + +def _unemployment_series_choice(inventory): + lines = { + key: _fpb(inventory, f"social_benefits_detail.{row}", 2025) + for key, (row, _) in T24_UNEMPLOYMENT_2025.items() + } + for key, (_, token) in T24_UNEMPLOYMENT_2025.items(): + if _token(lines[key]["value"]) != token: + raise ValueError(f"Reviewed FPB T24 level {key} changed") + return { + "lines_2025": { + key: { + "row": fact["layout"]["source_row_id"], + "label": fact["layout"]["groupby_value_label"], + "eur": float(_value(fact)), + } + for key, fact in lines.items() + }, + "choice": ( + "The target takes line a. Line 4 also holds benefits with a company " + "supplement and career breaks and time credit, about 14% of the level. " + "This row choice is proposed with d1902." + ), + "open_question": ( + "No document in the suite says whether line a. includes temporary " + "unemployment, which the ordinary-benefit output does not compute." + ), + } + + +def _ageing_receipts(pairs, documents): + used = {} + for filename in ( + "target_references.json", + "precal_references.json", + "holdout_references.json", + ): + for row in documents[filename]["target_references"]: + pair = row["metadata"].get("ageing_pair") + if pair: + used.setdefault(pair, []).append(row["name"]) + receipts = [] + for pair_id, (numerator, denominator) in sorted(pairs.items()): + num, den = _value(numerator), _value(denominator) + receipt = { + "id": pair_id, + "use": AGEING_PAIRS[pair_id]["use"], + "fpb_row": AGEING_PAIRS[pair_id]["row"], + "record_set_spec_id": numerator["layout"]["record_set_spec_id"], + "source_row_id": numerator["layout"]["source_row_id"], + "row_label": numerator["layout"]["groupby_value_label"], + "numerator_selector": _selector(numerator), + "denominator_selector": _selector(denominator), + "numerator": float(num), + "denominator": float(den), + "ratio": float(num / den), + "base_period": denominator["period"]["value"], + "target_period": POLICY_YEAR, + "numerator_assertion": numerator["assertion"], + "denominator_assertion": denominator["assertion"], + "reason": AGEING_PAIRS[pair_id]["reason"], + "status": "proposed (BE-MC0, pending d1902); series choice is a B3 finding", + "used_by": sorted(used.get(pair_id, [])), + } + if pair_id in FPB_OBSERVED_2025: + observed = Fraction(FPB_OBSERVED_2025[pair_id]) + receipt.update( + observed_segment_to_2025=float(observed / den), + projected_step_2025_to_2026=float(num / observed), + ) + receipts.append(receipt) + return receipts + + +def build_reference_documents(artifact, *, package_dir=SPEC): + """Return generated file-name/document pairs; verify the full feed identity first.""" + + package_dir = Path(package_dir) + feed_pin = json.loads((package_dir / "chronicle_feed.json").read_text()) + validate_chronicle_feed_pin(artifact, feed_pin) + feed_identity = chronicle_feed_identity(feed_pin) + inventory = Inventory(artifact.facts) + pairs = {} + for pair_id, pair in AGEING_PAIRS.items(): + base = min(pair["operands"]) + pairs[pair_id] = _pair(inventory, pair_id, base) + for pair_id, token in FPB_OBSERVED_2025.items(): + if ( + _token(_fpb(inventory, AGEING_PAIRS[pair_id]["row"], 2025)["value"]) + != token + ): + raise ValueError(f"Reviewed FPB 2025 level {pair_id} changed") + classes = _a1_classes(inventory) + members = _band_members(classes) + communes = { + fact["geography"]["id"]: fact for fact in inventory.cells(COMMUNE_POPULATION) + } + if len(communes) != 565 or any( + fact["geography"]["vintage"] != "nis_2025" for fact in communes.values() + ): + raise ValueError("Expected the 565 NIS 2025 communes") + targets, target_labels = calibration_references(inventory, pairs, members) + precal, precal_labels = precal_references(communes) + wage_rows, wage_labels, wages = wage_surface_references(inventory) + pension_rows, pension_labels, pensions = pension_surface_references(inventory) + precal += [*wage_rows, *pension_rows] + precal_labels |= wage_labels | pension_labels + holdouts, holdout_labels = holdout_references(inventory, pairs) + documents = {} + description = { + "calibration": "Belgian calibration references (reference set calibration), generated by tools/generate_be_target_references.py from the pinned Chronicle be feed. Selectors only: no observation is carried. Demography targets Statbel's 1 January 2026 population directly; every other row rolls a 2023-2025 fact to 2026 by a declared FPB June 2026 ratio pair or stays parked with a named reason. Method-card choices are proposed pending d1902. Belgium stays inactive.", + "precal": "Belgian pre-calibration references: Statbel commune population on 1 January 2025 as the atomic geography support mass, unaged (support shares), and BE-MC3's two quantile surfaces (B4a, quantile_surfaces.json). The wage surface is RSZ/ONSS T17's five known-pay daily-wage classes of employees at the end of 2026-Q1, each the sum of its 24 age and sex cells. The legal-pension surface is SFPD's 26 amount bands of January 2025, parked until shared rank_only support lands. Identity and sums only; no observation is carried.", + "holdout": "Belgian held-out references: compared with the model, never fitted. No calibration-side node may read this resource. Every row is parked until its measure has a producer; JRC's EUROMOD-BE statistics are deferred while d1822 is open.", + } + for reference_set, rows, labels, filename, operations in ( + ( + "calibration", + targets, + target_labels, + "target_references.json", + ["identity", "rolled_forward_by_ratio"], + ), + ( + "precal", + precal, + precal_labels, + "precal_references.json", + ["identity", "sum"], + ), + ( + "holdout", + holdouts, + holdout_labels, + "holdout_references.json", + ["rolled_forward_by_ratio"], + ), + ): + documents[filename] = { + "country": "be", + "schema_version": 2, + "reference_set": reference_set, + "description": description[reference_set], + "allowed_value_operations": operations, + "hierarchy": _hierarchy(rows, labels), + "target_references": rows, + "target_profile": {"schema_version": 1, "hierarchy_reconciliations": []}, + } + documents["reference_intervals.json"] = _interval_document(classes, members) + documents["reference_profiles.json"] = _reference_profiles() + documents["reference_aging.json"] = build_reference_aging(inventory, feed_identity) + documents[SURFACE_RESOURCE] = _surface_document(wage_rows, pension_rows, pensions) + surfaces = _surface_evidence(inventory, wage_rows, wages, pension_rows, pensions) + documents["reference_inventory.json"] = _inventory( + inventory, pairs, documents, feed_pin, members, communes, surfaces + ) + return documents + + +def _inventory(inventory, pairs, documents, feed_pin, members, communes, surfaces): + counts = {} + for filename in ( + "target_references.json", + "precal_references.json", + "holdout_references.json", + ): + rows = documents[filename]["target_references"] + counts[filename] = { + "total": len(rows), + "by_family": dict(Counter(row["family"] for row in rows)), + "by_contract": dict( + Counter(row["metadata"]["contract_target_id"] for row in rows) + ), + "by_activation_status": dict( + Counter(row["metadata"]["activation_status"] for row in rows) + ), + } + nuts = { + year: sum( + ( + _value(fact) + for fact in inventory.cells(STATBEL_POPULATION.format(year=year)) + ), + Fraction(), + ) + for year in (2025, POLICY_YEAR) + } + commune_total = sum((_value(fact) for fact in communes.values()), Fraction()) + b4 = { + kind: sum( + ( + _value( + inventory.one( + spec=B4, + measure="declarations", + geography="BE", + dimensions={ + "tax_return.age_band": "all", + "tax_return.decile": decile, + "tax_return.declaration_type": kind, + }, + ) + ) + for decile in range(1, 11) + ), + Fraction(), + ) + for kind in ("joint", "individual") + } + a1_total = _value( + inventory.one( + A1.format(component="taxable_income"), + measure="declarations", + geography="BE", + dimensions={A1_CLASS: "all"}, + ) + ) + aging = documents["reference_aging.json"] + rsz = { + entry["declaration"]["id"]: entry["operational_factor"]["numerator"] + / entry["operational_factor"]["denominator"] + for entry in aging["factors"] + } + wage_pair = { + year: Fraction(token) + for year, token in ( + (2023, "226018000000"), + (2024, "233079000000"), + (2025, "240536000000"), + ) + } + for year, token in wage_pair.items(): + if ( + _value(_fpb(inventory, "household_account.gross_wages_and_salaries", year)) + != token + ): + raise ValueError("Reviewed FPB gross wages changed") + excluded = [ + ("jrc_euromod_be_statistics", DEFERRED_JRC), + ( + "ris_amount_and_recipients", + "August's RIS amount and count came from JRC; the suite holds no RIS administrative source, so the gap is named, not filled.", + ), + ( + "legal_pensions", + "FPB pension amounts and SFPD's other beneficiary tables: legal pensions are not modelled until d1902 settles BE-MC3's pension route. SFPD group 1's 26 amount bands are B4a's parked legal-pension surface rows in precal; its Totaal row and expenditure measure are not bands. Groups 2 to 164 split group 1's population, and the FPD-beneficiary and IGO groups count other beneficiary populations, so none is stacked on group 1.", + ), + ( + "family_allowances", + "FPB family allowances and Opgroeien/Ostbelgien caseloads: child benefits are reported as not modelled at level until indexed amounts are encoded (BE-MC0).", + ), + ( + "rsz_wage_classes", + "RSZ daily-wage classes (B2f): B4a's wage surface reads only T17's five known-pay classes of employed workers at 2026-Q1, as precal rows. Earlier quarters, the jobs and FTE measures, the unknown-pay class and T7 (a diagnostic in quantile_surfaces) are not read.", + ), + ( + "usd_eur_rate", + "Eurostat ert_bil_eur_a is B4's currency-bridge input (BE-MC3), not a reference.", + ), + ( + "regional_a1_and_b1", + "National bands only: the short list d1952 asks for; v0.5.1's 606 regional A.1 rows failed to fit.", + ), + ( + "a1_component_tables", + "Professional, property, movable, miscellaneous and deduction tables are gap diagnostics in this inventory, not fitted rows.", + ), + ( + "a1_and_b1_totals", + "Published totals duplicate the band and decile partitions; B.1's taxable-income masses duplicate A.1.", + ), + ( + "zero_income_declarations", + "Statbel's 523,770 zero-income declarations are a diagnostic; the proxy's zeros differ, so the nil band is not fitted.", + ), + ( + "b3_b5_tables", + "B.3 professional-category and B.5 dependant tables are outside the card's targets; v0.5.1's wage-only B.3 proxy destroyed weights.", + ), + ( + "b4_age_and_decile_cells", + "Only the all-age joint and individual totals are targets (BE-MC4); age and decile cells would multiply weak cells.", + ), + ( + "statbel_commune_fiscal_income", + "Commune fiscal income is a diagnostic surface for a later commune spine gate, not a B3 reference.", + ), + ( + "spf_finances_pit_total", + "SPF Finances' total taxes equal B.1's total: one administrative total, read twice. The tax-definition check records it, and no row targets it.", + ), + ( + "spf_municipal_surcharge_rates", + "Communal surcharge rates are W3 rule inputs, not references.", + ), + ( + "statbel_population_2025_nuts1", + "Statbel's 1 January 2026 cells are the target-year observation; the 2025 cells would duplicate them.", + ), + ( + "movable_income", + "Movable income stays out of the stand-in (art. 313 CIR 92 withholding dispensation) and out of the targets until the investment-income match check (d1952 build item 5).", + ), + ( + "eurostat_d11_wages", + "Eurostat D11 duplicates FPB's gross wages, the card's wage-headline comparator.", + ), + ( + "eurostat_b3g_mixed_income", + "Mixed income is a calibration aggregate (FPB net mixed income), so it cannot also be held out.", + ), + ( + "eurostat_survey_and_social_protection", + "Eurostat ilc_* survey aggregates and spr_exp_func expenditure are excluded: surveys are validation-only and outside the card's holdouts, and ESSPROS overlaps FPB's T24 rows.", + ), + ( + "fpb_projections_as_direct_targets", + "No reference takes an FPB projection as its base: every base is an observation. Seven rolled rows still equal FPB's 2026 projection, because each base equals its pair's denominator: unemployment benefits, GRAPA and net mixed income in calibration, and gross wages and the Eurostat D61, D62 and D5 rows in the holdouts. Those rows say so in ageing_target_equals.", + ), + ( + "german_and_french_rows", + "Four Eurostat members carry DE and FR rows (72 of 87,112); the generator refuses any non-Belgian fact before it can name one.", + ), + ] + return { + "schema_version": 1, + "country": "be", + "generated_by": "tools/generate_be_target_references.py", + "feed_identity": feed_pin, + "policy_year": POLICY_YEAR, + "method_card_status": "BE-MC0, BE-MC3 to BE-MC6 proposed pending d1902; nothing publishes a number", + "reference_counts": counts, + "regions": list(REGIONS), + "age_bands": list(AGE_BANDS), + "standin_bands": [ + { + "id": band, + "lower_eur_iy2023": lower, + "upper_eur_iy2023": upper, + "a1_classes": members[band], + } + for band, lower, upper in STANDIN_BANDS + ], + "standin_band_reason": ( + "Fixed before any candidate (d1952): EUR 10,000 steps over the dense " + "middle, wider steps above EUR 50,000, A.1's open top class whole; " + "every edge is an A.1 class edge; eight bands, sixteen constraints." + ), + "standin_gaps": _standin_gaps(inventory, members), + "ageing_pairs": _ageing_receipts(pairs, documents), + "rsz_wage_cross_checks": [ + { + "factor_id": factor_id, + "rsz_observed_factor": factor, + "fpb_gross_wages_observed_ratio": float( + wage_pair[2025] / wage_pair[RSZ_FACTORS[factor_id][0]] + ), + "use": "diagnostic only", + } + for factor_id, factor in rsz.items() + ], + "b4_identity": { + "joint": float(b4["joint"]), + "individual": float(b4["individual"]), + "a1_declarations": float(a1_total), + "closes_exactly": b4["joint"] + b4["individual"] == a1_total, + "use": "A.1 band counts and B.4 type counts share fpb_t07_total_population, so the identity survives ageing.", + }, + "destination_mass": { + "commune_sum_2025": float(commune_total), + "nuts1_sum_2025": float(nuts[2025]), + "nuts1_sum_2026": float(nuts[POLICY_YEAR]), + "commune_minus_nuts1_2025": float(commune_total - nuts[2025]), + "create_mass_reference": "Not in B3. CREATE needs exactly one unfiltered national person count. The suite has no national Statbel population fact, and a national row composed from the 565 communes refuses: the shared composed-geography path labels only UK areas. W3 chooses between a shared Belgian geography label (NZ hub) and FPB's annual-average population.", + }, + "b1_checks": _b1_checks(inventory), + "unemployment_series_choice": _unemployment_series_choice(inventory), + "geography_vintage_bindings": [ + { + "layer": "nuts1", + "chronicle_vintage": GEOGRAPHY_VINTAGES["nuts1"][0], + "typed_authority": GEOGRAPHY_VINTAGES["nuts1"][1], + "relation": "crosswalk", + "basis": "Chronicle labels Statbel's regions NUTS_2024. The typed nuts1 layer records no code list, so the mapping rests on destination_mass: the three regions' 2025 population equals the 565 communes' sum. A package test holds every nuts1 row to this binding. This choice is proposed with d1902.", + }, + { + "layer": "commune", + "chronicle_vintage": GEOGRAPHY_VINTAGES["commune"][0], + "typed_authority": GEOGRAPHY_VINTAGES["commune"][1], + "relation": "exact_alias", + "basis": "nis_2025 is an exact typed alias of vintage:be_nis_2025.", + }, + ], + "holdout_information_overlaps": [ + "The tests check separation at the fact and measure level; holdouts still share information with calibration through economics, not facts:", + "FPB gross wages (wage-headline holdout): ONSS's calibrated worker contributions scale with wages.", + "Eurostat D62 social benefits received contain the calibrated unemployment and GRAPA aggregates.", + "Eurostat D61 social contributions paid contain the calibrated ONSS worker contributions.", + "Eurostat D51A_C1 and D5 measure the same personal income tax that B.1 would calibrate once active.", + "The A.1 stand-in is 98% net professional income, and its amount pair, FPB T11 total resources, contains gross wages, the wage holdout's own series.", + "RSZ T7's daily-wage cells at 2026-Q1 sum to the same class counts as the T17 wage surface, under different facts and semantic keys: a holdout on T7 would share the surface's information.", + ], + "grammar_gaps": [ + "A national row composed from commune facts refuses for Belgium: the composed-geography path labels only UK areas (ledger_targets._geography_fallback_label), so CREATE's single national mass reference cannot be the commune sum.", + "A schema-2 target_profile requires period_match_policy 'exact', which refuses rolled_forward_by_ratio; the documents keep B1's schema-2 hierarchy catalogs with a schema-1 target_profile (NZ's documents use the same schema-1 profile, with inline hierarchies).", + "No shared operation ages interval cuts by a declared annual ratio pair: scale_money_and_intervals needs a G8-r2 factor and singleton identity money rows, and G8-r2's projected_period_average_ratio cannot project an annual series past its last observation.", + "G8-r2's resolver needs dated period_coverage on every operand; Chronicle's FPB, Statbel NUTS1, NBB, ONSS, ONEM and most Eurostat facts carry none.", + "rolled_forward_by_ratio refuses a negative base, so signed targets (B.1 low deciles) cannot be aged by it.", + "rolled_forward_by_ratio's series key treats every FPB annex row of one table as one series (same concept, entity, geography and empty dimensions); the generator and tests enforce row identity themselves.", + "The typed vintage alias set admits only a layer's full id, its country-shortened id and its authority value, so Chronicle's NUTS_2024 label cannot be an alias of vintage:be_nuts1_2025; geography_vintage_bindings carries the mapping instead.", + "The schema-1 target_profile drops B1's required_families, basis_periods, tolerance tiers and subnational vintage rule. Package tests restore required families, the vintage rule and each row's periods. Caseload tolerance moves from B1's 15% to BE-MC6's 5%, and the ONSS contribution row moves from B1's standard_admin_release 10% to 5%.", + "A selector cannot pair a record set with a dimension value, and T17 holds each daily-wage class in one record set per sex. Each wage row lists both record sets beside an age and a sex roster, so the package tests' cell check expands their product: 24 cells that exist and 24 that cannot. A list of the members' aggregate keys would bind each member without the artifact, but the package scan admits fact keys only as single strings, so the rosters stay key-free and the feed audit proves their members.", + "No shared code reads a rank-only input. Transport drops the donor's public_pension_income (TransportRule.DROP), and transport.quantile_map@1 ranks one column and overwrites that same column with the mapped amounts. So the SFPD surface rows are kept non-executable only by activation_status, and each one is a named activation gap.", + "Uniform interpolation refuses an open top band, and both surfaces' top bands are open; Pareto interpolation needs a declared alpha, and no shared mode scales the donor's own tail.", + ], + "quantile_surfaces": surfaces, + "exclusions": [{"id": name, "reason": reason} for name, reason in excluded], + "resolved_reads": resolved_reads(inventory, documents), + } + + +def pin_feed(artifact, source_commit): + """Return a feed pin for a reviewed artifact; identities are the loader's own.""" + + manifest = artifact.manifest or {} + return { + "version": 1, + "country": "be", + "scope": "be_calibration", + "source_repo": "PolicyEngine/chronicle", + "source_commit": source_commit, + "build": "build-bundle --suite be -> build-consumer-artifact", + "artifact_schema_version": artifact.schema_version, + "consumer_fact_schema_versions": list(artifact.fact_schema_versions), + "consumer_fact_schema_sha256": manifest.get("consumer_fact_schema_sha256"), + "fact_row_count": artifact.fact_row_count, + "facts_sha256": artifact.facts_sha256, + "manifest_sha256": artifact.manifest_sha256, + } + + +def _encode(document): + return json.dumps(document, ensure_ascii=False, indent=2) + "\n" + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--artifact", default=os.environ.get("BE_CHRONICLE_ARTIFACT")) + parser.add_argument("--out", type=Path, default=SPEC) + parser.add_argument("--check", action="store_true") + parser.add_argument("--pin-feed", metavar="SOURCE_COMMIT") + args = parser.parse_args() + if not args.artifact: + parser.error("--artifact or BE_CHRONICLE_ARTIFACT is required") + if args.check and args.pin_feed: + parser.error("--check and --pin-feed are exclusive") + artifact = load_ledger_consumer_artifact(args.artifact, lexical_floats=True) + if args.pin_feed: + (args.out / "chronicle_feed.json").write_text( + _encode(pin_feed(artifact, args.pin_feed)) + ) + documents = build_reference_documents(artifact, package_dir=args.out) + stale = [] + for filename, document in documents.items(): + encoded = _encode(document) + destination = args.out / filename + if args.check: + if not destination.exists() or destination.read_text() != encoded: + stale.append(str(destination)) + else: + destination.write_text(encoded) + if stale: + raise SystemExit(f"Stale generated resource(s): {stale}") + + +if __name__ == "__main__": + main() diff --git a/tools/graph_uk_spine_fixture.py b/tools/graph_uk_spine_fixture.py index b93d920507..4762595c57 100644 --- a/tools/graph_uk_spine_fixture.py +++ b/tools/graph_uk_spine_fixture.py @@ -177,6 +177,9 @@ ) from microcosm.build.uk_runtime.student_loans import UKStudentLoansStageTransform from microcosm.build.uk_runtime.take_up_contract import load_uk_take_up_contract +from microcosm.build.uk_runtime.trading_allowance_receipts import ( + UKTradingAllowanceReceiptsStageTransform, +) from microcosm.build.uk_runtime.uc_capital_coherence import ( UKUCCapitalCoherenceStageTransform, ) @@ -209,7 +212,7 @@ _SPI_DONOR_SAMPLE_SIZE = 64 #: The packaged FRS spine roster the fixture exercises (manifest minus the #: certified-pair exclusions); moves whenever a spine stage is added. -UK_FIXTURE_STAGE_COUNT = 51 +UK_FIXTURE_STAGE_COUNT = 52 _QRF_ESTIMATORS = 4 # These are the complete object-string surface observed in the unchanged @@ -754,6 +757,10 @@ def _frs_tables() -> dict[str, pd.DataFrame]: "SERNUM": household_id, "BENUNIT": 1, "PERSON": 1, + # Every fifth household's payment is trust income (PENTYPE 5), + # which stays private pension with its part stored as the + # annuity and trust descriptor (microcosm#1428). + "PENTYPE": 5 if household_id % 5 == 0 else 1, "PENPAY": 10.0, "PTAMT": 2.0, "PTINC": 2, @@ -2201,6 +2208,9 @@ def capture_root(frame: Frame) -> Frame: donor_household=was, donor_person=was_person, ), + "trading_allowance_receipts": UKTradingAllowanceReceiptsStageTransform( + stage=stages["trading_allowance_receipts"] + ), "company_cars": UKCompanyCarsStageTransform( stage=stages["company_cars"], engine=engine, diff --git a/tools/modal_us_stage.py b/tools/modal_us_stage.py index cab09994cf..c409068c13 100644 --- a/tools/modal_us_stage.py +++ b/tools/modal_us_stage.py @@ -93,14 +93,7 @@ def _image() -> modal.Image: f"uv=={plan_lib.IMAGE_UV_VERSION}", f"huggingface_hub=={plan_lib.RUNNER_HF_HUB_VERSION}", ) - .env( - { - "UV_PROJECT_ENVIRONMENT": plan_lib.IMAGE_VENV, - "UV_PYTHON_DOWNLOADS": "never", - "UV_LINK_MODE": "copy", - "PYTHONDONTWRITEBYTECODE": "1", - } - ) + .env(dict(plan_lib.IMAGE_ENVIRONMENT)) ) if _LOADED is not None: _, plan = _LOADED @@ -227,9 +220,28 @@ def _cpu_visibility() -> dict[str, object]: } +def _emitter_version() -> dict[str, object] | None: + """The installed emitter's ``version`` answer, or None if it does not run.""" + + try: + answer = subprocess.run( + [plan_lib.IMAGE_EMITTER_COMMAND, "version"], + capture_output=True, + text=True, + timeout=60, + ) + version = json.loads(answer.stdout) if answer.returncode == 0 else None + except (OSError, subprocess.SubprocessError, ValueError): + return None + return version if isinstance(version, dict) else None + + def _runner_identity() -> dict[str, object]: identity: dict[str, object] = { "python": sys.version.split()[0], + # The separately installed emitter the build starts for telemetry and + # staging hand-overs; the image installs the newest release. + "microcosm_emitter": _emitter_version(), # Platform and CPU visibility, for comparing a Modal run with a local # one: BLAS, OpenMP and the base's QRF pool size their thread pools # from what they see. @@ -669,6 +681,11 @@ def check_stage(plan_data: dict) -> dict: ) if env_probe.returncode != 0: problems.append("the synced environment does not import microcosm.build") + report["emitter"] = _emitter_version() + if report["emitter"] is None: + problems.append( + f"the emitter command {plan_lib.IMAGE_EMITTER_COMMAND} does not run" + ) argv = plan_lib.planned_argv(plan) parse = ( diff --git a/tools/modal_us_stage_plan.py b/tools/modal_us_stage_plan.py index 0cbace7fff..61536d823d 100644 --- a/tools/modal_us_stage_plan.py +++ b/tools/modal_us_stage_plan.py @@ -72,6 +72,26 @@ IMAGE_PYTHON_VERSION = "3.14" IMAGE_UV_VERSION = "0.11.7" RUNNER_HF_HUB_VERSION = "1.18.0" +# A build starts the separately installed microcosm-emitter command as its +# child process (microcosm-emitter-interface); uv.lock pins only the +# interface. The image installs the newest emitter release when it is built +# for a plan commit, outside the synced environment; an image built for one +# commit keeps the emitter it was built with. A build does not start an +# emitter older than 0.6.0, the first release with the Hugging Face hand-over +# module (microcosm.build.telemetry_emitter.MINIMUM_EMITTER_VERSION). The +# stage's runner records the version. +IMAGE_EMITTER_REQUIREMENT = "microcosm-emitter>=0.7.0" +IMAGE_EMITTER_BIN_DIR = "/usr/local/bin" +IMAGE_EMITTER_COMMAND = f"{IMAGE_EMITTER_BIN_DIR}/microcosm-emitter" +#: The image's environment variables, which the stage tool inherits. +IMAGE_ENVIRONMENT = { + "UV_PROJECT_ENVIRONMENT": IMAGE_VENV, + "UV_PYTHON_DOWNLOADS": "never", + "UV_LINK_MODE": "copy", + "PYTHONDONTWRITEBYTECODE": "1", + # Where the interface finds the emitter command (it also searches PATH). + "MICROCOSM_EMITTER_COMMAND": IMAGE_EMITTER_COMMAND, +} WORK_ROOT = "/work" # Modal list prices for standard (non-sandbox) compute, read from @@ -1394,6 +1414,8 @@ def image_build_commands(plan: Plan, repo_root: str = IMAGE_REPO_ROOT) -> list[s The tree is a shallow clone of the pushed commit (so ``git rev-parse`` and ``git status`` inside the tools report the real code vintage), and the environment is synced from that tree's own uv.lock with --frozen. + The emitter command is installed on its own, outside that environment + (``IMAGE_EMITTER_REQUIREMENT``), and must run. """ root = shlex.quote(repo_root) @@ -1405,6 +1427,9 @@ def image_build_commands(plan: Plan, repo_root: str = IMAGE_REPO_ROOT) -> list[s f"git -C {root} checkout -q -B {shlex.quote(plan.branch)} FETCH_HEAD", f'test "$(git -C {root} rev-parse HEAD)" = {commit}', f"cd {root} && uv sync --all-packages --extra us --frozen", + f"UV_TOOL_BIN_DIR={IMAGE_EMITTER_BIN_DIR} uv tool install " + f"{shlex.quote(IMAGE_EMITTER_REQUIREMENT)}", + f"{IMAGE_EMITTER_COMMAND} version", f'test -z "$(git -C {root} status --porcelain)"', ] diff --git a/uv.lock b/uv.lock index 2a50699910..e1971b91d7 100644 --- a/uv.lock +++ b/uv.lock @@ -50,20 +50,6 @@ members = [ "microcosm-workspace", ] -[[package]] -name = "alembic" -version = "1.20.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mako" }, - { name = "sqlalchemy" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/aa/02910bdb8e2f1444f6654d5b296cd827d126f82209050ee7b1000f92ac4b/alembic-1.20.0.tar.gz", hash = "sha256:db505480647bc60386c5369402f4a57a506b7539c9e9ef5e270d45cbbe4939bf", size = 2093272, upload-time = "2026-09-11T19:09:11.126Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/27/78a89b55b0904d222183164e079b4ca56208e94eff1d35ad1f1ad5be9b06/alembic-1.20.0-py3-none-any.whl", hash = "sha256:77eb101048d95f982c0353e9233404889dcd7a6fc244c107836c0e2fc9cf7d9d", size = 268719, upload-time = "2026-09-11T19:09:12.88Z" }, -] - [[package]] name = "annotated-doc" version = "0.0.4" @@ -698,18 +684,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, ] -[[package]] -name = "mako" -version = "1.4.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/09/e07c4b5579a79f4b16f8d4f29f6c54514ac787c4ad506b8c4f28a0e6b0bf/mako-1.4.3.tar.gz", hash = "sha256:cd6537fe88d5fec315c55c2f8529bc4ce7a9a352ad7db3eeaa6a66e2dd4ec37a", size = 412799, upload-time = "2026-09-22T20:54:31.509Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/a0/053d6af3e8f871e0073b4a36732d9e65be77a72e5434c31b94f6af78a6bb/mako-1.4.3-py3-none-any.whl", hash = "sha256:723296007c870bfd6b3f0c3230dba7198096e5269297ebf5e4eff9e7ffa39d4f", size = 80164, upload-time = "2026-09-22T20:54:33.128Z" }, -] - [[package]] name = "markdown-it-py" version = "4.2.0" @@ -804,7 +778,7 @@ dependencies = [ { name = "jsonschema" }, { name = "microcosm-calibrate" }, { name = "microcosm-diagnostics" }, - { name = "microcosm-emitter" }, + { name = "microcosm-emitter-interface" }, { name = "microcosm-fit" }, { name = "microcosm-frame" }, { name = "microcosm-graph" }, @@ -848,7 +822,7 @@ requires-dist = [ { name = "microcosm-data", marker = "extra == 'uk'", editable = "packages/microcosm-data" }, { name = "microcosm-data", marker = "extra == 'us'", editable = "packages/microcosm-data" }, { name = "microcosm-diagnostics", editable = "packages/microcosm-diagnostics" }, - { name = "microcosm-emitter", specifier = "==0.2.1" }, + { name = "microcosm-emitter-interface", specifier = ">=0.7.0,<1" }, { name = "microcosm-fit", editable = "packages/microcosm-fit" }, { name = "microcosm-frame", editable = "packages/microcosm-frame" }, { name = "microcosm-graph", editable = "packages/microcosm-graph" }, @@ -968,19 +942,12 @@ dev = [ ] [[package]] -name = "microcosm-emitter" -version = "0.2.1" +name = "microcosm-emitter-interface" +version = "0.7.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "alembic" }, - { name = "httpx" }, - { name = "huggingface-hub" }, - { name = "psutil" }, - { name = "sqlalchemy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d4/b7/757043995c931fd147998b0c0f8f1f58f4ba9369f60bc72cfaf57a76ba6d/microcosm_emitter-0.2.1.tar.gz", hash = "sha256:43c41762057838b92d8e53bf53b4941fbfd45130f632b8b106adc4324664dbaf", size = 146537, upload-time = "2026-10-14T16:41:57.71Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/35/afaf9a249d5c09aa9ebcbbc3c58ca0f7d28a184d1f9d28d8cb807dacdb28/microcosm_emitter_interface-0.7.0.tar.gz", hash = "sha256:16c285331f28c926ce4775f9bb622c4d6cd05c867d419d3339a939cf8de2fa5a", size = 34378, upload-time = "2026-10-22T20:56:24.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/a1/6d00bb00db2d2b554e2ac76065e9fe0d75b167d47e2bd4d03d23d5482530/microcosm_emitter-0.2.1-py3-none-any.whl", hash = "sha256:a1baa6e110b3248cfd77d9d2e443a8190cb8011600c13b195b8ae68754abf4aa", size = 57888, upload-time = "2026-10-14T16:41:56.32Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/8ff4fbfe3dfb53451e672a424edb6d28f400e5ec4808ecf98762dedd6567/microcosm_emitter_interface-0.7.0-py3-none-any.whl", hash = "sha256:df6b382bf77b7e63bf737b530d89549c14aba9b4c7625b64ec8c144c8cb8d81a", size = 55850, upload-time = "2026-10-22T20:56:22.877Z" }, ] [[package]] @@ -2271,68 +2238,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/a0/c484f69a0ebf88a9b9fd0ac28176f8df66550f46714f1b0c5ec0b360824e/spm_calculator-1.0.0-py3-none-any.whl", hash = "sha256:e354937a5e1a4045d4966ed594a528d8b02866fabaac9bb5672017004b627305", size = 7395384, upload-time = "2026-09-11T15:45:10.492Z" }, ] -[[package]] -name = "sqlalchemy" -version = "2.1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/02/4b/81d972a46c9f1d978af1795e2abc988855c711453552cb45d75f6e4abbf5/sqlalchemy-2.1.3.tar.gz", hash = "sha256:ade5281df06038c6394f532590d592d3381ee5d11b9e0006a2570aef41145118", size = 10525778, upload-time = "2026-10-02T22:57:00.308Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/71/68c29931fb2c5178241f7d0c63dbdd800ad65685eac70d7f2117145b5e3c/sqlalchemy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:260bdd8baa1dc631d76d14b26ad009ebbb665b4469666afef8dcaa1f964016cb", size = 2457479, upload-time = "2026-10-03T02:39:19.741Z" }, - { url = "https://files.pythonhosted.org/packages/94/21/5dbd91816b2cdb367bca3195f300ffeca916762e088d6924fc33a18f50ad/sqlalchemy-2.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fc01a8047d6a4f4e997441994f07af79fdd470fc80669751e32f91153d6b491", size = 4582199, upload-time = "2026-10-02T23:37:44.508Z" }, - { url = "https://files.pythonhosted.org/packages/32/d1/79962ce06d6cd34516def113f5170184fa9401ebddc59fd6cb18f6e919f3/sqlalchemy-2.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b1b3ff10eba0f9290142375e667351c99d24ee7fcff6e0f85bd8be9d39b50a17", size = 4632923, upload-time = "2026-10-02T23:35:55.318Z" }, - { url = "https://files.pythonhosted.org/packages/3c/94/03e98031dc9a1738c580c3bf01beeafe695f247eb647f4e8dda3fab2454f/sqlalchemy-2.1.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:efb1ebf695e80d9a69f5bbff9d812d2491fd168b27d6b42ad4c8a4d3d6faaef1", size = 4300224, upload-time = "2026-10-02T23:46:45.495Z" }, - { url = "https://files.pythonhosted.org/packages/3a/1f/388c87607eb6c7abee4866355eeebb6221b3bcb413a64ce4a5cfc3edd22f/sqlalchemy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a95754928d47b37ea5c4b5180101db2afabef1da0dd5cd0c573b547d5d036ff0", size = 4507170, upload-time = "2026-10-02T23:38:29.697Z" }, - { url = "https://files.pythonhosted.org/packages/57/73/5515a3f555d31748564fbeb0b9e0b6ab7a647bf2ea0cdb6d233f20f710e3/sqlalchemy-2.1.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:7606b413730ac6002930faa96f52195ed6969040b78071a3336370661f5e9e09", size = 4301439, upload-time = "2026-10-02T23:46:47.845Z" }, - { url = "https://files.pythonhosted.org/packages/a3/a0/0eae9b96f6f8a09f3e5d388f6fc5d6fe8d5ff2aced2a5c75bea7333d445e/sqlalchemy-2.1.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:76c3d5c7ada0925ff12e8c2395c547f88fcfccc13368ff8e8dd55ab5e28dcdab", size = 4594441, upload-time = "2026-10-03T02:46:16.928Z" }, - { url = "https://files.pythonhosted.org/packages/f5/b1/b6d681015414ce9048c07ef3ac49b693c1b8373de4716ee4bdeff4ec19a0/sqlalchemy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:cb6fc5c856e8f1c0228bf74b636c0a03a6c12dd502ced7aa82ced21dcdc7f547", size = 2371547, upload-time = "2026-10-03T02:49:23.549Z" }, - { url = "https://files.pythonhosted.org/packages/56/ad/35aa4d737016640c6da7573a4bcd9d91b59a87359bc6df075627963a4781/sqlalchemy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:82d4c63d338737d593f1d29c4dae0a124577a9a76186d90b5c0f9ec9cbeeab35", size = 2421558, upload-time = "2026-10-03T02:49:25.448Z" }, - { url = "https://files.pythonhosted.org/packages/fc/42/0dcc7cd92a3f4773376a5488b6ce0d6d75d2d029ad7e7f9e0ecc5fb48fcd/sqlalchemy-2.1.3-cp313-cp313-win_arm64.whl", hash = "sha256:0ab6f42761cc5c48d2f3e8a70810d10630d8222a51a7111cf9b3a48f22c3f148", size = 2382507, upload-time = "2026-10-03T02:42:42.812Z" }, - { url = "https://files.pythonhosted.org/packages/11/55/d626c933b7d034619c57120fafb47c0d44b2553ad2b8f74e904a40c01258/sqlalchemy-2.1.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:660c6e16d254568874d4b77fd593aa5426f55cf40d0acc8b5364a5e61cc1044d", size = 2460626, upload-time = "2026-10-03T02:39:21.751Z" }, - { url = "https://files.pythonhosted.org/packages/35/90/9b276c8eed59694d5c2291588fae9c51f25a5c63efb00ef9a7c6e754a2cd/sqlalchemy-2.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7277ba31ffb636666ed207d2aaf74de3cd2ee78436da7552bd4eeadf1f67740a", size = 4576390, upload-time = "2026-10-02T23:38:31.943Z" }, - { url = "https://files.pythonhosted.org/packages/60/21/818e89fe73ba4600abf5090e0d2356d92de9ca3a8aa9222d64801e510bd2/sqlalchemy-2.1.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b728c406b1b202e8998e8f9adacb56773bfeea67da74252ad3025bcb8f5863f1", size = 4606177, upload-time = "2026-10-03T02:46:19.291Z" }, - { url = "https://files.pythonhosted.org/packages/88/75/ab96bb0e27153d123340d6f1b14fac3713c03b7e3ca3f74f4c0715345775/sqlalchemy-2.1.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:85623c57c3696dcbc4fc909bbf335a2f0c27ae36f762d83810067fb49abc040e", size = 4300438, upload-time = "2026-10-02T23:46:50.03Z" }, - { url = "https://files.pythonhosted.org/packages/94/49/c7e0223fe5553ff1c31853c07f158f75245f8d435435755a789249f5121a/sqlalchemy-2.1.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ac0de6dc326cc99ac31206359e9fc2c13345f667edeb6ef556585fedac4ff698", size = 4506089, upload-time = "2026-10-02T23:38:34.209Z" }, - { url = "https://files.pythonhosted.org/packages/10/83/d6aad5e1a5b3a3e9257f932971b7f2105be6669205d4d9946f5f87d73216/sqlalchemy-2.1.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:65e002b794efa1bacbbde9fa973e5340d6c3c29b53e592b863a281802829319d", size = 4301730, upload-time = "2026-10-02T23:46:52.115Z" }, - { url = "https://files.pythonhosted.org/packages/04/54/310b9fd03ba7de6359185a0914bcd0cf45a76c6314e49d1ec814a50ae13e/sqlalchemy-2.1.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:65e4813c78eaa679c9369b289e67fdba924db6be14067700c5ccbda37953af9a", size = 4565315, upload-time = "2026-10-03T02:46:21.64Z" }, - { url = "https://files.pythonhosted.org/packages/d4/8b/f6f7d46bc4e7bdc16fa78ec9a390f01852f2b080b7c75e83db4947b707c6/sqlalchemy-2.1.3-cp314-cp314-win32.whl", hash = "sha256:726987e7f8500614016be056ba5c9715b760ab465295741e2087b29753d72632", size = 2378402, upload-time = "2026-10-03T02:49:27.524Z" }, - { url = "https://files.pythonhosted.org/packages/9a/5f/dabd1ea48dd6c45383526c7f2e453fea15dcb53235edbadab49857fd7bfd/sqlalchemy-2.1.3-cp314-cp314-win_amd64.whl", hash = "sha256:0560458a775917bcd7a47eccf4f9e0b135fd9b72d7b819cb1bd60581de946f9a", size = 2428828, upload-time = "2026-10-03T02:49:29.481Z" }, - { url = "https://files.pythonhosted.org/packages/23/aa/ecba6a6141d24dbd4b002b451e0c410b7c6cb82a8a873f915f89314af830/sqlalchemy-2.1.3-cp314-cp314-win_arm64.whl", hash = "sha256:63c9289ed81991ba4d500611ce201531711430f5d23d7ae9a61a8842639b85ea", size = 2393599, upload-time = "2026-10-03T02:42:44.416Z" }, - { url = "https://files.pythonhosted.org/packages/33/41/f2c5eb9371cc1352a16001642702dfc2d73537995eea5cdeec7738f90a9d/sqlalchemy-2.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:08b2f345db8b0742e7814c49f9a210d5f5c8fb9d80d12c8a63bba762fa277477", size = 2500084, upload-time = "2026-10-02T23:35:35.774Z" }, - { url = "https://files.pythonhosted.org/packages/73/f1/fabd748dd8a1700579906649ac05414d65eca5bca44a3ac3c22856ed8d25/sqlalchemy-2.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:493b632f426579c4b0e97a5610f76c8c3d401cede442d462bf700b537035c91e", size = 4904105, upload-time = "2026-10-03T02:49:06.101Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6b/a7a3d5c77c16386e16eb9dc8ba82e0cc6b03d6ee0ef6620921655df82413/sqlalchemy-2.1.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:55e06933580f4faa5a7b1d2c9ad04f365fe01c40465eb982e38fda8758c1e95c", size = 4814161, upload-time = "2026-10-02T23:34:39.253Z" }, - { url = "https://files.pythonhosted.org/packages/63/72/275dac552b869a21774c08a7084bad16bd99f28384b8c95ffcded1a18884/sqlalchemy-2.1.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fdcee9536cb3281b8810787ba651f4e5f22bd687b177de89fba2155b055b07b0", size = 4494471, upload-time = "2026-10-02T23:59:11.642Z" }, - { url = "https://files.pythonhosted.org/packages/e8/3e/41d8071c58a20e2ba9fabc422938a219461f0b32aa537ab69afe06daa0e5/sqlalchemy-2.1.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d2cb28779dbf54067655030d7ab3a6726c7957c56bde5ff6745ed86b5cebff41", size = 4762070, upload-time = "2026-10-03T02:49:08.052Z" }, - { url = "https://files.pythonhosted.org/packages/75/73/b747233b8ad935467eb1f2aa1c466af69831693cab3495c88842bf1bd3ac/sqlalchemy-2.1.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:01a90cac3f8d93fcbda0df119ef56c4d58aad5601f6b7ee5a38bfabbd5d119b8", size = 4494691, upload-time = "2026-10-02T23:59:13.733Z" }, - { url = "https://files.pythonhosted.org/packages/71/aa/ba11b725b9529879aff489e36cdaccc3fd69620fb30b89186792523bc262/sqlalchemy-2.1.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:edbc28049ab8da07387ea2b85ceee747b36b25444ffa4aaba9f6e1461d5b2634", size = 4752692, upload-time = "2026-10-03T02:54:01.04Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/86ec625db10e285ed8459e39ab3e56b7630554bc733e64a190e248eeea25/sqlalchemy-2.1.3-cp314-cp314t-win32.whl", hash = "sha256:724f587ced076d89291032b35476d6bdb401cce1dd680c1e3418c01d9bd55ad4", size = 2436746, upload-time = "2026-10-03T02:56:47.297Z" }, - { url = "https://files.pythonhosted.org/packages/18/be/1309b0b3acfcd6e0060c815762012c66d23eece8c9eb8091da5c850a1289/sqlalchemy-2.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:935085a5b8849d324c22bc3cc09fd07b3669cc22ba5bdd3ec208829e535cdef9", size = 2504160, upload-time = "2026-10-03T02:56:49.705Z" }, - { url = "https://files.pythonhosted.org/packages/9b/b2/ac9067f4d6c43887570df54e6c340ae9c591a8e75a5fd3029a9d7deba163/sqlalchemy-2.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:2ebfff82cece947fea1ed6337d4f0613b9799f6db621c9729790fdd41edfb5ea", size = 2422266, upload-time = "2026-10-02T23:35:30.802Z" }, - { url = "https://files.pythonhosted.org/packages/a0/e5/54a863bf8e12fa97cd06bb2e012aeca53b5535bc07aabe0192a4ed77ed44/sqlalchemy-2.1.3-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:47a052dcd935a62326216bc5f0ed10ad941c77c3acc9200385e0c03c4f31d5a9", size = 2460525, upload-time = "2026-10-03T02:38:02.872Z" }, - { url = "https://files.pythonhosted.org/packages/f9/63/f6f8a8d8e8f8be456bea70ad2b9af90a60a7f98d349b178b9eaaea86431b/sqlalchemy-2.1.3-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e5916b43a9a8f346026f663583f203d0c43febad504ff2fed504dec6e078f20", size = 4579659, upload-time = "2026-10-02T23:35:35.789Z" }, - { url = "https://files.pythonhosted.org/packages/fa/7f/9f1064ef0f8f15e3c1cb8fa7ad5e4fc7e1e311ad0e1e46bc2e77940585bb/sqlalchemy-2.1.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9af78a85af63114e2650f019ddf8fffb871e659e92bffb7d0bce5753f706caf", size = 4615129, upload-time = "2026-10-02T23:38:44.119Z" }, - { url = "https://files.pythonhosted.org/packages/c4/4a/f1a002235cc785d219738e096c7c65f68e9b7ed30c810997236567c50af9/sqlalchemy-2.1.3-cp315-cp315-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d218698c4f05728a941d6ad7c769b6491f03058e102cf811b7e4900f78fffa07", size = 4316528, upload-time = "2026-10-02T23:39:13.275Z" }, - { url = "https://files.pythonhosted.org/packages/a8/9c/6ee4e5ab55558408c16fe1713db415e45024f42cdb1c573ebceacc09d01c/sqlalchemy-2.1.3-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:80e6ccf111bc3f57530935f5541c6c1da50ac9713c418378840683532a45dd2d", size = 4509727, upload-time = "2026-10-03T02:41:25.314Z" }, - { url = "https://files.pythonhosted.org/packages/64/8c/a6bdf2874518c628fdedf24144194afa88cceb70339e5050459cdc2723cf/sqlalchemy-2.1.3-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:9a3ce1ff88dfb9f9f4305da07f4fab87720b609e264d134e47ae84a52df130bd", size = 4316490, upload-time = "2026-10-02T23:39:15.342Z" }, - { url = "https://files.pythonhosted.org/packages/10/3b/d859b638495a63ef7c155a8185369fa86ba2b860154d777e46eba922324f/sqlalchemy-2.1.3-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:77a365f7cb81bbd738c948b64e0b683f8f1b68efe51ca2815e8ad4baf6287ed9", size = 4576491, upload-time = "2026-10-02T23:38:45.97Z" }, - { url = "https://files.pythonhosted.org/packages/23/0b/c560177600613df0cfe27e27c346bac956b631cd5236178b81144e783e9e/sqlalchemy-2.1.3-cp315-cp315-win32.whl", hash = "sha256:83757320391b96cde715af0772675941d3e345da9ced3696c030f7f55ffa8eab", size = 2378116, upload-time = "2026-10-02T23:14:57.441Z" }, - { url = "https://files.pythonhosted.org/packages/d3/72/d39f60d0bc873653c0fec76aa088c969a2394ea7737f18d812fbe0e8c0c5/sqlalchemy-2.1.3-cp315-cp315-win_amd64.whl", hash = "sha256:f87533295b84c9e19ca2a72dc26a76e0192f0a2424f8fd575a82e75e7d58f9e1", size = 2428865, upload-time = "2026-10-02T23:14:58.959Z" }, - { url = "https://files.pythonhosted.org/packages/c5/03/953cf93136de44ee9d6cebee14666dcc2c4a4285fe159b2e459326631e49/sqlalchemy-2.1.3-cp315-cp315-win_arm64.whl", hash = "sha256:3e46a27b0c74af74aa6c08c983ca51db88d22dd86c316d72a634e989b7caef58", size = 2393289, upload-time = "2026-10-02T23:08:31.958Z" }, - { url = "https://files.pythonhosted.org/packages/a2/1e/5b5af9c0fe4e6f713d2ab684b88f10fd1cbe55bd34cca4d676fb930c9da3/sqlalchemy-2.1.3-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:06ef75e3e0c72d774b41f659bfc4f63d5e207d6c8418abe2b80843a4a25e2fa6", size = 2496326, upload-time = "2026-10-03T02:48:37.363Z" }, - { url = "https://files.pythonhosted.org/packages/2b/6c/6192d30fe24edc7c9e98c315341b7342ba7168d1729867c5d87e56285658/sqlalchemy-2.1.3-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70e05ae07dd9be29d4723bd0c880df622387eb51efb46a7b8efd49295248ffd7", size = 4880284, upload-time = "2026-10-03T02:49:10.221Z" }, - { url = "https://files.pythonhosted.org/packages/40/11/a758ae0116ab663f3520970cd870da5616cbb09c369b843239cce50696d7/sqlalchemy-2.1.3-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10fdff11782842696172489bd4861ae63c212e62ee7c4fc61fdda90961abd1f3", size = 4830599, upload-time = "2026-10-03T02:54:03.353Z" }, - { url = "https://files.pythonhosted.org/packages/8a/e8/faa500255fd90f421ef9e918d522aa4f02212b53859c35dadbafb3532bb2/sqlalchemy-2.1.3-cp315-cp315t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:edd3e6690f350c89c616e78e9b58833c3d8925607ac5faf3530f38f053f58e4d", size = 4481272, upload-time = "2026-10-02T23:59:15.592Z" }, - { url = "https://files.pythonhosted.org/packages/3c/4d/26fc9adb3fbc1d5fb8b92043a1639fd111761b8c52a2ce61df8b00ff405d/sqlalchemy-2.1.3-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:e3c165df26eca3d2612f60ea91af02648cb1bd492eadfa64dba15c9a3a0fb09c", size = 4737553, upload-time = "2026-10-03T02:49:12.413Z" }, - { url = "https://files.pythonhosted.org/packages/08/41/3639fc1d9fd7ea201ed4941215c14b87ce3c3b5f5f0190eb93321d673e48/sqlalchemy-2.1.3-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:70c073d28d043766eb1725010792f302f59b14636ffef478793045471efe92dd", size = 4479761, upload-time = "2026-10-02T23:59:17.572Z" }, - { url = "https://files.pythonhosted.org/packages/47/c8/541035b19b34dd581fb24b6fcf065db6fb4f210b9fbf93e1b2bf5f8cd5c0/sqlalchemy-2.1.3-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:bf5f63229512f14e7bffc9a0041386318f592e76bbeaf9b750b39056094d91f3", size = 4757307, upload-time = "2026-10-03T02:54:05.524Z" }, - { url = "https://files.pythonhosted.org/packages/40/a3/bb51886c02a60f1b7fb5461a25d6a3e57ce0557b916032dc3c7a72fae226/sqlalchemy-2.1.3-cp315-cp315t-win32.whl", hash = "sha256:697942762c40e31eb0fa39bf0e58e1ac1b5b1ff9022da62b74f7cdc53096a482", size = 2433533, upload-time = "2026-10-03T02:56:52.298Z" }, - { url = "https://files.pythonhosted.org/packages/e5/8e/1739b378a2b40bfc5541355c9d944b96dffcbe86aa1ed3aff31ad13f5d9b/sqlalchemy-2.1.3-cp315-cp315t-win_amd64.whl", hash = "sha256:a9c33c0d081a9d2c94229b9ae1834cb2ef81dd81253df4763e32111287b64c31", size = 2499211, upload-time = "2026-10-03T02:56:54.801Z" }, - { url = "https://files.pythonhosted.org/packages/5d/9a/ce4ea58551258203381017bc4724369cc8948ac5a46212671266b13424c4/sqlalchemy-2.1.3-cp315-cp315t-win_arm64.whl", hash = "sha256:c36ff11196dacf50312a2cc51a798bb41611331c174871f065be651a838a5361", size = 2418086, upload-time = "2026-10-03T02:44:11.611Z" }, - { url = "https://files.pythonhosted.org/packages/e5/12/23d8fb7ed90e5b674006ace415ede1c60cdfc38ace50968b59ef42c22754/sqlalchemy-2.1.3-py3-none-any.whl", hash = "sha256:6f0cf4debd86cb5623a50310784bd005c215761ca7f618d0d4f46193d033675a", size = 2052603, upload-time = "2026-10-03T02:34:19.115Z" }, -] - [[package]] name = "stack-data" version = "0.6.3"