PolicyEngine / PolicyEngine/policyengine-uk-data

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

Open
#465 1 comment 0 reactions 1 assignee View on GitHub

@juaristi22 is already working on this.

Since Aug 21, 2026.

Dominant language
Python
Stars
1
Forks
2
Avg merge
1d 14h
Merged PRs (30d)
4

Description

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 #466.

cc @MaxGhenis @vahid-ahmadi

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.