Conversation
uc_earned_income and uc_unearned_income summed every member of the benefit unit, so a dependent child's or qualifying young person's wages, profits, savings interest, dividends, rent or pension reduced the parents' award. WRA 2012 s. 8(4) and UC Regs 2013 reg. 22(1) deduct the income of the claimant, or the combined income of joint claimants. - is_uc_assessed_claimant: the single claimant or the two members of the couple whose income counts (is_uc_claimant, limited to the two eldest, as the reg. 62(3) couple rule already did). - uc_earned_income, uc_unearned_income: sum over the assessed claimants. - is_benefit_cap_exempt_earnings: reg. 82(1)(a) tests the claimant's or the couple's earned income, so a dependant's job no longer lifts the cap. - uc_childcare_work_condition: reg. 32(1) tests the claimant and the other member of the couple, not every member aged 18 or over. - add_for_members: the helper and its import are byte-identical to #1896's. Fixes #1976 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
YAML cases computed by hand from regs 22, 36, 80A and 82, and Hypothesis properties: a dependant's income never changes UC; earned and unearned income match the regulation's closed form; at most two assessed claimants; member order does not matter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; stronger properties - uc_childcare_work_condition and uc_mif_applies read is_uc_assessed_claimant, so a third flagged member's work neither meets nor blocks the condition. - benefit_cap_reduction counts person-level benefits for the claimants only (WRA 2012 s. 96(1), reg. 80(1)). - Property tests build capped and childcare families, give dependants contributory benefits, flag every member as a claimant, and check earned and unearned income against the reg. 22 and reg. 72 figures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eption threshold Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Coordination with #1999 (fixes #1986), which this PR will meet once both are on
A test merge of 🤖 Generated with Claude Code |
|
Coordination with #2076, stacked on #2027. #2076 rewrites
Before, a non-dependent adult's own award reduced the family's UC: with UC of £20,000 before the cap, a non-dependant's £5,000 of ESA cut UC from £14,753 to £9,753. Whichever lands second: keep #2076's claimant-or-partner lists alongside this PR's changes. |
|
Coordination with #2084 (UC claim by a member of a couple as a single person, UC Regs 2013 reg 3(3)). There, For this PR: Two more points from that PR's review:
|
Fixes #1976
Summary
Universal Credit counted the income of every member of the benefit unit.
uc_earned_incomesummeduc_individual_earned_incomeover all members anduc_unearned_incomesummed its source list over all members, so a dependent child's or qualifying young person's wages, profits, savings interest, dividends, rent or pension reduced the parents' award. The law counts the claimant's income only (or joint claimants' combined income).A 2026 example: a lone parent aged 40 with no income, and a 17-year-old in upper secondary education.
£9,321.36 is 12 × (£424.90 + £351.88), the 2026-27 standard allowance and first-child element in the reg 36 table.
Two other Universal Credit tests read every member's earnings and are fixed the same way: the benefit cap earnings exception and the childcare work condition.
The impact number needs reading with care. On the Enhanced FRS this raises 2026 UC by £4.97bn. Only £0.22bn of that is in households with survey-reported incomes. The other £4.75bn is in the dataset's SPI-synthetic households, where policyengine-uk-data gives every child imputed employment income (PolicyEngine/policyengine-uk-data#504, found here). The model bug was hiding that data bug in UC. See "Impact".
Stacked on #1973 (minimum income floor), which is stacked on #1949 and #1943.
Law (legislation.gov.uk
/data.xml, read 2026-09-30)Welfare Reform Act 2012 s.8(3)-(4), on the amounts deducted from the maximum amount:
s.40: "“claimant” means a single claimant or each of joint claimants". s.2(1): a claim is made by "a single person" or "members of a couple jointly". So a claim has at most two claimants, and a child or qualifying young person is never one of them.
UC Regulations 2013 reg 22(1) deducts:
Reg 22(3) adds one person: where a member of a couple claims as a single person, the deduction is "the same as the amount that would be deducted ... if the couple were joint claimants". No provision brings a child's income in.
Reg 82(1)(a), the benefit cap earnings exception:
Reg 32(1), the childcare work condition:
Guidance. DWP's Advice for Decision Making says the same of income for claimants (E2191: "All of the claimant's unearned income ... should be deducted ... Where the claim is from joint claimants then the deduction is all of their combined unearned income"). It has no paragraph on a child's income, because nothing in the regulations brings it in. It is explicit on capital (H1077: capital owned by "a dependent child or qualifying young person is not to be included in the capital of the claimant").
Contrast with the old benefits: Income Support counted a child's income until 2004 (IS Regs 1987 regs 23 and 44), and Housing Benefit needed an express exclusion (HB Regs 2006 reg 25(3)). Universal Credit never counted it.
Change
is_uc_assessed_claimant(new): the single claimant or the two members of the couple whose income counts. It isis_uc_claimantlimited to the two eldest, the rule Apply the UC minimum income floor to net earned income against a net threshold #1973 already used for the reg 62(3) couple threshold. Where the data flag more than two claimants (an adult child in the parents' benefit unit), the others' income does not count.uc_earned_income: sums the assessed claimants'uc_individual_earned_income, then takes off the work allowance.uc_unearned_income: sums person-level sources over the assessed claimants. Benefit-unit sources (uc_tariff_income) are added as they are. The capital yield that tariff income replaces (reg 72(3)) is the claimants' own.is_benefit_cap_exempt_earnings: sums the assessed claimants' earnings. Nothing else in that formula changes.uc_childcare_work_condition: tests the claimants' work, not every member aged 18 or over. This file is identical to Replace generic child and adult flags with each programme's legal definitions #1896's version.uc_individual_earned_income: readsis_uc_assessed_claimantinstead of computing the same thing inline. No change in behaviour.add_for_members(policyengine_uk/utils/benefit_unit.py, exported frommodel_api): sums person-level variables over chosen members. The file and the import line are byte-identical to Replace generic child and adult flags with each programme's legal definitions #1896's, so the two PRs merge without conflict there.Overlap with open PRs
uc_earned_incomeanduc_unearned_incometoo. It limits the sums to the claimant, partner and the programme's own children, and says "dropping dependants' own income is a follow-up". This is that follow-up. Whichever merges second keeps claimants only. Replace generic child and adult flags with each programme's legal definitions #1896 also makesis_uc_claimantat most two people, after which the two-eldest limit here does nothing.is_benefit_cap_exempt_earningsto deduct only tax on earnings and to use a dated threshold. It still sums every member. The combined end state is Fix benefit cap exemption defects (#1818) #1820's formula summed overis_uc_assessed_claimant.Tests
YAML tests, expectations computed by hand from regs 22, 36, 80A and 82 (derivations in the comments):
is_uc_assessed_claimant.yaml: lone parent and child; couple and qualifying young person; an adult child flagged as a third claimant; three flagged claimants in any order.income/uc_earned_income.yaml: the example above with the UC award; joint claimants earning £10,000 and £5,000 with an 18-year-old earning £8,000 (earned income 15,000 − 8,520 = 6,480; UC 12 × (£666.97 + £351.88) − 55% × 6,480 = £8,662.20); a third adult's earnings; a dependant's self-employed profits (no minimum income floor either).income/uc_unearned_income.yaml: a dependant's interest, dividends, rent, pension and Carer's Allowance do not count while the parent's pension does; the savings-interest example with the UC award; with tariff income, a dependant's interest is neither added nor taken off.dependants_earnings.yaml: a young person's £12,000 does not meet the benefit cap earnings exception (cap £22,020, reg 80A(2)(d)(ii)); the claimant's own earnings and joint claimants' combined earnings still do; an 18-year-old's job neither meets nor blocks the childcare work condition.Eleven of the new cases fail on #1973's head; the rest check that claimants' own income still counts.
Mutation check. Undoing each of the five changes in a scratch copy makes the tests fail: results to follow in a comment.
Invariants
Property tests (
test_uc_claimant_income_properties.py, Hypothesis) generate single claimants, couples and mixed-age couples with up to three dependants aged 0 to 19 (in and out of education), with rent, childcare costs and capital, in England, Wales and Scotland, for 2020, 2026 and 2027.The same invariants hold on the whole Enhanced FRS, checked in the impact scripts for every year from 2025 to 2030:
Impact (Enhanced FRS, real runs)
Base: #1973's head
baff2d793. Branch:15e790d87(the runs recordeddea7fb09b, whose tree is identical). Neither has uncommitted changes. Both use a copy of the Enhanced FRS 2024-25 (enhanced_frs_2024_25.h5, sha256e433e532…), one realMicrosimulationper state. Benefit units in thousands, survey records in brackets.2026 UC goes from £78.7bn to £83.7bn, and the caseload from 6.33m to 6.52m benefit units.
Where it comes from (2026). Each benefit unit whose UC changes is assigned to the first source of non-claimant income it has:
Why under-16s have earnings. The Enhanced FRS is the FRS plus a synthetic copy whose incomes are imputed from HMRC's Survey of Personal Incomes. The imputation predicts income for every person in the copy from age, sex and region, children included (PolicyEngine/policyengine-uk-data#504). All 7,856 under-16 records in synthetic households have employment income; none of the 12,895 in FRS-origin households does. In 2026 that is £74bn of earnings on 3.7 million children. Before this PR those earnings cut their parents' UC.
The same real runs split by household origin (2026):
So in households with survey-reported incomes this PR is worth about £0.22bn a year, to about 161,000 families whose teenagers have a job or whose children have savings interest. That figure rests on 82 records, and the ten largest account for 53% of it.
Sensitivity. The last column of the first table repeats both runs on a copy of the data with under-16
employment_incomeset to zero and nothing else changed (sha256b34ac1d7…). It is larger than the FRS-origin figure because synthetic 16- and 17-year-olds keep their imputed earnings and synthetic children keep imputed savings interest. In 2026: 553k units gain (773 records), 12.7k lose (6 records).Benefit cap (2026). 187k benefit units (407 records) no longer meet the earnings exception through a dependant's earnings, and the cap takes £0.25bn more. The two losing records are capped families who were exempt only because of a child's earnings.
Other programmes (2026). Tax-Free Childcare falls £0.07bn, because families newly entitled to UC cannot claim it in the model. Scottish Child Payment rises £0.03bn and the targeted childcare entitlement £0.01bn. Nothing else moves. Household net income rises £4.93bn: 685k households are better off, and 38k are worse off through Tax-Free Childcare.
Poverty (2026). AHC poverty falls 0.30 points and child AHC poverty 0.83 points (BHC: 0.04 and 0.10). With under-16 earnings zeroed the falls are 0.25 and 0.71 points.
What this means for published numbers. The model bug and the data bug offset each other in UC. On the base model, setting under-16 earnings to zero raises 2026 UC from £78.7bn to £82.9bn; on this branch it is £83.7bn either way. Fixing the data alone would move UC by about as much as this PR does, and would also take £63bn out of household net income and raise measured child AHC poverty from 24.0% to 29.3% (details in policyengine-uk-data#504). The dataset's weights were calibrated with the old model, so UC totals will sit above their targets until the data are rebuilt on this version.
Known gaps (follow-ups, not in this PR)
uc_carer_element, the LCWRA element and the limited-capability route to the work allowance read every member, so a dependant's caring or disability can add an element. Flagged as a separate task.is_benefit_cap_exempt_earningsstill uses a fixed £10,152 and deducts all income tax. Fix benefit cap exemption defects (#1818) #1820 fixes both.is_uc_claimanttreats an 18- or 19-year-old as a claimant unless a parent is flagged withis_parent, and with more than two flagged claimants the two eldest are taken. Replace generic child and adult flags with each programme's legal definitions #1896 replaces this with claimant and partner.Axiom parity
axiom: queued (rulespec-uk issue to follow)
🤖 Generated with Claude Code