Skip to content

Two-child limit targets declared at 2026 are structurally unreachable (limit abolished April 2026) #465

Description

@vahid-ahmadi

The nine two-child limit targets are declared at 2026 only, but the limit is abolished from 2026-04-06, so uc_is_child_limit_affected is structurally zero that year. They can never bind.

policyengine_uk_data/targets/sources/dwp.py:203-305:

Target(
    name="dwp/uc/two_child_limit/households_affected",
    variable="uc_is_child_limit_affected",
    values={2026: 453_600},   # <- never reachable
)

policyengine-uk parameters/gov/dwp/universal_credit/elements/child/limit/child_count.yaml:

2017-04-06: 2
2026-04-06: .inf   # Budget 2025 abolition

Model output confirms it (enhanced FRS 2023-24, v1.56.16): every TCL target computes to 0.0 in 2026.

These are April 2025 statistics. Moved to 2025, the model overshoots:

Target Model 2025 Official (Apr 2025) Err
Households affected 608k 454k +34%
Children affected 825k 580k +42%
Children in affected households 2,135k 1,614k +32%

Next steps

  1. Move all nine targets from 2026 to 2025.
  2. Add a registry test that fails when a target is declared in a year where its variable is structurally zero — this class of dead target should not be silently possible.
  3. The +34/+42% overshoot is then a live calibration signal, likely tied to the 3+ children undercount in No calibration targets for UC elements: childcare runs 2.3x official, housing/LCWRA/carer unbenchmarked #466.

cc @MaxGhenis @vahid-ahmadi

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions