Part of the populace-be epic PolicyEngine/populace#259. Sibling: the BE target-profiles issue.
What
Author ledger-be source packages for the open Belgian aggregate series that will drive populace-be calibration and validation. Pure public statistics — no licence friction. Each is a source_package.yaml + declarative selectors under packages/ following the agent-source-package harness and governance rules.
Initial package list (verify exact series/table names against the publishers during authoring — the validate-package harness gates):
- Statbel — fiscal statistics of income by municipality (statistique fiscale des revenus / fiscale statistiek van de inkomsten): total net taxable income, filer counts, income distribution per commune. The flagship subnational series.
- Statbel — population structure: age × sex × commune/region, reference-date population.
- ONSS/RSZ: employment and social-contribution aggregates by sector/region.
- ONEM/RVA: unemployment benefit caseloads.
- SFPD: pension caseloads and expenditure.
- Regional child benefit (post-2019 regionalization): caseload/expenditure per region (Groeipakket and counterparts).
- NBB national accounts: household-sector income levels (validation-tier anchor).
- Federal Planning Bureau: economic outlook series (the OBR-analog for projections) + published reform costings referenced by the validation oracle.
- EUROMOD-BE country statistics: published baseline aggregates used as comparators.
Geography requirement (blocking for subnational packages)
Commune NIS codes change across years (municipal mergers). Every subnational fact carries geography vintage metadata, same mechanism as the congressional-district vintage work (PolicyEngine/populace#205): facts declare their code-set vintage; consumers get a compile error on vintage mismatch rather than a silent partial join. A NIS-code vintage crosswalk (old→merged communes) is part of this issue.
Acceptance
- Packages pass
validate-package; facts load with full lineage to source cells.
- Subnational facts all carry geography vintage; the crosswalk exists for at least the most recent merger wave.
- The sibling target-profiles issue can bind these facts without any populace-side value copying.
Part of the populace-be epic PolicyEngine/populace#259. Sibling: the BE target-profiles issue.
What
Author
ledger-besource packages for the open Belgian aggregate series that will drive populace-be calibration and validation. Pure public statistics — no licence friction. Each is asource_package.yaml+ declarative selectors underpackages/following the agent-source-package harness and governance rules.Initial package list (verify exact series/table names against the publishers during authoring — the validate-package harness gates):
Geography requirement (blocking for subnational packages)
Commune NIS codes change across years (municipal mergers). Every subnational fact carries geography vintage metadata, same mechanism as the congressional-district vintage work (PolicyEngine/populace#205): facts declare their code-set vintage; consumers get a compile error on vintage mismatch rather than a silent partial join. A NIS-code vintage crosswalk (old→merged communes) is part of this issue.
Acceptance
validate-package; facts load with full lineage to source cells.