Skip to content

Take Housing Benefit earnings disregards from net earnings only - #1908

Merged
MaxGhenis merged 12 commits into
mainfrom
hb-earnings-disregards
Oct 3, 2026
Merged

MaxGhenis merged 12 commits into
mainfrom
hb-earnings-disregards

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #1794.

Review rounds

  • Round 1 (Opus) and Vahid Ahmadi: resolved; see the comments.

  • Round 2 (Opus, 10/2): five minors, fixed in 97705be:

    • para 12 applies at any age (SI 2006/213 reg 5(1)(b));
    • statutory sick and maternity pay count as earnings;
    • the income tax share is taken before losses;
    • the £14.90 of 2006-07 (SI 2006/645) is added;
    • a false "largest possible loss" sentence is corrected.
  • Round 3 (10/2-10/3, partial; two lane cut-offs). Fixed:

    • the model taxes statutory pay but total_income omits it, so statutory pay now enters the tax share (156f03a);
    • every negative total_income component is added back in the tax share, not just employment and self-employment losses (008d2d3);
    • a stale sentence about the pension-age gate and stale test counts in this body;
    • the £1,186.91 arithmetic;
    • the SI 2006/645 article numbers (728fb30).

    Also new law, not modelled here: HB Sch 4 para 18, in force 5 October 2026 (see Not in this PR).

  • Main merged at 008d2d3. It includes Replace generic child and adult flags with each programme's legal definitions #1896 (see the end of the body) and means_test_income_members.yaml, whose four HB disregard cases had expected the old uprated flat amount.

  • Main merged at 156f03a, with Replace generic child and adult flags with each programme's legal definitions #1896: see the end of the body.

Problem

housing_benefit_applicable_income_disregard gave every single person £5 a week, every couple £10 and every lone parent £25, whether or not anyone had earnings. housing_benefit_applicable_income then took it off total income, including the State Pension, private pensions and benefits. The amounts carried uprating: gov.benefit_uprating_cpi, so £5 had become £7.02 a week by 2026. The "worker" disregard was £37.10, also uprated (£52.11 a week in 2026). It went to any benefit unit whose members' hours added together exceeded 30 (16 for lone parents), with no age condition, no earnings test and none of the other conditions.

2026, council tenant, rent £6,240 main: disregard → applicable income → HB this PR
A. Single aged 72, State Pension £15,000, no earnings £365.20 → £14,148.80 → £5,696.08 £0 → £14,514.00 → £5,458.70
B. As A, plus earnings £1,000 £365.20 → £14,948.80 → £5,176.08 £260.00 → £15,054.00 → £5,107.70
C. Single aged 40, 30 hours, earnings £10,000 (continuing award) £365.20 → £9,634.80 → £3,206.97 £1,149.20 → £8,850.80 → £3,716.57
D. Single aged 24, 35 hours, earnings £10,000 (continuing award) £3,075.01 → £6,924.99 → £4,295.73 £260.00 → £9,740.00 → £2,465.97
E. Lone parent, 10 hours, earnings £1,040, child aged 5 £1,826.02 → £620.58 → £6,240 £1,040.00 → £1,406.60 → £6,240
F. Childless couple aged 40, 16 hours each, £4,000 each £3,440.22 → £4,559.78 → £6,240 £520.00 → £7,480.00 → £6,240

These are real runs of origin/main (1c5b4d0) and this branch. A, B and C are the three end-to-end YAML cases below. A has no earnings, so the law disregards nothing. C works exactly 30 hours: main required more than 30, so it gave no worker disregard. D is under 25, so the law gives no additional disregard. E's disregard is capped at earnings; HB is at the maximum either way. In F neither partner works 30 hours, but main added their hours together.

The pension-age allowance in A and B (£256 vs £238). The model gives every pension-age single claimant £256 a week (£13,312 a year). In law that is the rate for a claimant "who has attained pensionable age before 1st April 2021"; one who attained it "on or after 1st April 2021" has £238.00 (SI 2006/214 Sch 3 para 1(1), as amended by SI 2021/188). A and B are aged 72, so they reached pensionable age before that date, and £256 is also the law's rate for them. A claimant aged 70 in 2026-27 reached it later: at £238 this branch gives £4,850.30 (A) and £4,499.30 (B), but the change from main is the same (−£237.38 and −£68.38), since both are on the taper either way. #1913 splits the allowance by that date. The end-to-end YAML sets the applicable amount as an input, so it tests the disregard whether or not #1913 lands.

Law

All texts were read from legislation.gov.uk CLML (/data.xml) on 2026-09-30. The current revised texts, point-in-time versions and commentaries are saved in the research folder.

SI 2006/213 (working age), Schedule 4: "Sums to be disregarded in the calculation of earnings" (regs 36(2) and 38(2)).

  • Para 4: "In a case where the claimant is a lone parent, £25."
  • Para 7: "In a case where paragraphs 3, 5, 6 and 8 do not apply to the claimant and he is one of a couple and a member of that couple is in employment, £10; but … if this paragraph applies to a claimant it shall not apply to his partner except where, and to the extent that, the earnings of the claimant which are to be disregarded under this paragraph are less than £10."
  • Para 10: "In a case to which none of the paragraphs 3 to 9 applies, £5."
  • Para 12: "Where a claimant is on universal credit, income support, an income-based jobseeker's allowance or an income-related employment and support allowance, his earnings."
    • It has no age condition. SI 2006/213 applies to a claimant who "has attained the qualifying age for state pension credit if he, or if he has a partner, his partner, is a person on universal credit, on income support, on an income-based jobseeker's allowance or on an income-related employment and support allowance" (reg 5(1)(b)). SI 2006/214 "shall not apply" to such a person (reg 5(2)).
  • Para 17(1): "In a case where the claimant is a person who satisfies at least one of the conditions set out in sub-paragraph (2), and his net earnings equal or exceed the total of the amounts set out in sub-paragraph (3), the amount of his earnings that falls to be disregarded under paragraphs 3 to 10A of this Schedule shall be increased by £17.10."
  • Para 17(2)(b):
    • (i) the claimant "is, or if he is a member of a couple, at least one member of that couple is aged at least 25 and is engaged in remunerative work for on average not less than 30 hours per week";
    • (ii) the claimant "is a member of a couple and— (aa) at least one member of that couple, is engaged in remunerative work for on average not less than 16 hours per week; and (bb) … his family includes at least one child or young person";
    • (iii) the claimant "is a lone parent who is engaged in remunerative work for on average not less than 16 hours per week";
    • (iv) and (v): a single claimant, or a member of a couple, working 16 hours, who has the disability premium or support component or is in the work-related activity group.
  • Para 17(3): "(a) the amount to be disregarded from the claimant's earnings under paragraphs 3 to 10A of this Schedule; (b) the amount of child care charges calculated as deductible under regulation 27(1)(c); and (c) £17.10."

SI 2006/214 (pension age), Schedule 4: "Sums disregarded from claimant's earnings" (reg 36(1)).

  • Para 2: "In a case where a claimant is a lone parent, £25 of earnings."
  • Para 7: "Except where the claimant or his partner qualifies for a £20 disregard under the preceding provisions of this Schedule— (a) £5 shall be disregarded if a claimant who has no partner has earnings; (b) £10 shall be disregarded if a claimant who has a partner has earnings."
  • Para 9(1): the same test as para 17(1), with "the amount of his earnings that falls to be disregarded under this Schedule shall be increased by £17.10".
  • Para 9(2)(b):
    • (i) "is, or any partner of his is, aged at least 25 and is engaged in remunerative work for on average not less than 30 hours per week";
    • (ii) and (iii): as working age;
    • (iv) "is, or if he has a partner, one of them is, engaged in remunerative work for on average not less than 16 hours per week, and paragraph 5(1) above is satisfied in respect of that person".
  • Para 9(3): "(a) any amount disregarded under this Schedule; (b) the amount of child care charges calculated as deductible under regulation 31(1)(c) (treatment of child care charges); and (c) £17.10."
  • The pension-age lone parent: £25, not £25 + £5 (the reading adopted). Para 1 caps the total only "Where two or more of paragraphs 2 to 5 apply", and para 7 is withheld only where the claimant or partner "qualifies for a £20 disregard". Read literally, a lone parent could therefore add para 7(a)'s £5 to para 2's £25. This PR gives £25. DWP's HB guidance manual supports that reading: BP2 (pension age), para P2.159 (Amendment 21, March 2010), citing HB(SPC) Sch 4 para 2, says £25 "is the maximum disregard that can be applied if the claimant is a lone parent", and lists the £5 for "a single person". (BP2 PDF.) The working-age schedule has no such question: para 10's £5 applies only "In a case to which none of the paragraphs 3 to 9 applies".

Net earnings.

  • SI 2006/213 reg 36:
    • (2): "There shall be disregarded from a claimant's net earnings, any sum, where applicable, specified in paragraphs 1 to 14 of Schedule 4."
    • (3): net earnings are "the gross earnings … less— (a) any amount deducted from those earnings by way of— (i) income tax; (ii) primary Class 1 contributions under the Act; (b) one-half of any sum paid by the claimant by way of a contribution towards an occupational pension scheme; (c) one-half of the amount … in respect of any qualifying contribution".
  • Self-employed: reg 38 (net profit less income tax and NI under reg 39, and half of qualifying premiums); reg 38(10): a loss in one employment "shall not be offset against his earnings in any other of his employments".
  • Pension age: SI 2006/214 reg 36(1) ("subject to regulation 33(5) and Schedule 4, be his net earnings") and (2) (same deductions); reg 39 for the self-employed.
  • Children: "The income and capital of a child or young person shall not be treated as the income and capital of the claimant" (213 reg 25(3); 214 reg 23(3)).
  • Hours: reg 6(1) defines remunerative work as "not less than 16 hours a week"; para 17(4) and para 9(4) apply it with 30 hours.

Why para 17(2)(a) and (c) add nothing.

  • (a): the claimant is "a person to whom regulation 20(1)(c) of the Working Tax Credit Regulations applies". That is the 30 hour element, for a single claimant working 30 hours, a couple either of whom works 30, or a couple with a child working 30 hours between them with one working 16 (WTC Regs reg 20(1)(c)). WTC entitlement needs one of the reg 4 second-condition variations: a child, a disability, aged at least 25 and working 30 hours, or aged at least 60 and working 16 hours. Beyond (b), route (a) adds only two cases: a couple whose 30-hour worker is under 25 and whose partner is aged at least 60 and works 16 hours, and a disability that meets the WTC test (reg 9) but not the disability premium test. Neither is modelled. Since SI 2014/1230 reg 6A(9), "a person may not make, or be treated as making, a claim for a tax credit in respect of the whole, or any part, of the tax year beginning on 6th April 2025 or any subsequent tax year".
  • (c): the 50 plus element in WTC Regs reg 18 was "omitted (6.4.2012)" by SI 2012/848.

Amounts over time. I fetched point-in-time versions from legislation.gov.uk.

  • £5, £10 and £25: identical at 6 March 2006 (when the regulations came into force), 5 April 2010, 1 April 2015, 6 April 2020, 5 April 2021 and in the current text. There is no amending annotation on those paragraphs. They have never been uprated.
  • £17.10: £14.50 as made (6 March 2006), £14.90 from April 2006, £15.45 from April 2007, £16.05 from April 2008, £16.85 from April 2009, and £17.10 from 1 April 2010. The £17.10 was substituted by the Social Security Benefits Up-rating Order 2010 (SI 2010/793 art 19(10) for 213, art 20(9) for 214). The £14.90 came from the Social Security Benefits Up-rating Order 2006 (SI 2006/645 arts 19(9) and 20(7)). It amended the provisions the 2006 Regulations consolidated, so legislation.gov.uk's revised texts of 213 and 214 never show it. SI 2007/688 arts 19(9) and 20(9) then substitute "£15.45" for "£14.90". Since then the up-rating orders have only "maintained" it (SI 2020/234, SI 2021/162) or "confirmed" it (SI 2026/148, arts 23(10) and 24(9)).
  • The exception is SI 2020/371 reg 5. It read both schedules "as if, for "£17.10" there were substituted "£37.10"", and "This regulation takes effect on 6th April 2020 and ceases to have effect at the end of 4th April 2021". The model's £37.10 (dated 2015 and uprated with CPI) matches that temporary coronavirus figure.

Northern Ireland. The NI earnings disregards are in Schedule 5, not Schedule 4 (Schedule 4 of both NI instruments is applicable amounts).

  • SR 2006/405 Sch 5: paras 4 (£25), 7 (£10), 10 (£5), 12 and 17 (£17.10).
  • SR 2006/406 Sch 5: paras 2 (£25), 7 (£5/£10) and 9 (£17.10).
  • The wording matches GB, and the coronavirus change is SR 2020/53 reg 5, with the same dates.
  • legislation.gov.uk's current text of SR 2006/406 Sch 5 para 9(1) still displays "£37.10". Its own annotations record the sum as confirmed by every NI up-rating order from 2021 to 2026 (latest SR 2026/59 art 24(8)), and SR 2020/53 reg 5(3) ended the substitution on 4 April 2021. So £17.10 applies.

Change

  • housing_benefit_net_earnings (new, benefit unit), for each claimant or partner (is_claimant_or_partner, from Replace generic child and adult flags with each programme's legal definitions #1896):
    • employment income plus self-employment profit, each floored at zero (reg 38(10)), plus statutory sick pay and statutory maternity pay (213 reg 35(1)(i): "any statutory sick pay, statutory maternity pay, statutory paternity pay, ..."; 214 reg 35(1)(h): "statutory sick pay and statutory maternity pay payable by the employer"). HB income already counts SSP and SMP. It does not count statutory paternity pay at all, so that is left out here too. The model taxes SSP and SMP as employment income (employment_benefits) but leaves them out of total_income, so they are added to both sides of the income tax share below;
    • less income tax attributed to earnings, Class 1, 2 and 4 National Insurance, and half of pension contributions;
    • floored at zero.
    • Only the claimant's and partner's earnings count. A child's or a qualifying young person's do not (213 regs 19(1) and 25(3); 214 reg 23(3)).
    • Income tax. The regulations deduct the income tax deducted from an employee's earnings (213 reg 36(3); 214 reg 36(2)). For the self-employed they deduct a notional basic-rate tax on the profit alone, less personal reliefs (213 reg 39(1); 214 reg 40(1)). The model attributes a person's income tax to earnings, including statutory pay, in proportion to their share of total income plus statutory pay, measured before employment and self-employment losses. A loss set against other income would otherwise make total income small or negative, and drop the tax on the earnings.
      • For an employee that is a lower bound on the tax on the earnings taken as the top slice of income. On a grid of 162 combinations of earnings (£500 to £130,000) with State Pension, private pension, savings, dividend and property income, at ages 40 and 70, it never exceeded that.
      • For self-employment profit alongside other income it can exceed the notional tax, which is computed on the profit alone.
      • It is exact for an employee whose earnings are their only taxable income, and whenever no tax is due. The dataset check below shows the choice changes no one's HB in 2026.
  • meets_housing_benefit_additional_earnings_disregard_conditions (new). One of:
    • one claimant or partner aged at least 25 works at least 30 hours;
    • a lone parent, or a couple with a child or young person, with someone working at least 16 hours;
    • a disabled claimant or partner working at least 16 hours. Disability is is_disabled_for_benefits, the input behind disability_premium.
    • Hours are individual, not summed, and "not less than" is >=.
    • Only the claimant's and partner's hours count (is_claimant_or_partner). "Family includes a child or young person" uses is_child_or_young_person_for_legacy_benefits.
  • housing_benefit_applicable_income_disregard (rewritten):
    • min(£25 lone parent / £10 couple / £5 otherwise × 52, net earnings);
    • plus £17.10 × 52 where the conditions hold and net earnings ≥ that amount + housing_benefit_applicable_income_childcare_element + £17.10 × 52. "Equal or exceed" is compared in pence. Net earnings are float32, so exactly £1,149.20 is held as £1,149.19995, and an exact comparison failed at equality;
    • or all net earnings for a benefit unit on Income Support, income-based JSA or income-related ESA, at any age (213 Sch 4 para 12, which reg 5(1)(b) applies whatever the claimant's age). "On universal credit" is left out because a family claiming UC is not HB-eligible in the model.
  • Parameters:
    • single, couple, lone_parent: no uprating, dated from 6 March 2006, with references to both instruments and NI and the "disreagrded" typo fixed.
    • worker: £14.50 from 6 March 2006, £14.90 from 1 April 2006, £15.45 (2007), £16.05 (2008), £16.85 (2009), £17.10 from 1 April 2010, £37.10 for 2020-21, £17.10 from 5 April 2021, no uprating.
    • worker_hours: 30, with its references corrected.
    • New worker_hours_lower (16) and worker_age (25).
    • New means_test/pension_contribution_deduction_rate (0.5).
  • housing_benefit_applicable_income.py is unchanged, since fix 1 edits it. It still subtracts the disregard from total income; with the disregard now capped at net earnings, that is the same as taking it from earnings.

The pension-age and working-age schedules give the same result in every case the model covers, given the lone-parent reading above. Para 12 is not an exception, because it applies at any age where its benefits are in payment. A property test checks this metamorphically, within the limits stated under Invariants. The disregard has no age condition of its own.

Invariants

These are property-tested in test_housing_benefit_earnings_disregard_properties.py: Hypothesis, derandomize=True, 5 examples of up to 30 families (single, couple, lone parent, couple with children; ages 18 to 90, including 24 and 25; hours including 15, 16, 29 and 30; earnings £0 to £60,000; disability; pension contributions; childcare). Runtime is 48 s on an idle host (113 s under load in the latest run).

  1. 0 ≤ disregard ≤ min(net earnings, (£25 + £17.10) × 52), and net earnings ≤ the claimant's and partner's gross earnings.
  2. No earnings, no disregard.
  3. The disregard is non-decreasing in employment income, holding IS, JSA and ESA at zero. Leaving Income Support as earnings rise can lower it, because para 12 stops applying. That is an intended violation.
  4. £5, £10 and £25 are the same in every year 2015 to 2030, and £17.10 every year except 2020, which is £37.10. The 2020 value is the intended SI 2020/371 exception, read through the model's 30 April fiscal-year sampling.
  5. The disregard never raises applicable income, and lowers it by no more than the claimant's and partner's gross earnings.
  6. Metamorphic: moving every adult between working age (25 to 60) and pension age (67 to 90), with earnings below the tax and NI thresholds, leaves the disregard unchanged. The test covers only those earnings and adults aged 25 or over. There, nothing age-dependent (the age-25 test, NI above State Pension age) can differ between the two groups; IS, JSA and ESA are held at zero. So it pins the current behaviour; it is weak evidence that the two schedules agree in general.
  7. Differential against the old formula read at its unuprated 2015 values (£5, £10 or £25, plus £37.10 for summed hours over 30, or 16 for lone parents):
    • They agree where net earnings cover the flat amount and neither formula gives the additional disregard.
    • They must differ where there are no earnings (new: 0) and where net earnings are below the flat amount (new: net earnings).
  8. Para 12: with Income Support, every unit's disregard equals its net earnings, at working or pension age.
  9. The additional sum at each up-rating: £14.50 (March 2006), £14.90, £15.45, £16.05, £16.85, £17.10, and £37.10 in 2020-21.

Mutation check. Ten mutations were each applied to a scratch copy of the branch (before the review round) and run against the new YAML and property tests. The unmutated control passed both.

  • The YAML catches all 10.
  • The property tests alone catch 5 of the 10:
    • M1, CPI uprating restored on £5;
    • M2, no cap at net earnings;
    • M5, the net-earnings test dropped;
    • M6, para 12 dropped;
    • M7, the additional amount back at £37.10.
  • They miss the other 5, all of which the YAML catches:
    • M3, > for the 30 hours;
    • M4, the age-25 condition dropped;
    • M8, childcare left out of the earnings test;
    • M9, tax not deducted from net earnings;
    • M10, children's earnings counted.
  • The first review added M11, applying para 12 at pension age too. The round-2 review showed that M11 is the law (reg 5(1)(b)), so the code now does it. The new mixed-age YAML case and test_income_support_disregards_all_earnings_at_any_age catch the old pension-age exclusion.

Tests

  • New YAML files (54 cases). Every expectation is hand-computed in a comment from the law and the 2026 parameters (personal allowance £12,570, basic rate 20%, Class 1 primary threshold £241.73 × 52, 8%; HB allowances £95.55 and £256 a week; taper 65%). Two cases pin known model limitations and say so; their comments give the law's value too.
    • applicable_income/housing_benefit_applicable_income_disregard.yaml (30, including a mixed-age couple whose partner is on income-related ESA → all £3,000 of earnings, para 12 via reg 5(1)(b)):
      • pensioner with only a State Pension → 0; £3 a week → £156; £100 a week → £260 in 2026 and 2030;
      • couple £520; couple earning £3 + £4 → £364; lone parent £20 a week → £1,040, £100 a week → £1,300;
      • 30 hours aged 30 → £1,149.20; exactly 25 and exactly 30 hours → £1,149.20; aged 24 → £260; 29 hours → £260;
      • the para 17(1) earnings test ("equal or exceed"): net earnings £1,149 → £260, a penny below (£1,149.19) → £260, exactly £1,149.20 → £1,149.20, £1,150 → £1,149.20;
      • lone parent 16 hours → £2,189.20, but £1,300 at £40 a week; a penny below (£2,189.19) → £1,300, exactly £2,189.20 → £2,189.20;
      • childcare £80 a week defeats the test (£5,200 < £6,349.20) → £1,300, childcare £20 a week does not → £2,189.20;
      • couple with child, 16 hours → £1,409.20; childless couple 16 + 16 hours → £520;
      • Income Support → all £1,040; child aged 17's earnings → 0; 2020 → £2,189.20 (£5 + £37.10);
      • model limitation: disabled single person working 20 hours → £1,149.20 (£5 + £17.10). The law gives £1,929.20 (£20 + £17.10): 213 Sch 4 para 3(2), "This paragraph applies where the claimant's applicable amount includes an amount by way of the disability premium". The £20 disregards are out of scope here and tracked as a follow-up;
      • a non-earning lone parent with an 18-year-old qualifying young person who earns £8,000 on 16 hours → net earnings 0 and disregard 0, as the law gives (213 regs 19(1) and 25(3)). This was a pinned limitation of the old is_adult proxy until Replace generic child and adult flags with each programme's legal definitions #1896 merged.
    • applicable_income/housing_benefit_net_earnings.yaml (11):
      • below thresholds; half of £400 pension contributions;
      • £20,000 → £17,919.60 (tax £1,486, NI £594.40);
      • pensioner with State Pension £15,000 + earnings £1,000 → £957.13 (tax £686 × 1/16);
      • self-employment loss not offset; couple added;
      • a £25,000 self-employment loss against £20,000 of employment → £17,919.60 (all the tax attributed to earnings);
      • a property loss → half the tax attributed (£9,257), not two-thirds;
      • SMP £8,000 → £8,000 and a lone parent's £1,300; SSP at 70 → £2,000 and £260;
      • SMP £20,000 + employment £10,000 + pension £10,000 → 3/4 of the £5,486 of tax attributed: £24,491.10.
    • applicable_income/meets_housing_benefit_additional_earnings_disregard_conditions.yaml (10): each route and its boundary, including "the 25-year-old must be the 30-hour worker" and "the disabled partner must be the one working".
    • housing_benefit_earnings_disregards.yaml (3 end-to-end; cases A, B and C above):
      • All are council tenants with Guarantee Credit £0, so the LHA-order and Guarantee Credit passport fixes cannot change them.
      • A and B (aged 72) set housing_benefit_applicable_amount to £13,312 (£256 × 52) as an input, the rate for a claimant who reached pensionable age before 1 April 2021. So they test the disregard independently of the allowance, which Split pension-age Housing Benefit allowances by when State Pension age was attained #1913 splits by that date.
      • C sets guarantee_credit: 0 as an input. It is working age, but the model computes £2,376 of Guarantee Credit for it, so the input keeps any form of the passport out.
      • C asserts housing_benefit_entitlement, not housing_benefit. Abolish working-age Housing Benefit from 1 July 2026 (NI 1 October 2026) #1910 multiplies the entitlement by the share of 2026 before working-age HB is abolished, in housing_benefit_pre_benefit_cap, and leaves the entitlement unchanged.
  • On this branch at 008d2d3:
    • the HB, all DWP and the CTR YAML directories: 415 passed, 0 failed;
    • the property tests: 8 passed.
  • The test counts below are from earlier heads, kept for the record.
  • On origin/main at the time, all 48 then-new cases failed: 27 on values, 21 because the new variables did not exist.
  • On the branch at 68c9df2:
    • the HB, Pension Credit and uc_legacy_mutual_exclusion.yaml YAML: 161 passed, 0 failed (113 existing, all unchanged, + 48 new);
    • the property tests: 7 passed;
    • with the old exact comparison restored, the two exact-equality cases fail (£260 and £1,300) and the other 27 disregard cases pass.
  • Before the review round (the branch at 6737dd5 and 8bed988; 8bed988 changed only a documentation string):
    • the full YAML suite: 1,319 passed, 0 failed (on 6737dd5);
    • the non-microsimulation pytest suite (pytest policyengine_uk/tests -m "not microsimulation"): 325 passed, 15 skipped, 30 deselected, 0 failed. The log records no commit. The run started at 07:49 and ended at 09:17, so it began on 6737dd5 (committed 07:44), before 8bed988 (08:08).
    • CI on 8bed988 passed. CI on this head: see the checks.
  • ruff format --check is clean on every changed Python file.
  • Existing expectations changed, all because the old flat disregard came off income that is not earnings:
    • Replace generic child and adult flags with each programme's legal definitions #1896's legacy_claimant_relationships.yaml (6 cases): each claimant now has £2,000 of earnings, so the lone-parent, couple and single rates are still tested;
    • means_test_income_members.yaml (4 cases):
      • HB applicable income £9,655.42 → £9,740 (10,000 less £5 × 52);
      • the non-member-hours pair gives the claimant £10,000 of earnings and expects £260.
  • Other existing tests that touch the disregard set it as an input, have no earnings, or are consistent with the new behaviour (test_carer_support_payment.py checks hb_income == max(0, csp - disregard), which still holds with a disregard of 0).

Dataset impact (Enhanced FRS 2024-25, current weights, real runs of main vs this branch)

Current (2026-10-03): main bfc5fea against this branch at 728fb30, which contains that main. HB falls by £22.3m in 2026:

2026 main bfc5fea this PR 728fb30 change
Housing Benefit £14.219bn £14.197bn −£22.3m
HB caseload (benefit units) 1,710.9k 1,710.9k 0
wholly pension-age units £13.829bn £13.811bn −£18.2m (75.4k lose)
mixed-age units £0.206bn £0.205bn −£0.3m (0.6k lose)
working-age units £0.184bn £0.180bn −£3.8m (13.9k lose)
UC / Pension Credit / Council Tax Reduction £78.91bn / £7.13bn / £2.35bn unchanged 0
Household net income −£22.3m (= HB change)
AHC poverty, all / pensioners 18.541% / 10.737% 18.542% / 10.744% +0.001 pp / +0.006 pp

The same comparison at 156f03a against main 3c48247 (10/2) gave the same changes, to the £0.1m and 0.1k.

  • 89.9k benefit units lose. None gain, and none lose all their HB.
  • Against the main of 10/1, the change was −£21.7m (below). Two things moved it since:
  • The round-2 fixes (para 12 at any age, statutory pay, the loss-proof tax share) gave HB figures identical to the 10/1 run when that run was repeated on 97705be against main 7b9fc37.
  • The breakdown below is from the 10/1 run against 1c5b4d0 and was not recomputed for the current main.

10/1 run (main 1c5b4d0): HB fell by £21.7m in 2026, in two parts that move in opposite directions relative to the law:

  • pension-age units −£18.0m, towards the law: the flat, uprated disregard no longer comes off non-earners' pensions, and earners get the statutory £5 or £10;
  • working-age units −£3.7m, away from the law until the Sch 5 para 4 passport is added. Almost all of these families are on Income Support, income-based JSA or income-related ESA, and the law gives them maximum HB (see below).
2026 main this PR change
Housing Benefit £14.227bn £14.205bn −£21.7m
HB caseload (benefit units) 1,711.7k 1,711.7k 0
wholly pension-age units £13.843bn £13.825bn −£18.0m (towards the law)
mixed-age units £0.200bn £0.200bn 0
working-age units £0.184bn £0.181bn −£3.7m (away from the law, pending the passport)
UC / Pension Credit / Council Tax Reduction / benefit cap £79.32bn / £6.99bn / £2.35bn / £1.18bn unchanged 0
Household net income −£21.7m (= HB change)
AHC poverty, all / pensioners 18.664% / 10.814% 18.665% / 10.821% +0.001 pp / +0.006 pp

87.7k benefit units lose. None gain, and none lose all their HB. No unit can lose more than 65% of its old disregard, because the new disregard is never negative and HB tapers at 65%. The old disregard was largest for a lone parent who passed the old summed-hours test, so the bound is 0.65 × (£35.12 + £52.11) × 52 = £2,948.37 a year. Case D above, a single worker aged 24, loses £1,829.76. A lone parent without earnings, on the taper, loses the whole old flat disregard: 0.65 × £1,826.02 (the uprated £25, unrounded, × 52) = £1,186.91. Working-age losers of this kind are almost all on Income Support, income-based JSA or income-related ESA, so the law gives them maximum HB (see below).

HB recipients, 2026 recipients Guarantee Credit passport changed HB change mean change
pension-age, no earnings 1,661.3k 1,519.6k 71.6k −£17.75m −£247.78
pension-age, with earnings 3.1k 0 2.8k −£0.26m −£93.54
mixed-age (none have earnings) 19.3k 19.3k 0 0
working-age, no earnings 27.4k 0 13.3k −£3.66m −£275.64
working-age, with earnings 0.6k 0 0 0

Who moves, and why:

  • Most recipients do not move. 1,539k of the 1,712k have their applicable income zeroed by the Guarantee Credit passport. Many others are below their applicable amount, so they get maximum HB either way.
  • The £21.4m that non-earners lose is the old disregard (£365.20 a year single, £730.41 couple, £1,826.02 lone parent) no longer coming off their pensions and benefits. On the taper that costs 65% of it (0.65 × £365.20 = £237.38 for a single person).
    • For 73.2k of the 87.7k changed units, the HB change equals −0.65 × the change in applicable income exactly.
    • 14.1k were below their applicable amount on main and cross onto the taper.
  • The working-age losers are passported to maximum HB in law.
    • 13.26k of the 13.28k working-age losers (−£3.64m of −£3.66m) receive Income Support, income-based JSA or income-related ESA. So do 22.4k of the 28.0k working-age HB recipients.
    • SI 2006/213 Sch 5 para 4 disregards, among "Sums to be disregarded in the calculation of income other than earnings": "Where a claimant is on universal credit, income support, an income-based jobseeker's allowance or an income-related employment and support allowance the whole of his income." With no income counted, they get maximum HB in law, on main and on this branch.
    • The model has no such passport and counts IS, JSA and ESA as income. The flat disregard this PR removes was partly offsetting that error. So this PR moves these families' modelled HB £3.64m further below the law's value until the passport is added (see Not in this PR).
    • The other 0.02k working-age losers (−£0.02m) are not on those benefits; for them the change moves towards the law.
  • Earners. Only 3.7k HB recipients have earnings.
    • Pension-age earners lose the uprated £7.02 (now £5) or £14.05 (now £10).
    • The 0.6k working-age earners are couples with a child and one person working 16 hours. Their disregard rises to £1,409.20, but they are below their applicable amount, so HB does not move.
    • No HB recipient in 2026 has net earnings below the flat amount, the para 12 route, or a failed earnings test.
  • Income-tax attribution. 2.8k recipients have earnings and taxable income, where the attribution could matter. Two further real branch runs set housing_benefit_net_earnings to each bound: no income tax attributed to earnings, and all of each person's income tax attributed. Both give exactly the same HB for every record (0 records differ), so the proportional attribution does not affect the 2026 results.

Caveats:

  • The current weights were calibrated to an HB total under the old code, so a policyengine-uk-data rebuild will move these numbers.
  • This is measured against main alone. Fix 1 (Guarantee Credit passport keyed on receipt) makes more pensioners' applicable income positive, and those without earnings would then also lose the old disregard. After fix 3 (LHA cap before the taper), 1.2k units currently held at the LHA cap become sensitive to applicable income. No combined run is included.
  • Diagnostics in the research folder:
    • impact/diag_disregard.py and impact/diag_disregard_2026.json: the breakdown above;
    • impact/diag_disregard_final.py and impact/diag_disregard_final_2026.json: the IS/JSA/ESA split and the largest loss.
  • The dataset run was repeated on the final code (impact/disregard-final*). Every per-unit and per-person array and every total is identical to the first run, so the change to the earnings-test comparison moves no record.

Not in this PR

  • New law from 5 October 2026: HB Sch 4 para 18 (SI 2026/753, reg 2(4) as substituted by SI 2026/978 reg 2(2)).

    • Where the claimant "is resident in accommodation specified in paragraph 3A or paragraph 3B of Schedule 1 to the Universal Credit Regulations 2013" and the claimant or partner is an earner, it disregards:
      • £61.41 (single or lone parent under 25), £77.73 (25 or over);
      • for a couple, £97.33 (both under 18), £61.53 (either 18 or over, both under 25), £119.70 (either 25 or over).
    • It also adds "and 18" to para 17(3)(a).
    • The model has no input for that accommodation, so this is not modelled. It is queued as its own change.
  • NI on statutory paternity pay. The model charges Class 1 NI on SPP, and net earnings deduct all of a person's Class 1 NI, though SPP is not counted as HB income or earnings. This is a minor over-deduction for SPP recipients.

  • The £20 disregards (213 Sch 4 paras 3, 5, 6, 8 and 9; 214 paras 1 and 3 to 5): disability, carers and part-time firefighters, coastguards, lifeboat crew and reserve forces.

    • Disability and carers are feasible: disability_premium > 0 and carer_premium > 0 exist for working age (213 paras 3(2) and 5(1)), and is_disabled_for_benefits (or attendance_allowance > 0) can stand in for 214 para 5(1). The occupations are not observable.
    • 214 para 1 caps the total at £20 (£25 for a lone parent), and 214 para 7 withholds the £5/£10 from anyone who gets a £20 disregard.
    • Until then, disabled people and carers with earnings get £5 or £10 instead of £20. The YAML pins this for a disabled single worker as an intended limitation: £5 + £17.10 where the law gives £20 + £17.10 (213 Sch 4 para 3(2)).
  • Exempt (permitted) work (213 Sch 4 para 10A; 214 Sch 4 para 5A). Where the claimant or partner receives contributory ESA, incapacity benefit or severe disablement allowance (or is credited with earnings for incapacity) and the Secretary of State "is satisfied that that person is undertaking exempt work", "the specified amount" is disregarded: the amount named in the ESA or incapacity provision that makes the work exempt (para 10A(7); para 5A(7)). Under 213 para 10A(2), "paragraphs 3 to 10 do not apply"; under 214 para 5A(2), "paragraphs 1 to 5 and 7 do not apply". A lone parent keeps £25 where the specified amount is less. Not modelled.

  • Childcare charges. housing_benefit_applicable_income_childcare_element has three problems:

    • It is subtracted from total income. The law deducts it "from any earnings" (213 reg 27(1)(c); 214 reg 30(1)(c)), or from earnings plus the WTC or CTC, where reg 27(2) / 30(2) applies.
    • It has no work test. 213 reg 28(1) and 214 reg 31(1) require a lone parent in remunerative work, or a couple both working (or one working and the other incapacitated, in hospital or in prison).
    • Its weekly maxima are the WTC childcare_1/childcare_2 parameters uprated by CPI (£322.67 and £553.14 in 2026), where reg 27(3) and 214 reg 30(3) fix £175 and £300.
    • The new earnings test uses this same variable, so it tests against the charges the model actually deducts.
  • Income tax. The model deducts every member's income tax from HB income.

    • Tax on income that HB counts is disregarded in law (213 Sch 5 para 1; 214 reg 33(12): "there shall be disregarded any amount payable by way of tax"), so that part matches.
    • Tax on savings interest and dividends is also deducted, although HB does not count that income (it uses tariff income from capital). That over-deducts for claimants with taxable savings or dividend income.
  • Children's earnings still count in housing_benefit_applicable_income, although 213 reg 25(3) and Sch 4 para 15 and 214 reg 23(3) exclude them. The new net earnings and the disregard count only the claimant's and partner's earnings. In the 10/1 run no HB unit had a child with earnings, and none (to the nearest 0.01k) had an 18- or 19-year-old young person with earnings.

  • Child Benefit counts as HB income, although 213 Sch 5 para 65 disregards "Any payment of child benefit" and 214 reg 29(1)(j)(vi) excludes it (case E above includes £1,406.60 of it).

  • The working-age income passport (follow-up: Disregard the whole income and capital of HB claimants on IS, income-based JSA or income-related ESA (HB Regs Sch 5 para 4, Sch 6 para 5) #1993). 213 Sch 5 para 4 disregards "the whole of his income" for a claimant on UC, IS, income-based JSA or income-related ESA. The model counts IS, JSA and ESA as income and has no such passport; this PR implements only the earnings part (Sch 4 para 12). The passport would raise these families' HB, the opposite direction to this PR's effect on them (its size is not measured here). Until it is added, this PR moves 13.26k working-age families on those benefits £3.64m a year further below the law (see Dataset impact). It is being filed as a follow-up.

  • 213 Sch 5 para 56 / 214 Sch 5 para 21 disregard Working Tax Credit up to £17.10 where a para 17(2) condition is met but the earnings test is not. No tax credit can be claimed for 2025-26 onwards (SI 2014/1230 reg 6A(9)), so this matters only for earlier years, and it is not modelled.

  • The work-related activity group and the support component (213 para 17(2)(b)(iv)-(v)) are not modelled.

  • income_support_applicable_income applies its own flat disregards to all income, in the same way this PR fixes for HB. It was not checked against the IS Regulations.

  • The 0.5 pension-contribution factor in housing_benefit_applicable_income could use the new parameter. It is left alone to keep this PR out of that file.

  • The Housing Benefit docs page does not describe the disregards, so it is unchanged.

#1896 merged (3525263) and is merged into this branch (156f03a).

axiom: SI 2006/213 Sch 4 and SI 2006/214 Sch 4 — TheAxiomFoundation/rulespec-uk#375 queued

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits September 30, 2026 07:44
housing_benefit_applicable_income_disregard gave every single person, couple
and lone parent £5, £10 or £25 a week, and housing_benefit_applicable_income
took it off total income, so pensioners with only a State Pension had £5 a
week of it disregarded. The amounts were uprated with CPI (£5 became £7.02 a
week in 2026). The additional earnings disregard was £37.10, also uprated,
and went to anyone whose benefit unit's summed hours exceeded 30 (16 for lone
parents).

SI 2006/213 Sch 4 and SI 2006/214 Sch 4 (NI: SR 2006/405 and SR 2006/406
Sch 5) are "sums to be disregarded in the calculation of earnings". The
disregards are now taken from the claimant's and partner's net earnings
(housing_benefit_net_earnings: earnings less income tax, National Insurance
and half of pension contributions, regs 36 and 38/39) and capped at them.
The £5, £10 and £25 amounts have not changed since 2006 and are no longer
uprated. The additional earnings disregard is £17.10 (£37.10 from 6 April
2020 to 4 April 2021 under SI 2020/371 reg 5), and it needs one of the work
conditions in para 17(2) / 9(2) (one person aged at least 25 working at
least 30 hours; 16 hours for lone parents, couples with a child and disabled
workers) and net earnings at least equal to the other disregards, the
childcare charges deducted and £17.10. A working-age claimant on Income
Support, income-based JSA or income-related ESA has all earnings disregarded
(SI 2006/213 Sch 4 para 12).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The work-conditions variable said paragraph 17(2)(a) and 9(2)(a) need
Working Tax Credit entitlement, which requires one of the modelled
conditions. WTC Regs reg 4 also entitles a couple through a partner aged 60
working 16 hours, and its disability test differs from the disability
premium's, so the route adds two narrow cases. Neither is modelled, and no
tax credit can be claimed for 2025-26 onwards (SI 2014/1230 reg 6A(9)).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Para 17(1) and 9(1) add £17.10 where net earnings "equal or exceed" the
other disregards, the childcare charges and £17.10. Net earnings are
float32, so exactly £1,149.20 (£5 + £17.10 a week) was held as £1,149.19995
and failed the test. The comparison is now in pence, and new cases pin
£1,149.20 (single, 30 hours) and £2,189.20 (lone parent, 16 hours) as
granted and a penny below each as not.

The end-to-end pension-age cases are aged 72 and set the applicable amount
(£256 x 52) as an input. SI 2006/214 Sch 3 para 1(1) gives £256 only to a
claimant who reached pensionable age before 1 April 2021, and £238 to one
who reached it later; #1913 models that split. The working-age case asserts
housing_benefit_entitlement, which #1910's 2026 abolition scaling does not
change.

The disabled-worker case is labelled as a model limitation: the disability
premium also brings in Sch 4 para 3's £20 in place of £5, which is not
modelled. A new case pins the is_adult proxy counting an 18-year-old young
person's earnings and hours (the law excludes them) until #1896 replaces
it. The net earnings documentation names the provisions that set the tax
deducted (213 regs 36(3) and 39(1); 214 regs 36(2) and 40(1)), calls the
proportional attribution a lower bound for employees, and says what the
proxy counts. The changelog fragment is a bullet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Reviewed: approve with nits (the one Should fix is a description edit).

The disregards are now taken from net earnings and capped by them, with the correct non-uprated amounts and the correct £17.10 conditions. This fixes #1794.

  1. Should fix (description). The "largest loss" bullet describes a single survey record. Replace it with aggregates.
  2. Nit housing_benefit_applicable_income_disregard.py:58-65. Sch 4 para 12 is implemented, but its partner rule SI 2006/213 Sch 5 para 4 is not: "the whole of his income" is disregarded on IS/JSA(IB)/ESA(IR). That gap already exists on main, but this PR moves about 13k working-age units £3.6m further from the law. File the follow-up and link it before merging. After Abolish working-age Housing Benefit from 1 July 2026 (NI 1 October 2026) #1910 it only affects years up to 2026-27.
  3. Nit worker.yaml:3. The series starts at 2010-04-01. Add the 2006–09 values from the description (£14.50, £15.45, £16.05, £16.85).
  4. Nit. Two YAML cases pin values the PR knows are wrong (the disabled worker's £20, and the 18-year-old young person). Label them # KNOWN LIMITATION: law gives X.

Verified: I read on legislation.gov.uk SI 2006/213 reg 36(3), Sch 4 paras 4, 10 and 17 and Sch 5 para 4; SI 2006/214 Sch 4 paras 1, 2, 7 and 9; and SI 2020/371 reg 5 (£37.10 from 6 April 2020 to 4 April 2021). The 30 hours, age 25 and "equal or exceed" wording matches. In a fresh environment the new YAML passed 48/48 and the property tests passed 7/7. CI: all 6 checks pass.

…imitations

The £17.10 series started in 2010. Add the earlier sums from the
point-in-time texts of SI 2006/213 Sch 4 para 17 and SI 2006/214 Sch 4
para 9: £14.50 as made, then £15.45, £16.05 and £16.85 from 1 April 2007,
2008 and 2009 (SI 2007/688, 2008/632, 2009/497), with the orders cited.

Mark the two YAML cases that pin known model limitations with the value
the law gives.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Thanks, Vahid. All four points are handled:

  1. Largest-loss bullet: replaced with the generic arithmetic (the whole old lone-parent disregard, tapered). There is no single-record description now. Deleting the old revisions is queued for Max.
  2. Sch 5 para 4: filed as Disregard the whole income and capital of HB claimants on IS, income-based JSA or income-related ESA (HB Regs Sch 5 para 4, Sch 6 para 5) #1993 and linked from "Not in this PR", with the split showing −£3.7m away from the law for IS/JSA/ESA families.
  3. worker.yaml: now runs from 2006 using the point-in-time texts. The values are £14.50 as made, then £15.45, £16.05 and £16.85 from 1 April 2007, 2008 and 2009, then £17.10 from 1 April 2010 (SI 2007/688, 2008/632, 2009/497, 2010/793), plus the SI 2020/371 £37.10 window.
  4. Known limitations: both cases are labelled KNOWN LIMITATION:, with the value the law gives (£1,929.20 and 0).

An independent round-2 review is running.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Cross-reference from #2000 (fixes #1993, the SI 2006/213 Sch 5 para 4 / Sch 6 para 5 passport).

🤖 Generated with Claude Code

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Main merged in, and the parameter values re-checked against the law (2026-10-02).

  • Merged origin/main (7b9fc37, 30 commits since the old base 1c5b4d0) at 38a528c. The merge was textually clean. Main's HB changes are the person-level capital sources only; none touches the disregard.

  • Targeted tests on 38a528c:

    • HB YAML directory: 110 passed;
    • Pension Credit, uc_legacy_mutual_exclusion.yaml and CTR YAML: 108 passed.
    • CI on this head runs the full suite and the property tests.
  • Independent re-check of every dated value, from legislation.gov.uk CLML point-in-time texts of SI 2006/213 and SI 2006/214 Sch 4 at 2006-03-06, 2007-04-02, 2008-04-07, 2009-04-06, 2010-04-12, 2020-04-06, 2020-10-01, 2021-04-05, 2025-04-07 and 2026-04-06:

    • £5, £10 and £25 read the same in every version;
    • the additional sum reads £14.50, £15.45, £16.05, £16.85 and then £17.10;
    • SI 2020/371 reg 5 reads £37.10 for £17.10 in both instruments, and "takes effect on 6th April 2020 and ceases to have effect at the end of 4th April 2021";
    • the Social Security Benefits Up-rating Order 2026 (SI 2026/148) arts 23 and 24 say "£17.10" "remains unchanged".

    That matches single.yaml, couple.yaml, lone_parent.yaml and worker.yaml here.

  • The CTR counterpart is Apply the pensioner Council Tax Reduction earnings disregards (England, Wales, Scotland) #2033, stacked on this PR. Pension-age Council Tax Reduction in England, Wales and Scotland disregarded no earnings; Apply the pensioner Council Tax Reduction earnings disregards (England, Wales, Scotland) #2033 reuses this PR's net earnings and work-condition variables.

  • The round-2 independent review job was lost to a usage limit on 10/1. It has been re-run on Subfleet against 38a528c.

MaxGhenis and others added 2 commits October 2, 2026 04:44
From the round-2 review:
- Para 12 has no age condition: SI 2006/213 applies to a claimant over
  the qualifying age whose partner is on IS, income-based JSA or
  income-related ESA (reg 5(1)(b); SI 2006/214 reg 5(2)).
- Statutory sick and maternity pay are earnings (SI 2006/213 reg
  35(1)(i); SI 2006/214 reg 35(1)(h)).
- Income tax is attributed by the earnings' share of income before
  employment and self-employment losses, so a loss set against other
  income no longer drops the tax on the earnings.
- The additional sum was £14.90 from April 2006 (SI 2006/645; SI
  2007/688 arts 19(9) and 20(9) replace "£14.90").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#1896 made is_claimant_or_partner the claimant-and-partner variable, so:
- housing_benefit_net_earnings and the additional-disregard conditions
  read is_claimant_or_partner (and the legacy child-or-young-person
  definition for "family includes a child") in place of the is_adult
  proxy. An 18-year-old qualifying young person's earnings and hours no
  longer count, as SI 2006/213 regs 19(1) and 25(3) require; that YAML
  case now expects the law's 0.
- #1896's legacy_claimant_relationships cases asserted the old flat
  disregard with no earnings; each claimant now has £2,000 of earnings so
  the cases still test the lone-parent/couple/single rate.

Also, from the round-3 review notes: the model taxes statutory sick and
maternity pay as employment income (employment_benefits) but leaves them
out of total_income, so they now enter both sides of the income tax
share, and the "does not tax statutory pay" comments are corrected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 4 commits October 2, 2026 23:01
- means_test_income_members.yaml (new on main) expected the old uprated
  flat disregard (£344.58 in 2024), which SI 2006/213 Sch 4 gives only
  against earnings: the claimant-alone pair now expects 10,000 - £5 x 52
  = 9,740, and the non-member-hours pair gives the claimant £10,000 of
  earnings so £260 (not £1,149.20) still shows the 19-year-old's hours
  do not count.
- The income tax share adds back every negative total_income component
  (read from total_income's own adds), so a property or other loss can
  no longer inflate it; a YAML case pins it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 3, 2026
HB(SPC) Sch 3 para 6 has the working-age premium's conditions and para
12 its amounts, so the pension-age premium is severe_disability_premium
for a family over State Pension age. A Pension Credit reform no longer
moves pension-age HB or CTR. The schedule property keeps the Pension
Credit addition as a cross-check. References add the CTR nomination
rule and the other premium schedules; the conditions YAML notes the
three income-rule defects its awards include (#1908, #2112, #2007).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

#2000 merged into main on 2026-10-03 (0eccaaa). Main now has in_receipt_of_income_support_jsa_ib_or_esa_ir. As the cross-reference above suggests, this PR's para 12 branch could use it in place of add(IS, JSA, ESA) > 0 & ~pension_age. SI 2006/213 reg 5(1)(b) puts a mixed-age couple on these benefits under the working-age regulations. The change would affect only the reported disregard: Housing Benefit is unchanged, because #2000 already zeroes applicable income for these families.

@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Merging on gates (2026-10-03).

  • Head: 031eea1.
  • CI: 6/6 checks pass on that head (Test 22m52s on the Linux workflow); gh pr checks exits 0; MERGEABLE, clean.
  • Independent reviews:
    • Round 1 (Opus): changes requested, fixed.
    • Vahid Ahmadi: approve with nits, fixed.
    • Round 2 (Opus): five minors, fixed in 97705be.
    • Round 3 (GPT-6.1 Sol, job 20261003-101158-pr1908-r3d): APPROVE of this head, no blocker or major. It re-ran 431 targeted tests (HB YAML 143, DWP YAML 200, CTR YAML 72, HB properties 8, Carer Support Payment 5, Pension Credit carer properties 3) with 0 failed, and confirmed the law quotes, the YAML arithmetic, the impact table and the privacy check.
  • Impact (real Enhanced FRS runs, main bfc5fea against this branch): Housing Benefit −£22.3m in 2026; 89.9k benefit units lose, none gain.
  • Why no separate approval: this corrects the model to SI 2006/213 and SI 2006/214 Schedule 4, which fix these sums, so it merges on gates.
  • Follow-ups:

@MaxGhenis
MaxGhenis merged commit ae7d805 into main Oct 3, 2026
6 checks passed
@MaxGhenis
MaxGhenis deleted the hb-earnings-disregards branch October 3, 2026 18:28
MaxGhenis added a commit that referenced this pull request Oct 3, 2026
Main's #1908 takes the Housing Benefit earnings disregards from net
earnings only, so State Pension income is no longer reduced by them.
The six final awards here fall by 65% of the old disregard; the premium
and applicable-amount assertions are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 3, 2026
Main's #1908 no longer deducts earnings disregards from State Pension
income, so the case's HB income is 16,914 (18,000 less 20% tax above the
personal allowance), still below the applicable amount. The expected
award is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 3, 2026
… household

Main's new Pension Credit carer-income and England CTR tests use pensioners
aged 70 in 2026, who reached State Pension age after 1 April 2021 and so get
the lower allowance under this PR. Their arithmetic assumes the higher rate,
so they now use pensioners aged 72 (State Pension age reached in 2019).

The reported household's £47.68 relied on a £365.20 income disregard that
main's Housing Benefit earnings-disregard fix (#1908) removed: with no
earnings there is no disregard. Its HB at the lower rate is now nil; a
council-tenant case with £12,000 rent shows the 608.40 gap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Housing Benefit earnings disregard stacks the base disregard on top of the worker disregard (over-disregard vs SI 2006/213 Sch 4)

2 participants