PolicyEngine / PolicyEngine/policyengine-uk-data
Two-child limit targets declared at 2026 are structurally unreachable (limit abolished April 2026)
@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
- Move all nine targets from
2026to2025. - 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.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.