Skip to content

Define Belgian target profiles for populace-be #70

Description

@MaxGhenis

Part of the populace-be epic PolicyEngine/populace#259. Depends on the ledger-be source packages issue and the profile-publication pattern in #61; realizes PolicyEngine/populace#160 for Belgium.

What

Define the Belgian target profiles: the calibration contracts binding ledger-be facts to populace-be measurement bindings, so populace consumes targets by reference and carries no values.

Contents

  • Initial profile covering: national demography (age × sex × region), NUTS1 totals, commune fiscal income, PIT aggregates, ONSS/RSZ aggregates, program caseloads (unemployment, pensions, regional child benefit).
  • Criticality tiers mirroring the US release contract's named requirements (critical targets with tolerances, e.g. PIT total ±5%; caseloads ±15%) so the target_profile_coverage gate has something to check.
  • Basis-period declarations. BE-SILC year N carries year N−1 incomes; profiles must state each target's basis period explicitly so the build's period bookkeeping and the diagnostics agree. Where a target needs a different period than the source fact provides, the profile references a projection (see the facts-vs-projections schema issue), never a silently reused stale level — the lesson from Cross-check: Populace US 2024 net income & tax ~37–43% below Enhanced CPS (benefits match) populace#212 (SOI TY2022 levels applied un-aged ran simulated 2025 ~6–10% low).
  • Geography vintage binding. Commune-grain rows bind to a declared NIS vintage; mismatch with the build spine's vintage is a compile error.

Acceptance

  • populace-be's spec references these profiles by id/version; changing a target value requires a Ledger change, not a populace change.
  • The profile validates against the target-profile schema and is published per the Publish Ledger target profile artifacts for Populace builds #61 artifact pattern.
  • At least one target demonstrates the projection-basis path end to end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions